
const { login, forgotPassword, updatePassword, adminInfo, updateAdmin, changePassword,  } = require('../controllers/admin/auth.controller')
const {categoryListing,addCategory,changeCategoryStatus,deleteCategory,deleteSelectedCategory } = require('../controllers/admin/category.controller')
const { AddAdminJoiSchema, EditAdminJoiSchema, AdminListing, ChangeAdminStatus, DeleteAdmin, multipleDeletedAdmin, loginJoiSchema, ChangeUserStatus, UpdateAdmin, DeactivateUserListing, ChangePassword, ForgotPasswordJoiSchema, UpdatePasswordJoiSchema, InfoJoiSchema, ChangeUserAccountStatus } = require('../core/validations/admin.validations')
const { adminAdd, adminListing, changeSpaceStatus, changeAdminStatus, deleteAdmin, deleteSelectedAdmin ,  getAdminPermissions, updateAdminPermissions,allAdminListing } = require('../controllers/admin/admin.controller')
const { logoutAdmin } = require('../controllers/common/logout.controller')
const { faqListing, faqAdd, deleteFAQ, deleteSelectedFAQ, changeFAQStatus } = require('../controllers/admin/faq.controller')
const { addEditBlog, blogListing, deleteBlog, deleteSelectedBlog, updateBlogById, changeBlogStatus, listingBlogById } = require("../controllers/admin/blog.controller")
const {usersListing,childUsersListing,guardianPatientListing, deleteUser, deleteSelectedUser, changeDoctorPatientStatus, changeUserAccountStatus,paymentDetails,getPaymentDetails ,editProfile, userSignup} = require('../controllers/admin/user.controller')

const { addEditMagazine, magazineListing, deleteMagazine, deleteSelectedMagazine, updateMagazineById, changeMagazineStatus, listingMagazineById,MagazineCategoryList } = require("../controllers/admin/magazine.controller")

//Language controller
const {lanuageListing, addEditLanguage, changeLanguageStatus, deleteLanguage, deleteSelectedLanguage} = require('../controllers/admin/language.controller')

export { };

const { saveCms, fetchCms,deleteCms,changeCmsStatus } = require('../controllers/admin/cms.controller')
const {deleteSelectedContact,deleteContact,contactListing,updateContact, contactDetails } =require('../controllers/admin/contact.controller')
const { uploadFile } = require('../controllers/admin/aws-file-upload.controller')
const adminFileUpload = require('../core/middlewares/adminFileUpload')
const { appointmentListing, getAllDoctorHospital, getAllPatient, checkDoctorOrHospitalOrPatient} = require('../controllers/admin/appointment.controller')
const validateRequest = require('../core/middlewares/validateRequest')
const { validToken } = require('../core/middlewares/auth')
const {doctorCount,patientCount,hospitalCount,faqCount,appointmentCount,categoryCount,magazineCount,languageCount,contactUs,topTenUserListing ,topAppintmentListing,contactUsListing,appointmentDashboardCount,userCountOnMonthlyBasics,appointmentCountOnMonthlyBasics} =require('../controllers/admin/dashboard.controller')

const { setTranslateLanguageStatus ,getTranslateLanguage, addTranslateLanguage} = require("../controllers/admin/language.controller");

const {departmentCityListing , departmentWaliyaListing} = require("../controllers/web/front.controller");

// Routes =============================================================
module.exports = router => {
    // POST route to mock a login  endpoint
    router.post("/api/admin/category-listing",validToken, categoryListing)
    router.post("/api/admin/logout", logoutAdmin)
    router.post("/api/admin/upload/uploadFile", adminFileUpload, uploadFile)
    router.post("/api/admin/auth/login", [validateRequest(loginJoiSchema)], login)
    router.post("/api/admin/auth/forgot-password", [validateRequest(ForgotPasswordJoiSchema)], forgotPassword)
    router.post("/api/admin/auth/reset-password", [validateRequest(UpdatePasswordJoiSchema)], updatePassword)
    router.post("/api/admin/auth/admin-info", [validateRequest(InfoJoiSchema)],validToken, adminInfo)
    router.post("/api/admin/auth/admin-update", [validateRequest(UpdateAdmin)], validToken, updateAdmin)
    router.post("/api/admin/auth/change-password", [validateRequest(ChangePassword)], changePassword)

   
    router.post("/api/super-admin/add",  /**validToken,**/validToken, adminAdd)
    // router.post("/api/super-admin/update", [validateRequest(EditAdminJoiSchema)], adminAdd)
    router.post("/api/super-admin/listing", [validateRequest(AdminListing)],validToken, adminListing)
    router.post("/api/super-admin/change-status", [validateRequest(ChangeAdminStatus)],validToken, changeAdminStatus)
    router.post("/api/super-admin/delete", [validateRequest(DeleteAdmin)],validToken, deleteAdmin)
    router.post("/api/super-admin/multiple-delete", [validateRequest(multipleDeletedAdmin)],validToken, deleteSelectedAdmin)
    //cms
    router.post("/api/admin/cms/save-cms", /**[validateRequest(savedSettings)], validToken,**/validToken, saveCms)
    router.post("/api/admin/cms/fetch-cms", /**[validateRequest(fetchedSetting)], validToken,**/validToken, fetchCms)
    router.post("/api/admin/cms/delete",validToken, deleteCms)
    router.post("/api/admin/cms/change-status",validToken, changeCmsStatus)

    // category
    router.post("/api/admin/category/add",validToken, addCategory)
    router.post("/api/admin/category/change-status",validToken, changeCategoryStatus)
    router.post("/api/admin/category/delete",validToken, deleteCategory)
    router.post("/api/admin/category/multiple-delete",validToken, deleteSelectedCategory)

    //FAQ
    router.post("/api/admin/faq/listing", validToken, faqListing)
    router.post("/api/admin/faq/add",validToken, faqAdd)
    router.post("/api/admin/faq/edit", validToken, faqAdd)
    router.post("/api/admin/faq/delete", validToken, deleteFAQ)
    router.post("/api/admin/faq/multiple-delete", validToken, deleteSelectedFAQ)
    router.post("/api/admin/faq/change-status", validToken, changeFAQStatus)

    //user listings
    router.post("/api/admin/users/listing", validToken, usersListing);
    router.post("/api/admin/users/delete", validToken, deleteUser);
    router.post("/api/admin/users/multiple-delete", validToken, deleteSelectedUser);
    router.post("/api/admin/users/change-status", validToken, changeDoctorPatientStatus);
    router.post("/api/admin/users/change-user-account-status", validToken, changeUserAccountStatus);
    router.post("/api/admin/users/payment_details", validToken, paymentDetails);
    router.post("/api/admin/users/get_payment_details", validToken, getPaymentDetails);
    router.post("/api/admin/users/child-listing" , validToken , childUsersListing);
    router.get("/api/admin/users/guardian-list" , validToken , guardianPatientListing);
    // Language
    router.post("/api/admin/language/listing", validToken, lanuageListing);
    router.post("/api/admin/language/add-edit", validToken, addEditLanguage)
    router.post("/api/admin/language/change-status", validToken, changeLanguageStatus)
    router.post("/api/admin/language/delete", validToken, deleteLanguage)
    router.post("/api/admin/language/multiple-delete", validToken, deleteSelectedLanguage)
    
    // blog
    router.post("/api/admin/blog/add-edit",validToken,  addEditBlog)
    router.post("/api/admin/blog/listing", validToken, blogListing)
    router.post("/api/admin/blog/delete", validToken, deleteBlog)
    router.post("/api/admin/blog/update", validToken, updateBlogById)
    router.post("/api/admin/blog/change-status", validToken, changeBlogStatus)
    router.post("/api/admin/blog/listing-byId", validToken,listingBlogById)
    router.post("/api/admin/blog/multiple-delete", validToken,deleteSelectedBlog)

    // magazine

    router.post("/api/admin/magazine/add-edit",validToken,  addEditMagazine)
    router.post("/api/admin/magazine/listing",validToken,  magazineListing)
    router.post("/api/admin/magazine/delete", validToken, deleteMagazine)
    router.post("/api/admin/magazine/update", validToken, updateMagazineById)
    router.post("/api/admin/magazine/change-status", validToken, changeMagazineStatus)
    router.post("/api/admin/magazine/listing-byId", validToken,listingMagazineById)
    router.post("/api/admin/magazine/multiple-delete", validToken,deleteSelectedMagazine)
    router.get("/api/admin/magazine/category-listing",validToken, MagazineCategoryList)

     // contact us
     router.post("/api/admin/contact-request/listing", contactListing)
     router.get("/api/admin/contact-request/detail/:ticketId", contactDetails)
     router.post("/api/admin/contact-request/delete", deleteContact)
     router.post("/api/admin/contact-request/multiple-delete",  deleteSelectedContact)
     router.post("/api/admin/contact-request/update", updateContact)


     // appointment listing
     router.post("/api/admin/appointment/listing", validToken,appointmentListing)
     router.post("/api/admin/appointment/get-all-doctor-hospital",validToken, getAllDoctorHospital)
     router.post("/api/admin/appointment/get-all-patient",validToken, getAllPatient)
     router.post("/api/admin/appointment/check-doctor-or-hospital-or-patient",validToken, checkDoctorOrHospitalOrPatient)
// dashboard apis

     router.get("/api/admin/doctor-count",validToken, doctorCount)
     router.get("/api/admin/patient-count",validToken, patientCount)
     router.get("/api/admin/hospital-count",validToken, hospitalCount)
     router.get("/api/admin/appointment-count",validToken, appointmentCount)
     router.get("/api/admin/category-count",validToken, categoryCount)
     router.get("/api/admin/magazine-count",validToken, magazineCount)
     router.get("/api/admin/language-count",validToken, languageCount)
     router.get("/api/admin/faq-count", validToken,faqCount)
     router.get("/api/admin/contactUs-count",validToken, contactUs)
     router.post("/api/admin/latest-user-on-dashboard",validToken, topTenUserListing)
     router.get("/api/admin/latest-appointment",validToken, topAppintmentListing)
     router.get("/api/admin/latest-contactUs",validToken, contactUsListing)
     router.get("/api/admin/appointment-status-count",validToken, appointmentDashboardCount)
     router.post("/api/admin/user-monthly-basis-count",validToken, userCountOnMonthlyBasics)
     router.post("/api/admin/appointment-monthly-basis-count",validToken, appointmentCountOnMonthlyBasics)
     
     // Translate Language 
     router.post("/api/admin/lang/change-status" ,validToken, setTranslateLanguageStatus);
     router.post("/api/admin/lang/create" ,validToken, addTranslateLanguage);
     router.post("/api/admin/lang/fetch" ,validToken, getTranslateLanguage);
     router.post("/api/admin/create-user" , validToken,userSignup);

     router.post("/api/admin/edit-profile" ,validToken, editProfile);
     router.post("/api/admin/department-city-listing-by-countrycode",validToken, departmentCityListing);
    router.post("/api/admin/department-waliya-code-listing",validToken, departmentWaliyaListing)
    // Sub-admin permissions
     router.post("/api/admin/get-permissions", validToken, getAdminPermissions);
     router.post("/api/admin/update-permissions", validToken, updateAdminPermissions);

     router.get("/api/admin/all-admin-listing", [validateRequest(AdminListing)], allAdminListing)
}
