const { login, signup, otpVarify, getUserInfo, updateLanguage, emailVerify, verify, forgotPassword, resendOtp, updatePassword, userInfo, changePassword, changeSecretQuestion, getData, signupOTPVerification, categoryListing, loginOTPVerification, checkPasswordLinkExpire, forgotPasswordOTPVerification, languageListing, existingUser, userProfileInformation, expiredOtpByUserId, deleteMyAccount } = require('../controllers/web/auth.controller')
const validateRequest = require('../core/middlewares/validateRequest')
const { loginJoiSchema, patientSignupJoiSchema, emailVerifyJoiSchema, ForgotPasswordJoiSchema, userInfoJoiSchema, ChangePasswordJoiSchema, ChangeSecretQuestionJoiSchema } = require('../core/validations/auth.validations')
const { fetchCms } = require('../controllers/web/cms.controller')
const { logoutUser } = require('../controllers/common/logout.controller')
const fileUpload = require('../core/middlewares/fileUpload')
const { uploadFile } = require('../controllers/common/file-upload.controller')
// fetch settings
const { blogListing, magazineListing, blogListingById, magazineListingById, MagazineCategoryList, faqListing, departmentCityListing, departmentWaliyaListing, allDoctorHospitalByNameListing, getTranslateLanguage, appointmentCount,contactUs , contactDetails, contactListing, contactListingCount, magazineListingCount } = require('../controllers/web/front.controller')
const { createTicket, fetchTicketDetails, fetchTicketList, addCommentToTicket, setTicketStatus } = require("../controllers/common/tickets.controller");
const { addEditMedicine, medicineList, addMultipleMedicines, deleteMedicine, toggleMedicineStatus } = require("../controllers/common/medicine.controller");

// Routes =============================================================
module.exports = router => {
    // POST route to mock a login  endpoint
    router.post("/api/auth/login", login)
    router.post("/api/auth/signup", signup)
    router.post("/api/auth/logout", logoutUser)
    router.post("/api/auth/existing-user", existingUser)
    router.post("/api/auth/user-profile-info", userProfileInformation)
    router.post("/api/auth/save-lang", updateLanguage)
    router.post("/api/auth/signup-otp-verification", signupOTPVerification)
    router.post("/api/auth/login-otp-verification",/*[validateRequest(loginOtpVerifyJoiSchema)],*/loginOTPVerification)
    router.post("/api/auth/forgot-password-otp-verification",/*[validateRequest(loginOtpVerifyJoiSchema)],*/forgotPasswordOTPVerification)
    router.get("/api/category-listing/:lang", categoryListing)
    router.get("/api/cms/fetch-cms/:lang", /**[validateRequest(fetchedSetting)], validToken,**/ fetchCms)
    // router.get("/api/auth/get-data", getData) 
    // router.post("/api/auth/otpVarify", otpVarify)  
    // router.post("/api/auth/verifyEmail",[validateRequest(emailVerifyJoiSchema)], emailVerify)  
    router.get("/api/auth/account-verify/:userid/:token", verify)
    router.post("/api/auth/forgot-password", forgotPassword)
    router.post("/api/auth/reset-password", updatePassword)
    router.post("/api/auth/check-password-link-expire",/*[validateRequest(authCheckPasswordLinkExpireJoiSchema)],*/ checkPasswordLinkExpire)
    router.post("/api/auth/resend-otp", resendOtp)
    router.get("/api/auth/language-listing", languageListing)
    // router.post("/api/auth/userInformation",[validateRequest(userInfoJoiSchema)], userInfo)  
    router.post("/api/auth/change-password",/**[validateRequest(ChangePasswordJoiSchema)], **/ changePassword)
    // router.post("/api/auth/changeSecretQuestion",[validateRequest(ChangeSecretQuestionJoiSchema)], changeSecretQuestion)  

    // fetch settings and secret questions

    // User logout for removed token


    router.post("/api/auth/delete-my-account", deleteMyAccount)


    // appointmrnt count

    router.post("/api/appointment/status-based-count", appointmentCount)
    // front page
    router.get("/api/front/blog-listing", blogListing)
    router.get("/api/front/magazine-listing", magazineListing)
    router.get("/api/front/magazine-listing-count", magazineListingCount)
    router.post("/api/front/blog-listing-byId", blogListingById)
    router.post("/api/front/magazine-listing-byId", magazineListingById)
    router.get("/api/front/magazine-category-listing", MagazineCategoryList)
    router.post("/api/front/faq-listing", faqListing)


    // department city listing

    router.post("/api/front/department-city-listing-by-countrycode", departmentCityListing)
    router.post("/api/front/department-waliya-code-listing", departmentWaliyaListing)

    router.post("/api/front/all-doctor-hospital-by-name", allDoctorHospitalByNameListing)


    router.post("/api/auth/expired-otp-by-user-id", expiredOtpByUserId)

    router.get("/api/front/get-translate-language", getTranslateLanguage)

    router.get("/api/user/info/:id", getUserInfo);


    // Ticket system apis 

    router.post("/api/ticket/create", createTicket);
    router.post("/api/ticket/set-status", setTicketStatus);
    router.post("/api/ticket/add-comment", addCommentToTicket);
    router.get("/api/ticket/detail/:ticket_id", fetchTicketDetails);
    router.post("/api/ticket/list", fetchTicketList);

    // Medicine apis

    router.post("/api/medicine/add-multiple", addMultipleMedicines);
    router.post("/api/medicine/edit", addEditMedicine);
    router.post("/api/medicine/list", medicineList);
    router.post("/api/medicine/add", addEditMedicine);
    router.post("/api/medicine/toggle-status", toggleMedicineStatus);
    router.delete("/api/medicine/delete/:id", deleteMedicine);

    router.post("/api/contact-request", contactUs)
    router.post("/api/contact-request/listing", contactListing)
    router.post("/api/contact-request/counts", contactListingCount)
    router.get("/api/contact-request/detail/:ticketId", contactDetails)

}