private TrainingDTO CreateTrainingDTO(Training training) { List <ShortTraineeDetailDTO> shortTraineeDetailDtos = new List <ShortTraineeDetailDTO>(); List <ShortTrainerDetailDTO> shortTrainerDetailDtos = new List <ShortTrainerDetailDTO>(); var trainees = _traineeRepository.getTraineesByArrayId(training.ArrayOfAssignedTrainees); var trainers = _trainerRepository.GetTrainersByArrayId(training.ArrayOfAssignedTrainees); trainees.ForEach(thisTrainee => shortTraineeDetailDtos.Add(new ShortTraineeDetailDTO(thisTrainee.Id, thisTrainee.Person.Name, thisTrainee.DefaultDepartment))); trainers.ForEach(thisTrainer => shortTrainerDetailDtos.Add(new ShortTrainerDetailDTO(thisTrainer.Id, thisTrainer.Person.Name))); TrainingDTO trainingDto = new TrainingDTO( training.Id, training.ProgramId, training.Programs.ProgramTitle, ConfigurationRepository.GetMaximumHoursPerDay(), training.TrainingStatus, training.StartDate, training.EndDate, training.TotalDuration, shortTraineeDetailDtos, shortTrainerDetailDtos, BuildFullModuleArrangementDTO(training.ModuleArrangement) ); return(trainingDto); }
public TrainingDetailDTO GetTrainingDetailByID(int trainingID) { try { TrainingDetailDTO returnTraining = new TrainingDetailDTO(); //Call a DAL method to get Training by TrainingId Training training = _trainingRepository.Get(trainingID); returnTraining.TrainingId = training.Id; returnTraining.ProgramId = training.ProgramId; var program = _programRepository.Get(training.ProgramId); returnTraining.ProgramName = program.ProgramTitle; returnTraining.StatusId = training.StatusId; returnTraining.StatusName = training.TrainingStatus.StatusName; //need to check returnTraining.StartDate = training.StartDate.ToString(); returnTraining.EndDate = training.EndDate.ToString(); returnTraining.TotalDuration = training.TotalDuration; returnTraining.MaxHoursPerDay = _configurationRepository.GetMaximumHoursPerDay(); #region Get array trainees assigned List <ShortTraineeDetailDTO> listTraineesAssigned = new List <ShortTraineeDetailDTO>(); //Call a DAL method to get trainees by array traineeIDs List <Trainee> listTrainees = _traineeRepository.getTraineesByArrayId(training.ArrayOfAssignedTrainees); foreach (var x in listTrainees) { ShortTraineeDetailDTO trainee = new ShortTraineeDetailDTO(); trainee.TraineeId = x.Id; var person = _personRepository.Get(x.PersonId); trainee.Name = person.Name; listTraineesAssigned.Add(trainee); } returnTraining.TraineesAssigned = listTraineesAssigned; #endregion #region Get array trainers assigned List <ShortTrainerDetailDTO> listTrainersAssigned = new List <ShortTrainerDetailDTO>(); //Call a DAL method to get trainers by array trainerIDs List <Trainer> trainerList = _trainerRepository.GetTrainersByArrayId(training.ArrayOfAssignedTrainers); foreach (var x in trainerList) { ShortTrainerDetailDTO trainer = new ShortTrainerDetailDTO(); trainer.TrainerId = x.Id; var person = _personRepository.Get(x.PersonId); trainer.Name = person.Name; listTrainersAssigned.Add(trainer); } returnTraining.TrainersAssigned = listTrainersAssigned; #endregion #region Get array modules included List <ShortModuleDetailDTO> listModulesIncluded = new List <ShortModuleDetailDTO>(); //Array moduleIDs ModuleArrangementDTO[] arrayModulesArrangement = JsonConvert.DeserializeObject <ModuleArrangementDTO[]>(training.ModuleArrangement); foreach (ModuleArrangementDTO moduleArrangement in arrayModulesArrangement.ToList()) { ShortModuleDetailDTO shortModule = new ShortModuleDetailDTO(); //Get id and TrainTime of module shortModule.ModuleId = moduleArrangement.ModuleId; shortModule.TrainTime = moduleArrangement.TrainTime; //With each ModuleId, we get module data from database by that ModuleId Module module = _moduleRepository.Get(moduleArrangement.ModuleId); 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>(); List <Competence> competencies = _competenceRepository.GetCompetenciesByCompetenceID(module.ArrayOfTrainingCompetencies); foreach (var competence in competencies) { 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); } returnTraining.ModulesArrangement = listModulesIncluded; #endregion return(returnTraining); } catch { return(null); } }
public ProgramDetailDTO GetProgramDetailByID(int programID) { try { ProgramDetailDTO programDetailDTO = new ProgramDetailDTO(); //Call a DAL method to get program detail by id var program = _programRepository.Get(programID); programDetailDTO.ProgramId = program.Id; programDetailDTO.ProgramTitle = program.ProgramTitle; programDetailDTO.MaxHoursPerDay = _configurationRepository.GetMaximumHoursPerDay(); #region Get modules included to program List <ShortModuleDetailDTO> listModulesIncluded = new List <ShortModuleDetailDTO>(); //Call a DAL method to get list module List <Module> modules = _moduleRepository.GetModulesByArrayID(program.ArrayOfIncludedModules).ToList(); 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>(); List <Competence> CompetenciesTrained = _competenceRepository.GetCompetenciesByCompetenceID(module.ArrayOfTrainingCompetencies); foreach (var 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); } programDetailDTO.ModulesIncluded = listModulesIncluded; #endregion #region Get potential trainees List <ShortTraineeDetailDTO> listPotentialTrainees = new List <ShortTraineeDetailDTO>(); //Call a DAL method to get list potentail trainees List <Trainee> potentailTrainees = _traineeRepository.getTraineesByArrayId(program.ArrayOfNeedByPotentialTrainees); foreach (Trainee trainee in potentailTrainees) { ShortTraineeDetailDTO Shotttrainee = new ShortTraineeDetailDTO(); Shotttrainee.TraineeId = trainee.Id; var person = _personRepository.Get(trainee.PersonId); Shotttrainee.Name = person.Name; listPotentialTrainees.Add(Shotttrainee); } programDetailDTO.NeedByPotentialTrainees = listPotentialTrainees; #endregion #region Get total Duration double totalDuration = 0; foreach (ShortModuleDetailDTO module in programDetailDTO.ModulesIncluded) { totalDuration += module.Duration; } programDetailDTO.TotalDuration = totalDuration; #endregion return(programDetailDTO); } catch { return(null); } }
/// <summary> /// Get list of ExecuteDataDTO included Programs and available Trainings are already open for those Programs /// </summary> /// <param name="requiredPrograms">A list of Programs that required to get the list of Trainings</param> /// <param name="traineeID">A traineeID to check that the Trainee can registry to a specific Training or not</param> /// <returns>List of ExecuteDataDTO</returns> protected virtual List <ExecuteDataDTO> FindAvailableTrainings(List <ProgramDTO> requiredPrograms, int traineeID) { try { List <ExecuteDataDTO> temp = new List <ExecuteDataDTO>(); #region Get a list of Training that already open with a specific list of Program foreach (ProgramDTO program in requiredPrograms) { //The list that hold Training that already open with a specific Program List <TrainingDTO> specTrainings = new List <TrainingDTO>(); #region Get the list of Training that already open with a specific ProgramId var trainingsOfProgram = _trainingRepository.GetTrainingsByProgramIdAndStatusId(program.ProgramID, _trainingStatusRepository.GetTrainingStatusIdByName(TrainingStatus.PLANNED)); foreach (Training training in trainingsOfProgram) { List <ShortTraineeDetailDTO> shortTraineeDetailDtos = new List <ShortTraineeDetailDTO>(); List <ShortTrainerDetailDTO> shortTrainerDetailDtos = new List <ShortTrainerDetailDTO>(); var trainees = _traineeRepository.getTraineesByArrayId(training.ArrayOfAssignedTrainees); var trainers = _trainerRepository.GetTrainersByArrayId(training.ArrayOfAssignedTrainees); trainees.ForEach(trainee => shortTraineeDetailDtos.Add(new ShortTraineeDetailDTO(trainee.Id, trainee.Person.Name, trainee.DefaultDepartment))); trainers.ForEach(trainer => shortTrainerDetailDtos.Add(new ShortTrainerDetailDTO(trainer.Id, trainer.Person.Name))); TrainingDTO trainingDto = new TrainingDTO( training.Id, training.ProgramId, training.Programs.ProgramTitle, ConfigurationRepository.GetMaximumHoursPerDay(), training.TrainingStatus, training.StartDate, training.EndDate, training.TotalDuration, shortTraineeDetailDtos, shortTrainerDetailDtos, BuildFullModuleArrangementDTO(training.ModuleArrangement) ); specTrainings.Add(trainingDto); } #endregion #region Check if the Trainee can registry into a single Training or not foreach (TrainingDTO training in specTrainings) { bool isCheck = true; // for (int i = 0; i < training.TraineesAssigned.ToArray().Length; i++) // { // if (traineeID == training.TraineesAssigned[i]) // { // isCheck = false; // break; // } // } foreach (var shortTraineeDetailDto in training.TraineesAssigned) { if (traineeID == shortTraineeDetailDto.TraineeId) { isCheck = false; break; } } training.CanRegister = isCheck; } #endregion temp.Add(new ExecuteDataDTO( program.ProgramID, program.ProgramTitle, specTrainings)); } #endregion return(temp); } catch { return(null); } }