Exemplo n.º 1
0
 public static SyllabusDomain Create(CreateSyllabusRequest request)
 {
     return(new SyllabusDomain
            (
                request.DepartmentId,
                request.PeriodType,
                request.EducationType
            ));
 }
 public async Task <SyylabusForDepartmentDTo> CreateSyllabus([FromBody] CreateSyllabusRequest request)
 => await _syllabusService.CreateSyllabus(request);
        public async Task <SyylabusForDepartmentDTo> CreateSyllabus(CreateSyllabusRequest request)
        {
            try
            {
                Check.NotNullOrEmpty(request, "request");
                var users     = _userRepository.GetTeacherConstraintWithLessons(request.DepartmentId);
                var locations = _locationRepository.GetFacultyLocations(request.FacultyId);
                foreach (var item in users)
                {
                    var userLessons = _lessonRepository.GetLessonsForTeacher(item.UserId);
                    item.Lessons = userLessons.Map <List <LessonDto> >();
                }

                var lessons         = _lessonRepository.GetDepartmentLessons(request.FacultyId, request.DepartmentId, request.PeriodType);
                var syllabusLessons = lessons.Map <List <SyllabusForLessonWithGroupListDto> >();
                int toplamDersSaati = 0;
                foreach (var sls in syllabusLessons)
                {
                    foreach (var hrp in sls.LessonGroups)
                    {
                        toplamDersSaati = toplamDersSaati + sls.WeeklyHour;
                    }
                }
                toplamDersSaati = toplamDersSaati * 2;
                var syllabus = SyllabusDomainFactory.Create(request);

                while (syllabus.WeeklyHour != toplamDersSaati)
                {
                    syllabus = SyllabusDomainFactory.Create(request);
                    syllabus.AssignToLesson(lessons, request, EducationType.IOgretim);
                    syllabus.AssignToLesson(lessons, request, EducationType.IIOgretim);

                    syllabus.UnitLessons.RemoveAll(x => x.LessonId == 0);

                    syllabus.HocaAta(users);
                    syllabus.UnitLessons.RemoveAll(x => x.LessonId > 0 && x.UserId == 0);

                    syllabus.DerslikAta(locations);
                    syllabus.UnitLessons.RemoveAll(x => x.LessonId > 0 && x.UserId > 0 && x.LocationId == 0);

                    syllabus.AddWeeklyHour(syllabus.UnitLessons.Count);
                    if (syllabus.WeeklyHour != toplamDersSaati)
                    {
                    }
                }

                var syllabusEntity = syllabus.Map <SyllabusEntity>();

                await _syllabusRepository.AddAsync(syllabusEntity);

                await _databaseUnitOfWork.SaveChangesAsync();

                var result = await GetSyllabus(syllabusEntity.SyllabusId).ConfigureAwait(false);

                return(result);
            }
            catch (Exception ex)
            {
                _databaseUnitOfWork.Rollback();
                throw;
            }
        }