Ejemplo n.º 1
0
        public IActionResult DeleteClass(int id)
        {
            var schoolClass = _classesService.GetById <ClassInputModel>(id);
            var inputModel  = new ClassModifyInputModel()
            {
                Id    = id,
                Class = schoolClass
            };

            return(View(inputModel));
        }
Ejemplo n.º 2
0
        public async Task EditAsync(ClassModifyInputModel modifiedModel)
        {
            var schoolClass = _classesRepository.All().FirstOrDefault(c => c.Id == modifiedModel.Id);

            if (schoolClass != null)
            {
                var inputModel = modifiedModel.Class;
                var teacherId  = int.Parse(inputModel.TeacherId);

                var isClassLetterNumberCombinationAlreadyOccupied = _classesRepository.All().Any(c =>
                                                                                                 c.Letter == inputModel.Letter &&
                                                                                                 c.YearCreated == inputModel.YearCreated &&
                                                                                                 c.Year == inputModel.Year &&
                                                                                                 c.TeacherId == teacherId);
                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}");
                }

                schoolClass.Letter      = inputModel.Letter;
                schoolClass.Year        = inputModel.Year;
                schoolClass.YearCreated = inputModel.YearCreated;

                if (schoolClass.TeacherId != 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");
                        }

                        if (teacher.SchoolId != schoolClass.Teacher.SchoolId)
                        {
                            var school = teacher.School;
                            school.Classes.Add(schoolClass);

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

                        // MUST be below the if above
                        schoolClass.Teacher = teacher;
                    }
                }

                _classesRepository.Update(schoolClass);
                await _classesRepository.SaveChangesAsync();
            }
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> EditClass(int id)
        {
            var user = await _userManager.GetUserAsync(User);

            var isAdmin = await IsAdmin();

            var schoolIds         = _schoolsServices.GetAllByUserId <SchoolViewModel>(user?.UniqueGradebookId, isAdmin).Select(s => s.Id);
            var teachersInSchools = _teachersService.GetAllBySchoolIds <TeacherViewModel>(schoolIds);
            var schoolClass       = _classesService.GetById <ClassInputModel>(id);
            var inputModel        = new ClassModifyInputModel()
            {
                Id       = id,
                Teachers = teachersInSchools.Select(t => new SelectListItem($"{t.FirstName} {t.LastName} ({t.SchoolName})", t.Id.ToString())).ToList(),
                Class    = schoolClass
            };

            return(View(inputModel));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> DeleteClass(ClassModifyInputModel inputModel, string onSubmitAction)
        {
            if (onSubmitAction.IsNullOrEmpty() || onSubmitAction == "Cancel")
            {
                return(RedirectToAction(nameof(Index)));
            }

            try
            {
                await _classesService.DeleteAsync(inputModel.Id);

                return(RedirectToAction("ClassesList", "Classes", new { area = string.Empty }));  // string is empty in order to exit current principal area
            }
            catch (Exception e)
            {
                _logger.LogError(e, $"An exception occured during student DELETE operation for class with id {inputModel.Id}. Ex: {e.Message}");
                return(RedirectToAction("Error", "Home"));
            }
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> EditClass(ClassModifyInputModel inputModel)
        {
            if (!ModelState.IsValid || inputModel.Class.TeacherId.IsNullOrEmpty())
            {
                //ToDo: in case of null teacher, return appropriate message or add model validation?
                return(View(inputModel));
            }

            try
            {
                await _classesService.EditAsync(inputModel);

                return(RedirectToAction("ById", "Classes", new { area = string.Empty, id = inputModel.Id }));
            }
            catch (Exception e)
            {
                _logger.LogError(e, $"An exception occured during student UPDATE operation for class with id {inputModel.Id}. Ex: {e.Message}");
                return(RedirectToAction("Error", "Home"));
            }
        }