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)); }