Beispiel #1
0
        public void AddClass(ClassInputModel inputModel)
        {
            var entityClass = Mapper.Map <ClassInputModel, Class>(inputModel);

            entityClass.SchoolId = Repositories.Schools.Query()
                                   .AsNoTracking()
                                   .FirstOrDefault(s => s.Id == inputModel.SchoolId)?.Id;

            this.Repositories.Classes.Create(entityClass);
        }
Beispiel #2
0
        public async Task CreateAsync(ClassInputModel inputModel)
        {
            var teacherId = int.Parse(inputModel.TeacherId);
            var teacher   = _teachersRepository.All().FirstOrDefault(t => t.Id == teacherId);

            if (teacher != null)
            {
                if (teacher.Class != null)
                {
                    throw new ArgumentException($"Sorry, teacher with id {teacherId} is already registered as head of another class");
                }

                var isClassLetterNumberCombinationAlreadyOccupied = _classesRepository.All().Any(c =>
                                                                                                 c.Letter == inputModel.Letter &&
                                                                                                 c.YearCreated == inputModel.YearCreated &&
                                                                                                 c.Year == inputModel.Year &&
                                                                                                 c.Teacher.SchoolId == teacher.SchoolId);
                if (isClassLetterNumberCombinationAlreadyOccupied)
                {
                    throw new ArgumentException($"Sorry, there is already existing class for year {inputModel.YearCreated} that's currently in {inputModel.Year} grade and with letter {inputModel.Letter}");
                }

                var schoolClass = new Class
                {
                    Letter      = inputModel.Letter,
                    Year        = inputModel.Year,
                    YearCreated = inputModel.YearCreated,
                    Teacher     = teacher
                };

                await _classesRepository.AddAsync(schoolClass);

                await _classesRepository.SaveChangesAsync();

                var classEntity = _classesRepository.All().First(c =>
                                                                 c.Letter == schoolClass.Letter && c.YearCreated == schoolClass.YearCreated &&
                                                                 c.Year == schoolClass.Year);
                var school = teacher.School;
                school.Classes.Add(classEntity);

                _schoolsRepository.Update(school);
                await _schoolsRepository.SaveChangesAsync();

                return;
            }

            throw new ArgumentException($"Sorry, we couldn't find teacher with id {teacherId}");
        }
Beispiel #3
0
        public ClassViewModel EditClass(string id, ClassInputModel inputModel)
        {
            var classFromDto = Repositories.Classes.GetWithoutTracking()
                               .Find(c => c.Id == id);

            if (classFromDto is null)
            {
                throw new TargetException("Class not found");
            }

            var entityClass = Mapper.Map <ClassInputModel, Class>(inputModel);

            entityClass.Id = classFromDto.Id;

            Repositories.Classes.Update(entityClass);

            return(Mapper.Map <Class, ClassViewModel>(entityClass));
        }
 public void AddClass([FromBody] ClassInputModel inputModel)
 {
     this.ClassService.AddClass(inputModel);
 }
 public ClassViewModel EditClass([FromRoute] string id, [FromBody] ClassInputModel inputModel)
 {
     return(this.ClassService.EditClass(id, inputModel));
 }