示例#1
0
        /// <summary>
        /// Updates the user account.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="isApproved">if set to <c>true</c> [is approved].</param>
        /// <returns>
        /// An AccountTransactionStatus struct.
        /// </returns>
        public AccountTransactionStatus UpdateUserAccount(UserAddModel model, bool isApproved = true)
        {
            // Try to find user.
            AccountTransactionStatus status = new AccountTransactionStatus {
                HasUpdatedMembership = false, HasUpdatedStateAssignments = false, HasUpdatedRoles = false, HasUpdatedProfile = false
            };
            var container = this.FindUser(model.UserName);

            if (container.IsEmpty)
            {
                var logInfo = new LogInformation
                {
                    ClassName         = "AccountManager",
                    MethodName        = "UpdateUserAccount",
                    ArgumentsPassedIn = new string[] { JsonConvert.SerializeObject(model), isApproved.ToString() },
                    ErrorMessage      = "User was not found or does not exist."
                };

                this.logger.Error(JsonConvert.SerializeObject(logInfo));
            }
            else
            {
                // perform updates
                status.HasUpdatedMembership       = this.UpdateUser(container.User, model, container.Providers.Membership, isApproved);
                status.HasUpdatedProfile          = this.UpdateUserProfile(model.UserName, model);
                status.HasUpdatedRoles            = this.UpdateUserRoles(model.UserName, model.RoleSelections, container.Providers.Role);
                status.HasUpdatedStateAssignments = this.UpdateUserStateAssignments(model.UserName, model.CheckboxStateSelections, model.RadioSelectedState, container.Providers.Role);
            }

            return(status);
        }
示例#2
0
 internal protected AccountTransaction(
     string requestId,
     AccountTransactionType type,
     AccountTransactionStatus status,
     decimal amount,
     DateTime?transactionDate = null,
     string externalId        = null)
 {
     Status          = status;
     Type            = type;
     RequestId       = requestId;
     TransactionUN   = externalId;
     Amount          = amount;
     TransactionDate = transactionDate ?? DateTime.UtcNow;
     ValidFrom       = TransactionDate;
 }
示例#3
0
        /// <summary>
        /// Deletes the user account.
        /// </summary>
        /// <param name="userName">Name of the user.</param>
        /// <param name="adminName">Name of the admin deleting the user.</param>
        /// <returns>An AccountTransactionStatus struct.</returns>
        public AccountTransactionStatus DeleteUserAccount(string userName, string adminName)
        {
            AccountTransactionStatus status = new AccountTransactionStatus {
                HasUpdatedMembership = false, HasUpdatedStateAssignments = false, HasUpdatedRoles = false, HasUpdatedProfile = false
            };

            if (userName.Equals(adminName))
            {
                var logInfo = new LogInformation
                {
                    ClassName         = "AccountManager",
                    MethodName        = "UpdateUserAccount",
                    ArgumentsPassedIn = new string[] { userName, adminName },
                    ErrorMessage      = "Administrator tried to delete self."
                };
                this.logger.Error(JsonConvert.SerializeObject(logInfo));
                return(status);
            }

            var container = this.FindUser(userName);

            if (container.IsEmpty)
            {
                var logInfo = new LogInformation
                {
                    ClassName         = "AccountManager",
                    MethodName        = "UpdateUserAccount",
                    ArgumentsPassedIn = new string[] { userName, adminName },
                    ErrorMessage      = "User was not found or does not exist."
                };
                this.logger.Error(JsonConvert.SerializeObject(logInfo));
            }
            else
            {
                status.HasUpdatedStateAssignments = true;
                status.HasUpdatedRoles            = this.DeleteUserRoles(userName, container.Providers.Role);
                status.HasUpdatedProfile          = this.DeleteUserProfile(userName);
                status.HasUpdatedMembership       = this.DeleteUser(container.User, container.Providers);
            }

            return(status);
        }
示例#4
0
        /// <summary>
        /// Creates the user account.
        /// An account has up to four components:
        /// 1] Membership: credentials.
        /// 2] Profile.
        /// 3] Roles.
        /// 4] When applicable, state assignments.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="isApproved">if set to <c>true</c> [is approved].</param>
        /// <returns>
        /// An AccountTransactionStatus struct.
        /// </returns>
        public AccountTransactionStatus CreateUserAccount(UserAddModel model, bool isApproved = true)
        {
            var application = Application.EvalEngine;

            AccountTransactionStatus status = new AccountTransactionStatus {
                HasUpdatedMembership = false, HasUpdatedStateAssignments = false, HasUpdatedRoles = false, HasUpdatedProfile = false
            };

            var providersNames = GetProviderNamesFor(application);
            var userName       = this.CreateUser(model, providersNames.Membership, isApproved);

            if (userName != null)
            {
                status.HasUpdatedMembership       = true;
                status.HasUpdatedProfile          = this.UpdateUserProfile(userName, model);
                status.HasUpdatedRoles            = this.UpdateUserRoles(userName, model.RoleSelections, providersNames.Role);
                status.HasUpdatedStateAssignments = this.UpdateUserStateAssignments(userName, model.CheckboxStateSelections, model.RadioSelectedState, providersNames.Role);
            }

            return(status);
        }
示例#5
0
 /// <summary>
 /// Accounts the transaction was successful.
 /// </summary>
 /// <param name="status">The status.</param>
 /// <returns><c>true</c> if all the components of a user account were updated successfully. <c>false</c> otherwise.</returns>
 public static bool AccountTransactionWasSuccessful(AccountTransactionStatus status)
 {
     return(status.HasUpdatedMembership && status.HasUpdatedProfile && status.HasUpdatedRoles && status.HasUpdatedStateAssignments);
 }