import { removeTokenHead } from "@/helper";
import api from "./api";

export const request = {
  sendCode: (mobile, captcha_token) =>
    api.post(
      "api/v1/user/send-code",
      {
        mobile,
        captcha_token,
      },
      removeTokenHead
    ),
  getToken: (grant_type, client_id, client_secret, uuid, code) => {
    const formData = new URLSearchParams();
    formData.append("grant_type", grant_type);
    formData.append("client_id", client_id);
    formData.append("client_secret", client_secret);
    formData.append("uuid", uuid);
    formData.append("code", code);

    return api.post("oauth/token", formData, {
      headers: {
        "Content-Type": "application/x-www-form-urlencoded",
        Authorization: "",
      },
    });
  },
  postRefreshToken: (formData) => {
    return api.post("oauth/token", formData, {
      headers: {
        "Content-Type": "application/x-www-form-urlencoded",
        Authorization: "",
      },
    });
  },
  getUserProfile: (uuid) => api.get(`/api/v1/user-profile/${uuid}`),
  postUserProfile: (data) => api.post("api/v1/user-profile", data),
  patchUserProfile: (data, uuid, token) =>
    api.patch(
      `api/v1/user-profile/${uuid}`,
      data,
      token && {
        headers: {
          Authorization: `Bearer ${token}`,
        },
      }
    ),
  getUserInfo: (headers) => api.get("oauth/userinfo", headers),
  getInsuranceType: () =>
    api.get("api/v1/categorys/insurance_type", removeTokenHead),
  getDoctors: (params) =>
    api.get("api/v1/doctors", {
      params,
      headers: {
        Authorization: "",
      },
    }),
  getAppointmentNotAvailable: (doctor_id) =>
    api.get(`api/v1/appointment/not-available/${doctor_id}`, removeTokenHead),
  getAppointmentWeeklySchedule: (uuid) =>
    api.get(`api/v1/appointment-settings/weekly-schedule/${uuid}`),
  postAppointmentWeeklySchedule: () =>
    api.post("api/v1/appointment-settings/weekly-schedule/"),
  patchAppointmentWeeklySchedule: (uuid) =>
    api.patch(`api/v1/appointment-settings/weekly-schedule/${uuid}`),
  deleteAppointmentWeeklySchedule: (uuid) =>
    api.delete(`api/v1/appointment-settings/weekly-schedule/${uuid}`),
  getAppointment: (doctor_id, date) =>
    api.get(
      `api/v1/appointment-slots?doctor_id=${doctor_id}&date=${date}`,
      removeTokenHead
    ),
  postAppointment: (data) => api.post(`api/v1/appointment`, data),
  postDoctor: (data) => api.post("api/v1/doctor", data),
  postImageUpload: (data) =>
    api.post("file/upload/clinic_pro/doctor/field_image", data, {
      headers: {
        "Content-Type": "application/octet-stream",
        "Content-Disposition": `file; filename="${data.name}"`,
        "X-CSRF-Token": "",
      },
    }),
  getDoctorServices: () =>
    api.get("api/v1/categorys/doctor_services", removeTokenHead),
  postDoctorComment: (data) => api.post("api/v1/clinicpro/comment", data),
  getDoctorRate: (uuid) => api.get(`api/v1/clinicpro/rate/${uuid}`),
  postDoctorRate: (data) => api.post("api/v1/clinicpro/rate", data),
  patchDoctorRate: (data, uuid) =>
    api.patch(`api/v1/clinicpro/rate/${uuid}`, data),
  postCommentsLike: (data) => api.post("/api/v1/clinicpro/like", data),
  getClinicList: (params) =>
    api.get("/api/v1/clinics", {
      params,
      headers: {
        Authorization: "",
      },
    }),
};
