public async Task <ActionResult> Save(ProfessorFormViewModel form) { if (ModelState.IsValid) { ProfessorDto newProfessor = null; try { ProfessorDto professor = (form.IsNew) ? new ProfessorDto() : await _professorRepository.GetProfessorById(form.Id.Value); professor.FirstName = form.FirstName; professor.LastName = form.LastName; professor.Email = form.Email; professor.CellphoneNumber = form.CellphoneNumber; if (form.IsNew) { newProfessor = await _professorRepository.PostProfessor(professor); var registerBindingModel = new RegisterBindingModel { Email = professor.Email, Password = "******", UserId = newProfessor.Id, UserRole = "AppProfessor" }; await _accountRepository.RegisterAccount(registerBindingModel); } else { await _professorRepository.PutProfessor(professor.Id, professor); } AddPageAlerts(ViewHelpers.PageAlertType.Success, "Your changes have been saved succesfully."); return(RedirectToAction("Index")); } catch (BadRequestException bre) { AddErrorsFromAdycHttpExceptionToModelState(bre, ModelState); if (newProfessor != null) { await _accountRepository.DeleteAccount(newProfessor.Email); } } } // Add properties to layout AddPageHeader(form.Title, ""); AddBreadcrumb("Professors", Url.Action("Index", "Professors", new { area = "Admin" })); AddBreadcrumb(form.Title, ""); return(View("ProfessorForm", form)); }