package ru.soune.nocopy.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.soune.nocopy.handler.*;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class HandlerConfig {

    @Bean
    public Map<Integer, RequestHandler> handlers(
            RegRequestHandler reg,
            LoginRequestHandler login,
            FileUploadHandler upload,
            FileEntityHandler file,
            LogoutRequestHandler logoutHandler,
            ImageFoundRequestHandler imageFoundRequestHandler,
            VerifyRegisterUserHandler verifyRegisterUser,
            AuthRequestHandler authRequestHandler,
            CompanyHandler companyHandler,
            TariffHandler tariffHandler,
            TariffInfoHandler tariffInfoHandler,
            ReferralHandler referralHandler,
            ResetPasswordHandler resetPasswordHandler,
            DaDataHandler daDataHandler,
            PaymentHandler paymentHandler,
            CostHandler costHandler,
            MonitoringHandler monitoringHandler,
            ViolationHandler violationHandler,
            ViolationStatisticsHandler violationStatisticsHandler,
            GlobalSearchHandler globalSearchHandler,
            ViolationNotionHandler violationNotionHandler,
            ComplaintEntityHandler complaintEntityHandler,
            UserInfoHandler userInfoHandler,
            NotificationHandler notificationHandler,
            UserVerificationHandler userVerificationHandler,
            LawCaseHandler lawCaseHandler,
            TokenOperationHandler tokenOperationHandler,
            StatisticUserFilesHandler statisticUserHandler,
            StatisticTariffInfoFileHandler statisticTariffInfoFileHandler,
            StatisticUserDynamicHandler statisticUserDynamicHandler,
            StatisticProtectedFilesHandler statisticProtectedFilesHandler,
            StatisticViolationHandler statisticViolationHandler,
            StatisticSubscriberHandler statisticSubscriberHandler,
            StatisticTokenHandler statisticTokenHandler,
            StatisticIncomeHandler statisticIncomeHandler,
            MonitoringStatisticHandler monitoringStatisticHandler,
            DockViewFileHandler dockViewFileHandler

    ) {
        Map<Integer, RequestHandler> map = new HashMap<>();
        map.put(20001, login);
        map.put(20002, reg);
        map.put(20004, upload);
        map.put(20005, file);
        map.put(20006, logoutHandler);
        map.put(20007, imageFoundRequestHandler);
        map.put(20008, authRequestHandler);
        map.put(20009, verifyRegisterUser);
        map.put(20010, resetPasswordHandler);
        map.put(30000, companyHandler);
        map.put(30001, tariffHandler);
        map.put(30002, tariffInfoHandler);
        map.put(30003, referralHandler);
        map.put(30004, daDataHandler);
        map.put(30005, paymentHandler);
        map.put(30007, monitoringHandler);
        map.put(30008, costHandler);
        map.put(30009, violationHandler);
        map.put(30010, violationStatisticsHandler);
        map.put(30011, globalSearchHandler);
        map.put(30012, violationNotionHandler);
        map.put(30013, complaintEntityHandler);
        map.put(30014, userInfoHandler);
        map.put(30015, notificationHandler);
        map.put(30016, userVerificationHandler);
        map.put(30017, lawCaseHandler);
        map.put(30018, tokenOperationHandler);
        map.put(30019, statisticUserHandler);
        map.put(30020, statisticTariffInfoFileHandler);
        map.put(30021, statisticUserDynamicHandler);
        map.put(30022, statisticProtectedFilesHandler);
        map.put(30023, statisticViolationHandler);
        map.put(30024, statisticSubscriberHandler);
        map.put(30025, statisticTokenHandler);
        map.put(30026, statisticIncomeHandler);
        map.put(30027, monitoringStatisticHandler);
        map.put(30028, dockViewFileHandler);

        return map;
    }
}
