/// <summary> /// Update parent /// </summary> /// <param name="parentUpdate"></param> /// <returns></returns> public async Task <ParentDto> UpdateParent(ParentUpdateDto parentUpdate) { ParentUser user = db.ParentsRepository.Get(a => a.Id == parentUpdate.Id).FirstOrDefault(); if (user == null) { // 404, Not found. // No reason for an exception I think return(null); } ParentsConverter.UpdateParentsPersonalData(user, parentUpdate); var result = await db.AuthRepository.UpdateUser(user); if (!result.Succeeded) { var ex = new UserUpdateException(result.Errors.ToArray()); ex.Data.Add("IdentityResultErrors", result.Errors.ToArray()); throw ex; } var updatedUser = db.ParentsRepository.Get(a => a.Id == parentUpdate.Id).FirstOrDefault(); return(ParentsConverter.ParentToParentDto(updatedUser)); }
/// <summary> /// Update full entity from dto before sending to the storage /// </summary> /// <param name="user"></param> /// <param name="dto"></param> public static void UpdateParentsPersonalData(ParentUser user, ParentUpdateDto dto) { user.UserName = dto.UserName; user.FirstName = dto.FirstName; user.LastName = dto.LastName; user.Gender = dto.Gender; user.Email = dto.Email; user.PhoneNumber = dto.PhoneNumber; }
public ParentUser GetParentById(int parentId) { ParentUser parent = db.ParentsRepository.Get(p => p.Id == parentId).FirstOrDefault(); if (parent == null) { // Not exception but return NotFound from controller. return(null); } return(parent); }
/// <summary> /// Convert a parent model to parent dto /// </summary> /// <param name="parent">A parent (full) model</param> /// <returns>Parent Dto object, ready for Json serialization</returns> public static ParentDto ParentToParentDto(ParentUser parent) { return(new ParentDto() { ParentId = parent.Id, UserName = parent.UserName, FirstName = parent.FirstName, LastName = parent.LastName, Gender = parent.Gender, Email = parent.Email, PhoneNumber = parent.PhoneNumber }); }
public static ParentReportDto ParentToParentReportDto(ParentUser parent) { var report = new ParentReportDto() { ParentId = parent.Id, FirstName = parent.FirstName, LastName = parent.LastName, Email = parent.Email, Gender = parent.Gender, Students = parent.StudentParents.Select(sp => Converters.StudentsConverter.StudentToStudentReportDto(sp.Student)) }; return(report); }
/// <summary> /// Register a parent user (used from the accounts controller) /// </summary> /// <param name="parent"></param> /// <param name="password"></param> /// <returns></returns> public async Task <IdentityResult> RegisterParentUser(ParentUser parent, string password) { logger.Trace("Register Parent {@userName}", parent.UserName); var result = await _userManager.CreateAsync(parent, password); if (!result.Succeeded) { return(result); } _userManager.AddToRole(parent.Id, "parents"); return(result); }
public StudentParent CreateStudentParent(int studentId, int parentId) { StudentUser student = studentsService.Value.GetStudentById(studentId); ParentUser parent = parentsService.Value.GetParentById(parentId); StudentParent newStudentParent = new StudentParent() { Student = student, Parent = parent }; db.StudentParentsRepository.Insert(newStudentParent); db.Save(); return(newStudentParent); }
public static GradeNotificationDto GradeToGradeNotificationDto(Grade grade, ParentUser parent) { return(new GradeNotificationDto() { ParentFirstName = parent.FirstName, ParentLastName = parent.LastName, ParentEmail = parent.Email, StudentFirstName = grade.Taking.Student.FirstName, StudentLastName = grade.Taking.Student.LastName, TeacherFirstName = grade.Taking.Program.Teaching.Teacher.FirstName, TeacherLastName = grade.Taking.Program.Teaching.Teacher.LastName, Course = grade.Taking.Program.Teaching.Course.Name, ClassRoom = grade.Taking.Program.ClassRoom.Name, GradePoint = grade.GradePoint.ToString(), Assigned = grade.Assigned.ToShortDateString() }); }
/// <summary> /// Register a parent /// </summary> /// <param name="userModel"></param> /// <returns></returns> public async Task <ParentDto> RegisterParent(ParentRegistrationDto userModel) { ParentUser user = ParentsConverter.ParentRegistrationDtoToParent(userModel); var result = await db.AuthRepository.RegisterParentUser(user, userModel.Password); if (!result.Succeeded) { var ex = new UserRegistrationException(result.Errors.ToArray()); ex.Data.Add("IdentityResultErrors", result.Errors.ToArray()); throw ex; } user = await db.AuthRepository.FindUserByUserName(userModel.UserName) as ParentUser; return(ParentsConverter.ParentToParentDto(user)); }
public IEnumerable <StudentDto> GetAllChildren(int parentId) { ParentUser parent = db.ParentsRepository.Get(p => p.Id == parentId).FirstOrDefault(); if (parent == null) { return(null); } return(parent.StudentParents.Select(c => new StudentDto() { FirstName = c.Student.FirstName, LastName = c.Student.LastName, ClassRoom = c.Student.ClassRoom.Name, ClassRoomId = c.Student.ClassRoom.Id, StudentId = c.Student.Id })); }
public StudentParent GetStudentParent(int studentId, int parentId) { StudentUser student = studentsService.Value.GetStudentById(studentId); ParentUser parent = parentsService.Value.GetParentById(parentId); var studentParent = db.StudentParentsRepository.Get(sp => sp.StudentId == studentId && sp.ParentId == parentId).FirstOrDefault(); if (studentParent == null) { logger.Info("Student {@studentId} is not related to Parent {@parentId}", studentId, parentId); var ex = new StudentParentNotFoundException(string.Format("Student {0} is not related to Parent {1}", studentId, parentId)); ex.Data.Add("studentId", studentId); ex.Data.Add("parentId", parentId); throw ex; } return(studentParent); }
/// <summary> /// Add a student to the parent as a child /// </summary> /// <param name="parentId"></param> /// <param name="studentId"></param> /// <returns></returns> public ParentChildrenDto AddChild(int parentId, int studentId) { logger.Info("Make {@userId} parent of {@userId}", parentId, studentId); ParentUser parent = db.ParentsRepository.Get(p => p.Id == parentId).FirstOrDefault(); if (parent == null) { return(null); } StudentUser student = db.StudentsRepository.Get(s => s.Id == studentId).FirstOrDefault(); if (student == null) { return(null); } StudentParent sp = new StudentParent() { Student = student, Parent = parent }; db.StudentParentsRepository.Insert(sp); db.Save(); // What even to return??? return(new ParentChildrenDto() { Name = parent.FirstName + " " + parent.LastName, ParentId = parent.Id, Children = parent.StudentParents.Select(c => new StudentDto() { FirstName = c.Student.FirstName, LastName = c.Student.LastName, ClassRoom = c.Student.ClassRoom.Name, ClassRoomId = c.Student.ClassRoom.Id, StudentId = c.Student.Id }).ToList() }); }
public ParentReportDto GetParentReport(int parentId) { ParentUser parent = GetParentById(parentId); return(Converters.ParentsConverter.ParentToParentReportDto(parent)); }