public ActionResult ChangeAccountStatus(ChangeAccountStatusRequest request) { using (var db = new LibraryEntities()) { // select account associated with username var targetAccount = FindAccount(db, request.User); if (targetAccount == null) { // if user not found return(notification.ResetPasswordUserNotFound()); } var newStatus = new AccountStatusLog { AccountId = targetAccount.AccountId, AccountStatusTypeId = request.StatusId, LogDateTime = DateTime.Now }; using (var transaction = db.Database.BeginTransaction()) { try { db.AccountStatusLogs.Add(newStatus); db.SaveChanges(); transaction.Commit(); return(notification.UpdateAccountStatusSuccess()); } catch (Exception) { transaction.Rollback(); return(notification.UnknownError()); } } } }
/// <summary> /// Handle form request to register new user. /// </summary> /// <param name="request">Form data</param> /// <returns></returns> public ActionResult RegisterNewAccount(RegisterRequest request) { try { using (var db = new LibraryEntities()) { if (db.Logins.Where(x => x.Username == request.EmailAddress).Any()) { throw new ApplicationException( "A user with the email address " + request.EmailAddress + " already exists!"); } var newAccount = new Account { FirstName = request.FirstName, LastName = request.LastName, IsLibrarian = request.IsLibrarian }; string temporaryPassword = GenerateTemporaryPassword(); string temporaryPasswordHash = HashString(temporaryPassword); using (var transaction = db.Database.BeginTransaction()) { try { db.Accounts.Add(newAccount); db.SaveChanges(); var newLogin = new Login { AccountId = newAccount.AccountId, Username = request.EmailAddress, PasswordHash = temporaryPasswordHash, IsPasswordTemporary = true }; db.Logins.Add(newLogin); var accountStatus = new AccountStatusLog { AccountId = newAccount.AccountId, AccountStatusTypeId = 1, LogDateTime = DateTime.Now }; db.AccountStatusLogs.Add(accountStatus); db.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw e; } } return(notification.AddAccountSuccess(temporaryPassword)); } } catch { return(notification.AddAccountFailure()); } }