public IActionResult DeleteParent(int id) { var parent = _parentsService.GetById <ParentInputModel>(id); var inputModel = new ParentModifyInputModel() { Id = id, Parent = parent }; return(View(inputModel)); }
public async Task EditAsync(ParentModifyInputModel modifiedModel) { var parent = _parentsRepository.All().FirstOrDefault(p => p.Id == modifiedModel.Id); if (parent != null) { var studentIds = modifiedModel.Parent.StudentIds.Select(int.Parse).ToList(); if (!studentIds.Any()) // Make sure parent has student children { throw new ArgumentException($"Sorry, it's mandatory for a parent user to have at least 1 student"); } if (HasDifferentStudentIds(parent, studentIds) && studentIds.Any()) { var students = _studentsRepository.All().Where(s => studentIds.Contains(s.Id)); // Remove all pairs that are no longer valid foreach (var studentParent in parent.StudentParents.Where(sp => !studentIds.Contains(sp.StudentId))) { _studentParentsMappingRepository.Delete(studentParent); } foreach (var studentId in studentIds.Where(sid => !parent.StudentParents.Select(sp => sp.StudentId).Contains(sid))) { var student = _studentsRepository.All().FirstOrDefault(s => s.Id == studentId); if (student != null) { var studentParentPair = new StudentParent { Student = student, Parent = parent }; await _studentParentsMappingRepository.AddAsync(studentParentPair); } } await _studentParentsMappingRepository.SaveChangesAsync(); } parent.FirstName = modifiedModel.Parent.FirstName; parent.LastName = modifiedModel.Parent.LastName; parent.PhoneNumber = modifiedModel.Parent.PhoneNumber; _parentsRepository.Update(parent); await _parentsRepository.SaveChangesAsync(); } }
public async Task <IActionResult> EditParent(int id) { var user = await _userManager.GetUserAsync(User); var isAdmin = await IsAdmin(); var schools = _schoolsServices.GetAllByUserId <SchoolViewModel>(user?.UniqueGradebookId, isAdmin).ToList(); var students = _studentsService.GetAllBySchoolIds <StudentViewModel>(schools.Select(s => s.Id)); var parent = _parentsService.GetById <ParentInputModel>(id); var inputModel = new ParentModifyInputModel { Id = id, Students = students.Select(s => new SelectListItem($"{s.FirstName} {s.LastName} ({s.SchoolName})", s.Id.ToString())).ToList(), Parent = parent }; return(View(inputModel)); }
public async Task <IActionResult> DeleteParent(ParentModifyInputModel inputModel, string onSubmitAction) { if (onSubmitAction.IsNullOrEmpty() || onSubmitAction == "Cancel") { return(RedirectToAction(nameof(Index))); } try { await _parentsService.DeleteAsync(inputModel.Id); return(RedirectToAction(nameof(Index))); } catch (Exception e) { _logger.LogError(e, $"An exception occured during student DELETE operation for parent with id {inputModel.Id}. Ex: {e.Message}"); return(RedirectToAction("Error", "Home")); } }
public async Task <IActionResult> EditParent(ParentModifyInputModel inputModel) { if (!ModelState.IsValid || !inputModel.Parent.StudentIds.Any()) { return(View(inputModel)); } try { await _parentsService.EditAsync(inputModel); return(RedirectToAction(nameof(Index))); } catch (Exception e) { _logger.LogError(e, $"An exception occured during student UPDATE operation for parent with id {inputModel.Id}. Ex: {e.Message}"); return(RedirectToAction("Error", "Home")); } }