public EndDateMessageDTO CustomEndDate(CustomEndDateInputDTO customEndDateInput)
        {
            try
            {
                string endDate = "";

                #region Get total days to train those modules arrangement

                double totalDays = 0;

                //List modules arrangement was parsed from ModulesArrangement string
                List <ModuleArrangementDTO> listModulesArrangement =
                    JsonConvert.DeserializeObject <ModuleArrangementDTO[]>(customEndDateInput.ModulesArrangement).ToList();

                //Get list modules information from list modules arrangement above
                List <ShortModuleDetailDTO> listModulesDetail = new List <ShortModuleDetailDTO>();

                foreach (ModuleArrangementDTO moduleArrangement in listModulesArrangement)
                {
                    ShortModuleDetailDTO shortModule = new ShortModuleDetailDTO();

                    shortModule.ModuleId  = moduleArrangement.ModuleId;
                    shortModule.TrainTime = moduleArrangement.TrainTime;

                    var module = _moduleRepository.Get(moduleArrangement.ModuleId);

                    shortModule.Duration = module.Theory + module.Pratical;

                    //Get total days to train this module
                    if ((shortModule.Duration % shortModule.TrainTime) != 0)
                    {
                        double temp = shortModule.Duration / shortModule.TrainTime;
                        shortModule.TotalDate = Math.Truncate(temp) + 1;
                    }
                    else
                    {
                        shortModule.TotalDate = shortModule.Duration / shortModule.TrainTime;
                    }

                    listModulesDetail.Add(shortModule);
                }

                //Get total days to train those modules arrangement
                foreach (ShortModuleDetailDTO module in listModulesDetail)
                {
                    totalDays += module.TotalDate;
                }

                #endregion

                #region Calculate end date

                //List of days off in a week
                List <int> daysOff = JsonConvert.DeserializeObject <int[]>(_configurationRepository.GetDaysOff()).ToList();

                endDate = _compareAppService.CalculateEndDate(customEndDateInput.StartDate, totalDays, daysOff);

                #endregion

                return(new EndDateMessageDTO()
                {
                    status = true,
                    message = L("CalculaterEndDateSuccess"),
                    endDate = endDate
                });
            }
            catch
            {
                return(new EndDateMessageDTO()
                {
                    status = false,
                    message = L("UnknownError"),
                    endDate = "null"
                });
            }
        }
 public EndDateMessageDTO CustomEndDate(CustomEndDateInputDTO customEndDateInput)
 {
     return(_trainingAppService.CustomEndDate(customEndDateInput));
 }