import express from 'express';
import validate from 'express-validation';
import middleware from '../../middlewares/staff.middleware';
import controller from '../../controllers/v1/staff.controller';
import permissions from '../../../common/utils/Permissions';
import { authorize } from '../../middlewares/auth.middleware';
import {
    // listValidation,
    updateValidation,
    createValidation
} from '../../validations/v1/staff.validation';

const router = express.Router();


router
    .route('/')
    .get(
        authorize([permissions.SERVICE]),
        middleware.count,
        // middleware.load,
        controller.list

    )
    .post(
        validate(createValidation),
        authorize([permissions.SERVICE]),
        middleware.prepareParams,
        middleware.checkExistingEmail,
        controller.create
    );

router
    .route('/:id')
    .get(
        authorize([permissions.SERVICE]),
        middleware.load,
        controller.get
        // controller.addService
    )
    .put(
        validate(updateValidation),
        authorize([permissions.SERVICE]),
        middleware.load,
        middleware.prepareParamsUpdated,
        controller.update
    )
    .delete(
        authorize([permissions.SERVICE]),
        middleware.load,
        controller.delete
    );
router
    .route('/:id/block')
    .post(
        authorize([permissions.STAFF]),
        middleware.load,
        controller.block
    );
router
    .route('/:id/active')
    .post(
        authorize([permissions.STAFF]),
        middleware.load,
        controller.active
    );

// super admin change password for themself
router
    .route("/resetpassword/:id")
    .post(
        authorize([permissions.SERVICE]),
        middleware.load,
        middleware.checkCurrentPassword,
        controller.changePassword

    );

//super admin change password for admin
router
    .route("/change-password/:id")
    .post(
        authorize([permissions.SERVICE]),
        middleware.load,
        controller.changePassword
    );
export default router;