public EndDateMessageDTO CalculaterEndDate(CalculateEndDateInputDTO calculateEndDateInput) { try { string endDate = ""; #region Get total dates to train the program //Total dates to train the program double totalDates = 0; //Get modules included to program List <ShortModuleDetailDTO> listModulesIncluded = new List <ShortModuleDetailDTO>(); //Get program by ProgramId var program = _programRepository.Get(calculateEndDateInput.ProgramID); int[] modulesIncludedID = program.ArrayOfIncludedModules; //Call a DAL method to get list module var modules = _moduleRepository.GetModulesByArrayID(modulesIncludedID); foreach (Module module in modules) { ShortModuleDetailDTO shortModule = new ShortModuleDetailDTO(); //Get id and TrainTime of module shortModule.ModuleId = module.Id; shortModule.TrainTime = _configurationRepository.GetMaximumHoursPerDay(); shortModule.ModuleTitle = module.Title; shortModule.Duration = module.Theory + module.Pratical; //Get TotalDate 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; } //Get Competencies trained by this module List <CompetenceDTO> listCompetenciesTrained = new List <CompetenceDTO>(); var competenciesTrained = _competenceRepository.GetCompetenciesByCompetenceID(module.ArrayOfTrainingCompetencies); foreach (Competence competence in competenciesTrained) { CompetenceDTO competenceDto = new CompetenceDTO(); competenceDto.CompetenceID = competence.Id; competenceDto.Name = competence.Name; competenceDto.Description = competence.Description; listCompetenciesTrained.Add(competenceDto); } shortModule.Competencies = listCompetenciesTrained; listModulesIncluded.Add(shortModule); } foreach (ShortModuleDetailDTO module in listModulesIncluded) { totalDates += module.TotalDate; } #endregion #region Calculate end date //List days off in a week List <int> daysOff = JsonConvert.DeserializeObject <int[]>(_configurationRepository.GetDaysOff()).ToList(); endDate = _compareAppService.CalculateEndDate(calculateEndDateInput.StartDate, totalDates, 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 CalculateEndDate(CalculateEndDateInputDTO calculateEndDateInput) { return(_trainingAppService.CalculaterEndDate(calculateEndDateInput)); }