public void Insert_NewProfileAdded()
        {
            // Arrange
            IDataMapper <CourseProfile> dataMapper = new ProfileJsonDataMapper(_profilePath);
            CourseProfile profile = new CourseProfile
            {
                Name = "FrondEnd_Developer"
            };

            // Act
            dataMapper.Insert(profile);

            // Assert
            var result = dataMapper.FindAll();

            Assert.AreEqual(4, result.Count());
            Assert.AreEqual("NET_Developer", result.ElementAt(0).Name);
            Assert.AreEqual(31, result.ElementAt(0).Courses.Count());
            Assert.AreEqual("Developer_Mobile", result.ElementAt(1).Name);
            Assert.AreEqual(30, result.ElementAt(1).Courses.Count());
            Assert.AreEqual("JAVA_Developer", result.ElementAt(2).Name);
            Assert.AreEqual(27, result.ElementAt(2).Courses.Count());
            Assert.AreEqual("FrondEnd_Developer", result.ElementAt(3).Name);
            Assert.AreEqual(0, result.ElementAt(3).Courses.Count());
            Assert.AreEqual(4, result.ElementAt(3).Id);
        }
        public EducationPlan GenerateEducationPlan(RestEducationPlan educationPlan, EducationPlan oldEducationplan)
        {
            System.Diagnostics.Debug.WriteLine("parameters " + new JavaScriptSerializer().Serialize(educationPlan) + ", old: " + new JavaScriptSerializer().Serialize(educationPlan));
            if (educationPlan == null)
            {
                _logger.Error("ArgumentNullException: educationPlan");
                throw new ArgumentNullException("educationPlan");
            }

            _logger.Debug(string.Format(_culture, "GenerateEducationPlan for employee {0}", educationPlan.NameEmployee));

            _planner.StartDate    = educationPlan.InPaymentFrom;
            _planner.EndDate      = educationPlan.EmployableFrom;
            _planner.BlockedDates = educationPlan.BlockedDates;

            var           educationplanData = Mapper.Map <EducationPlanData>(educationPlan);
            CourseProfile profile           = null;

            if (educationPlan.ProfileId != 0)
            {
                _logger.Debug(string.Format(_culture, "ProfileId exists: {0}", educationPlan.ProfileId));
                profile = _profileDataMapper.FindById(educationPlan.ProfileId);
                educationplanData.Profile   = profile.Name;
                educationplanData.ProfileId = educationPlan.ProfileId;
            }

            var educationPlanCourses = educationPlan.Courses.Where(course => !course.Code.StartsWith("OLC"));

            _logger.Debug("Find courses from service");
            IEnumerable <Integration.Course>             courses       = _courseService.FindCourses(educationPlanCourses.Select(course => course.Code));
            List <OpleidingsplanGenerator.Models.Course> coursesToPlan = ConvertCourses(courses, profile, educationPlan.Courses);

            List <OpleidingsplanGenerator.Models.PinnedCourseImplementation> implementationConstraints = new List <OpleidingsplanGenerator.Models.PinnedCourseImplementation>();

            if (educationPlan.ImplementationConstraints != null)
            {
                implementationConstraints = ConvertImplementationConstraints(educationPlan.ImplementationConstraints);
            }

            if (oldEducationplan == null)
            {
                _planner.PlanCoursesWithOlc(coursesToPlan, implementationConstraints);
            }
            else
            {
                _planner.PlanCoursesWithOlcInOldEducationPlan(coursesToPlan, oldEducationplan, implementationConstraints);
            }

            _planner.AddModules(_moduleDataMapper.FindAll());

            OverrideRestCourse(_planner, educationPlan.Courses);

            var output = _educationPlanOutputter.GenerateEducationPlan(educationplanData);

            System.Diagnostics.Debug.WriteLine("parameters " + new JavaScriptSerializer().Serialize(output));

            return(output);
        }
 // PUT: api/Profile/profile
 public void Put(CourseProfile profile)
 {
     if (ModelState.IsValid)
     {
         _administrationManager.Insert(profile);
     }
     else
     {
         _logger.Warn("Put course profile modelstate is not valid");
     }
 }
        public void Insert_ExistingProfile_ExceptionThrowed()
        {
            // Arrange
            IDataMapper <CourseProfile> dataMapper = new ProfileJsonDataMapper(_profilePath);
            CourseProfile profile = new CourseProfile
            {
                Name = "NET_Developer"
            };

            // Act
            dataMapper.Insert(profile);

            // Assert ArgumentException
        }
        public void Update_WithNotExistingProfile_ExceptionThrowed()
        {
            // Arrange
            IDataMapper <CourseProfile> dataMapper = new ProfileJsonDataMapper(_profilePath);
            CourseProfile profile = new CourseProfile
            {
                Id   = 100,
                Name = "DOT_NET_Developer"
            };

            // Act
            dataMapper.Update(profile);

            // Assert ArgumentException
        }
        public void Update_ProfileUpdated()
        {
            // Arrange
            IDataMapper <CourseProfile> dataMapper = new ProfileJsonDataMapper(_profilePath);
            CourseProfile profile = new CourseProfile
            {
                Id   = 1,
                Name = "DOT_NET_Developer"
            };

            // Act
            dataMapper.Update(profile);

            // Assert
            var result = dataMapper.FindAll();

            Assert.AreEqual(3, result.Count());
            Assert.AreEqual("DOT_NET_Developer", result.ElementAt(0).Name);
            Assert.AreEqual(31, result.ElementAt(0).Courses.Count());
            Assert.AreEqual("Developer_Mobile", result.ElementAt(1).Name);
            Assert.AreEqual(30, result.ElementAt(1).Courses.Count());
            Assert.AreEqual("JAVA_Developer", result.ElementAt(2).Name);
            Assert.AreEqual(27, result.ElementAt(2).Courses.Count());
        }
        private static List <OpleidingsplanGenerator.Models.Course> ConvertCourses(IEnumerable <Integration.Course> courses, CourseProfile profile, Collection <RestEducationPlanCourse> restCourses)
        {
            _logger.Debug("ConvertCourses");
            List <OpleidingsplanGenerator.Models.Course> coursesToPlan = new List <OpleidingsplanGenerator.Models.Course>();

            foreach (var course in courses)
            {
                OpleidingsplanGenerator.Models.Course courseToPlan = Mapper.Map <OpleidingsplanGenerator.Models.Course>(course);

                if (profile != null)
                {
                    CoursePriority coursePriority = profile.Courses.FirstOrDefault(profileCourse => profileCourse.Code == course.Code);
                    if (coursePriority != null)
                    {
                        courseToPlan.Priority = coursePriority.Priority;
                    }
                }

                RestEducationPlanCourse restCourse = restCourses.FirstOrDefault(profileCourse => profileCourse.Code == course.Code);
                if (restCourse != null && restCourse.Priority != 0)
                {
                    courseToPlan.Priority = restCourse.Priority;
                }

                coursesToPlan.Add(courseToPlan);
            }

            return(coursesToPlan);
        }
Example #8
0
 public void Update(CourseProfile profile)
 {
     _profileDataMapper.Update(profile);
 }
Example #9
0
 public void Insert(CourseProfile profile)
 {
     _profileDataMapper.Insert(profile);
 }