import { ServerRoute } from '@hapi/hapi'
import Joi from '@hapi/joi'
import { ContactUsHandler } from '../handlers/contactus.handler'
import { options } from "../validators/global.validator.schema"
import { Common } from "../../utils/common"
import {
    contactUsRequest,
    contactUsIdentifier,
    contactUsListRequest,
    contactUsResponse,
    contactUsListResponse
} from "../validators/contactus.validator"
import { I18N } from '../../utils/i18n';
const contactUsHandler = new ContactUsHandler();
import { error400, error401, error403, error404, error500, confirmationOnly } from "../validators/global.validator.schema"
const routes: ServerRoute[] = [
    {
        method: 'POST',
        path: '/contactus',
        handler: contactUsHandler.create,
        options: {
            tags: ['api', 'Contact Us'],
            description: I18N.t('CREATE_CONTACTUS_DESCRIPTION'),
            notes: I18N.t('CREATE_CONTACTUS_NOTE'),
            auth: false,
            plugins: { 'hapi-swagger': { order: 1 } },
            validate: {
                options: options,
                failAction: Common.failover,
                payload: contactUsRequest,
            },
            response: {
                status: {
                    201: contactUsResponse,
                    400: error400,
                    401: error401,
                    403: error403,
                    404: error404,
                    500: error500
                }
            }
        },
    },
    {
        method: 'GET',
        path: '/contactus/{id}',
        handler: contactUsHandler.getById,
        options: {
            tags: ['api', 'Contact Us'],
            description: I18N.t('CONTACTUS_BY_ID_DESCRIPTION'),
            notes: I18N.t('CONTACTUS_BY_ID_NOTE'),
            plugins: { 'hapi-swagger': { order: 2 } },
            auth: { strategies: ['jwt'] },
            validate: {
                headers: Common.routeHeaders("authorized"),
                options: options,
                failAction: Common.failover,
                params: contactUsIdentifier
            },
            response: {
                status: {
                    200: contactUsResponse,
                    400: error400,
                    401: error401,
                    403: error403,
                    404: error404,
                    500: error500
                }
            }
        },
    },
    {
        method: 'GET',
        path: '/contactus/list',
        handler: contactUsHandler.list,
        options: {
            tags: ['api', 'Contact Us'],
            description: I18N.t('CONTACTUS_LIST_DESCRIPTION'),
            notes: I18N.t('CONTACTUS_LIST_NOTE'),
            plugins: { 'hapi-swagger': { order: 6 } },
            auth: { strategies: ['jwt'], scope: ['admin'] },
            validate: {
                headers: Common.routeHeaders("authorized"),
                options: options,
                failAction: Common.failover,
                query: contactUsListRequest
            },
            response: {
                status: {
                    200: contactUsListResponse,
                    400: error400,
                    401: error401,
                    403: error403,
                    404: error404,
                    500: error500
                }
            }
        },
    }
]
export default routes