import { Request, Response, NextFunction } from 'express';
import logger from '../libs/logger';
import { postController } from '../types/controller';
import { checkPostCode } from '../libs/httpServices'
import { AddressResponse } from '../types/addressResponse';


// eslint-disable-next-line @typescript-eslint/no-explicit-any 
export const postCodeController: postController = async (req: Request, res: Response, next: NextFunction) => {
    try {
        req.session.postCodeNotCovered = false;
        const addresseResponse: AddressResponse = await checkPostCode(req.body.postcode);

        if (typeof addresseResponse.error != 'undefined') {
            throw addresseResponse.error;
        }
        req.session.addresses = addresseResponse.addresses;
        //if we have address data move to next step
        if (req.session.addresses.length > 0) {
            next();
        }
        //if no data but no error, redirect to unsupported
        return res.redirect('/address-not-covered');
    } catch (err) {
        logger.error("error occured on onPostCodeFormSubmit" + JSON.stringify(err));
        next(err);
        return
    }
}

