import e, { Router } from "express";
import authorize from "../middlewares/authorization.middleware";
import validateData from "../middlewares/validation.middleware";
import assets from "../controllers/assets.controller";
import {
  assetAddSchema,
  EditBasicDetailsSchema,
} from "../schemas/assets.schema";
import {
  EditAssignmentDetailsSchema,
  propertyAssetsAddSchema,
} from "../schemas/propertyAssets.schema";
import { multerArrayFn } from "../middlewares/multer.middleware";
import {
  assetMaintenanceAddSchema,
  assetMaintenanceEditSchema,
} from "../schemas/assetMaintenance.schema";

const router = Router();

router.post(
  "/add",
  authorize,
  // validateData(assetAddSchema),
  (req, res, next) => multerArrayFn(req, res, next, 2),
  assets.Add
);

router.post(
  "/add/images",
  authorize,
  (req, res, next) => multerArrayFn(req, res, next, 3),
  assets.UploadInspectionImgs
);

router.post(
  "/assign/property",
  authorize,
  validateData(propertyAssetsAddSchema),
  assets.AssignProperty
);

router.post(
  "/edit/basic/details",
  validateData(EditBasicDetailsSchema),
  authorize,
  assets.EditBasicDetails
);

router.post(
  "/edit/assignment/details",
  authorize,
  validateData(EditAssignmentDetailsSchema),
  assets.EditAssignmentDetails
);

router.post(
  "/maintenance/add",
  authorize,
  validateData(assetMaintenanceAddSchema),
  assets.AddMaintenance
);

router.get(
  "/list/maintenance/:assetId/:propId",
  authorize,
  assets.ListMaintenanceRecordsForPropAndAsset
);

router.post(
  "/maintenance/edit",
  validateData(assetMaintenanceEditSchema),
  authorize,
  assets.EditMaintenanceRecord
);

router.post(
  "/delete",
  authorize,
  assets.Delete,
);

router.post(
  "/update/asset/info",
  authorize,
  assets.UpdateAssetInfo,
);

router.get("/list", authorize, assets.ListForClient);

export default router;
