コード例 #1
0
        public IActionResult DeleteParent(int id)
        {
            var parent     = _parentsService.GetById <ParentInputModel>(id);
            var inputModel = new ParentModifyInputModel()
            {
                Id     = id,
                Parent = parent
            };

            return(View(inputModel));
        }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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"));
            }
        }
コード例 #5
0
        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"));
            }
        }