public async Task <ResponseResult <SchoolTeacherViewModel> > AddTeacher(SchoolTeacherViewModel data, SchoolProfile school) { using (var trans = _context.Database.BeginTransaction()) { var r = Shared.String.GenerateRandom(4, false, true, false, false); var username = $"{data.FirstName[0]}{data.LastName.ToLower()}_{r}@{school.Name.Replace(" ", "_")}.com"; //check if studentID already exist while (_manager.GetList(o => o.User.UserName == username, o => o.User).Count() > 0) { r = Shared.String.GenerateRandom(4, false, true, false, false); username = $"{data.FirstName[0]}{data.LastName.ToLower()}_{r}@{school.Name.Replace(" ", "_")}.com"; } var user = new SchoolUser { UserName = username, Email = username, EmailConfirmed = true, //extended properties FirstName = data.FirstName, LastName = data.LastName, School = school, Type = UserType.Teacher, InsertedDateTime = DateTime.Now, UpdatedDateTime = DateTime.Now, }; var password = $"{data.LastName.ToProperCase()}{r}!"; var result = await _userManager.CreateAsync(user, password); if (result.Succeeded) { await _userManager.AddToRoleAsync(user, "Teacher"); var teacher = await _manager.AddAsync(new SchoolTeacher() { FirstName = data.FirstName, MiddleName = data.MiddleName, LastName = data.LastName, Position = data.Position, User = user }); data.Id = teacher.Id; await trans.CommitAsync(); } } return(ResponseResult <SchoolTeacherViewModel> .SetSuccess(data)); }
public async Task <ResponseResult <SchoolTeacherViewModel> > UpdateTeacher(SchoolTeacherViewModel data, SchoolProfile school) { using (var trans = _context.Database.BeginTransaction()) { var teacher = _manager.GetSingle(o => o.Id == data.Id); teacher.LastName = data.LastName; teacher.FirstName = data.FirstName; teacher.MiddleName = data.MiddleName; teacher.Position = data.Position; await _manager.UpdateAsync(teacher); await trans.CommitAsync(); } return(ResponseResult <SchoolTeacherViewModel> .SetSuccess(data)); }
public async Task <IActionResult> EditData(SchoolTeacherViewModel data) { var user = await CurrentUser(); if (Validate()) { var result = await _teacher.UpdateTeacher(data, user.School); if (result.Succeeded) { return(RedirectToAction("Success", new { message = "Updating teacher " + data.FullName + " succeeded!" })); } else { AddPageAlerts(PageAlertType.Warning, result.Error.Description); } } AddPageHeader("Teachers"); AddBreadcrumb("Teachers", "/teacher/" + user.School.Id); AddBreadcrumb(data.FullName, ""); return(View(data)); }