예제 #1
0
        public ListSuitableTraineeDTO GetAllTrainee()
        {
            ListSuitableTraineeDTO listSuitableTraineeDto = new ListSuitableTraineeDTO();

            List <ShortTraineeDetailDTO> shortTraineeDetailDtos = new List <ShortTraineeDetailDTO>();

            var traineeList = _traineeRepository.GetAllList();

            foreach (var trainee in traineeList)
            {
                ShortTraineeDetailDTO shortTraineeDetailDto =
                    new ShortTraineeDetailDTO(trainee.Id, trainee.Person.Name, trainee.DefaultDepartment);

                shortTraineeDetailDtos.Add(shortTraineeDetailDto);
            }

            listSuitableTraineeDto.ListSuitableTrainees = shortTraineeDetailDtos;

            return(listSuitableTraineeDto);
        }
예제 #2
0
        public ListSuitableTraineeDTO GetSuitableTrainees(int programID)
        {
            try
            {
                ListSuitableTraineeDTO suitableTrainees = new ListSuitableTraineeDTO();

                List <ShortTraineeDetailDTO> listSuitableTrainees = new List <ShortTraineeDetailDTO>();

                #region Get Competencies trained by the program, we will use it to compare with trainee's Competencies

                List <int> competenciesTrainedID = new List <int>();

                //Get program by ProgramId
                var program = _programRepository.Get(programID);

                int[] modulesIncludedID = program.ArrayOfIncludedModules;

                //Get list module by array ModuleId
                var modulesIncluded = _moduleRepository.GetModulesByArrayID(modulesIncludedID);

                foreach (Module module in modulesIncluded)
                {
                    //Get list Competencies trained by module
                    List <int> competenciesTrainedIDByModule = module.ArrayOfTrainingCompetencies.ToList();

                    //Add there Competencies to list Competencies trained by program
                    foreach (int competenceID in competenciesTrainedIDByModule)
                    {
                        competenciesTrainedID.Add(competenceID);
                    }
                }

                //Remove the duplicate Competencies
                competenciesTrainedID = competenciesTrainedID.Distinct().ToList();

                #endregion

                #region Get all the trainee in database, we will findout the suitable trainees

                var trainees = _traineeRepository.GetAllIncluding(trainee => trainee.Person);

                foreach (Trainee trainee in trainees)
                {
                    int[] competenciesGained = trainee.ArrayOfCompetence;

                    if (_compareAppService.IsMissingCompetencies(competenciesGained, competenciesTrainedID.ToArray()))
                    {
                        //This one is a suitable trainee
                        ShortTraineeDetailDTO suitableTrainee = new ShortTraineeDetailDTO();

                        suitableTrainee.TraineeId         = trainee.Id;
                        suitableTrainee.Name              = trainee.Person.Name;
                        suitableTrainee.DefaultDepartment = trainee.DefaultDepartment;

                        listSuitableTrainees.Add(suitableTrainee);
                    }
                }

                suitableTrainees.ListSuitableTrainees = listSuitableTrainees;

                #endregion

                return(suitableTrainees);
            }
            catch (Exception e)
            {
                return(null);
            }
        }
        public void GetAllTraineeShouldReturnAllTrainee()
        {
            //Arrange
            Person person1 = new Person()
            {
                Id      = 1,
                Name    = "trainer1",
                Company = "Rosen"
            };
            Trainee trainee1 = new Trainee()
            {
                Id                = 1,
                PersonId          = 1,
                Person            = person1,
                DefaultDepartment = "Software Development",
                JobFunctions      = "1",
                Competencies      = "1",
                TargetedTrainings = "1",
                AttendedTrainings = "1"
            };
            Person person2 = new Person()
            {
                Id      = 2,
                Name    = "trainer2",
                Company = "Rosen"
            };
            Trainee trainee2 = new Trainee()
            {
                Id                = 2,
                PersonId          = 2,
                Person            = person2,
                DefaultDepartment = "Software Development",
                JobFunctions      = "1",
                Competencies      = "1",
                TargetedTrainings = "1",
                AttendedTrainings = "1"
            };

            List <Trainee> expectList = new List <Trainee>()
            {
                trainee1, trainee2
            };

            //mock
            mockTraineeRepository.Setup(repo => repo.GetAllList()).Returns(expectList);
            //act
            ListSuitableTraineeDTO output = sutTraineeService.GetAllTrainee();

            bool expected = true;

            for (int i = 0; i < 2; i++)
            {
                if (expectList[i].Id != output.ListSuitableTrainees[i].TraineeId)
                {
                    expected = false;
                    break;
                }
            }
            //assert
            Assert.AreEqual(true, expected);
        }