public IActionResult DeleteClass(int id) { var schoolClass = _classesService.GetById <ClassInputModel>(id); var inputModel = new ClassModifyInputModel() { Id = id, Class = schoolClass }; return(View(inputModel)); }
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(); } }
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)); }
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")); } }
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")); } }