import { Request, Response } from "express";
import { sendSuccess, sendPaginated } from "../../common/utils/api-response";
import * as serviceService from "./service.service";

export async function createService(req: Request, res: Response) {
  const result = await serviceService.createService(req.user!.id, req.body);
  sendSuccess(res, result, 201);
}

export async function getAllServices(req: Request, res: Response) {
  const page = Math.max(1, parseInt(String(req.query.page ?? "1")));
  const limit = Math.min(
    100,
    Math.max(1, parseInt(String(req.query.limit ?? "10")))
  );
  const search = req.query.search ? String(req.query.search) : undefined;
  const category = req.query.category ? String(req.query.category) : undefined;
  const { data, total } = await serviceService.getAllServices(
    req.user!.id,
    page,
    limit,
    search,
    category
  );
  sendPaginated(res, data, total, page, limit);
}

export async function getService(req: Request, res: Response) {
  console.log("getService");
  console.log(req.params);
  const result = await serviceService.getService(
    req.user!.id,
    req.params.serviceId
  );
  sendSuccess(res, result);
}

export async function updateService(req: Request, res: Response) {
  const result = await serviceService.updateService(
    req.user!.id,
    req.params.serviceId,
    req.body
  );
  sendSuccess(res, result);
}

export async function deleteService(req: Request, res: Response) {
  const result = await serviceService.deleteService(
    req.user!.id,
    req.params.serviceId
  );
  sendSuccess(res, result);
}

export async function getServicesForClient(req: Request, res: Response) {
  console.log(req.originalUrl);
  console.log("reached services for client", req.user);
  const result = await serviceService.getServicesForClient(req.user!.id);
  sendSuccess(res, result);
}

export async function getServiceForClient(req: Request, res: Response) {
  const result = await serviceService.getServiceForClient(
    req.user!.id,
    req.params.serviceId
  );
  sendSuccess(res, result);
}
