예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        /// <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);
            }
        }