// src/routes/users.ts
import { Router } from "express";
import express from "express";

import { ToolPagesController } from "../controllers/ToolPagesController";
import { CustomPageController } from "../controllers/CustomPageController";
import { BlogController } from "../controllers/BlogController";
import { SettingsController } from "../controllers/SettingsController";
import { FrontendAuthController } from "../controllers/FrontendAuthController";
import { UsersController } from "../controllers/UsersController";
import { PricingPlansController } from "../controllers/PricingPlansController";
import { StripeController } from "../controllers/StripeController";
import { SubscriptionController } from "../controllers/SubscriptionController";
import { ContactController } from "../controllers/ContactController";

const router = Router();

const toolpagesController = new ToolPagesController();
const custompagesController = new CustomPageController();
const blogController = new BlogController();
const settingsController = new SettingsController();
const frontendAuthController = new FrontendAuthController();
const usersController = new UsersController();
const pricingPlansController = new PricingPlansController();
const stripeController = new StripeController();
const subscriptionController = new SubscriptionController();
const contactController = new ContactController();

router.get(
  "/getToolwithLang",
  toolpagesController.getToolWithLang.bind(toolpagesController)
);

router.get("/getTools", toolpagesController.show.bind(toolpagesController));

router.get(
  "/getCustomwithLang",
  custompagesController.getCutsomWithLang.bind(custompagesController)
);
router.get(
  "/getCustomPages",
  custompagesController.show.bind(custompagesController)
);

router.get("/getBlogs", blogController.getBlogs.bind(blogController));

router.get("/getBlog", blogController.getBlog.bind(blogController));

// router.get("/getBlog", blogController.getBlog.bind(blogController));

router.get("/getSettings", settingsController.show.bind(settingsController));

router.get(
  "/pricing-plans",
  pricingPlansController.show.bind(pricingPlansController)
);

router.get(
  "/check-email",
  frontendAuthController.checkEmail.bind(frontendAuthController)
);

router.get(
  "/check-username",
  frontendAuthController.checkUsername.bind(frontendAuthController)
);

router.post("/login", usersController.login.bind(usersController));

router.post("/google-login", usersController.googleLogin.bind(usersController));

router.post("/logout", usersController.logout.bind(usersController));

router.get("/auth-user", usersController.authWebUser.bind(usersController));

router.post("/register", usersController.register.bind(usersController));

router.get("/verify-email", usersController.verifyEmail.bind(usersController));

router.post(
  "/resend-verification-email",
  usersController.resendEmail.bind(usersController)
);
router.post(
  "/forget-password",
  usersController.forgetPassword.bind(usersController)
);
router.post(
  "/reset-password",
  usersController.resetPassword.bind(usersController)
);
router.post(
  "/change-password",
  usersController.changePassword.bind(usersController)
);

router.post(
  "/create-checkout-session",
  stripeController.payment.bind(stripeController)
);
router.get(
  "/subscriptions",
  subscriptionController.show.bind(subscriptionController)
);

router.get("/payment/verify", stripeController.verify.bind(stripeController));

router.post("/contact", contactController.contact.bind(contactController));

export default router;
