示例#1
0
        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());
                    }
                }
            }
        }
示例#2
0
        /// <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());
            }
        }