public bool DeleteRole(AppUser entity, int roleId, int updatedByUserId, ref string statusMessage)
        {
            bool isValid = true;

            if (entity == null || !IsValidGuid(entity.AspNetUserId))
            {
                statusMessage = "Error - please provide a value user identifier";
                return(false);
            }
            if (roleId < 1 || roleId > SiteReader)
            {
                statusMessage = "Error - please provide a value role identifier";
                return(false);
            }

            using (var context = new EntityContext())
            {
                try
                {
                    EM.AspNetUserRole efEntity = context.AspNetUserRoles
                                                 .SingleOrDefault(s => s.UserId == entity.AspNetUserId && s.RoleId == roleId.ToString());

                    if (efEntity != null && !string.IsNullOrWhiteSpace(efEntity.RoleId))
                    {
                        context.AspNetUserRoles.Remove(efEntity);
                        int count = context.SaveChanges();
                        if (count > 0)
                        {
                            isValid = true;
                            //TODO - add logging here or in the services
                        }
                    }
                    else
                    {
                        statusMessage = "Error - delete failed, as record was not found.";
                    }
                }
                catch (Exception ex)
                {
                    LoggingHelper.LogError(ex, thisClassName + string.Format(".Account_DeleteRole(), Email: {0}", entity.Email));
                    statusMessage = ex.Message;
                    isValid       = false;
                }
            }

            return(isValid);
        }
        public void UpdateRoles(string aspNetUserId, string[] roles)
        {
            using (var db = new EntityContext())
            {
                try
                {
                    var existRoles = db.AspNetUserRoles.Where(x => x.UserId == aspNetUserId.ToString());
                    var oldRoles   = existRoles.Select(x => x.RoleId).ToArray();

                    if (roles == null)
                    {
                        roles = new string[] { }
                    }
                    ;

                    //Add New Roles Selected
                    roles.Except(oldRoles).ToList().ForEach(x =>
                    {
                        var userRole = new EM.AspNetUserRole {
                            UserId = aspNetUserId, RoleId = x, Created = DateTime.Now
                        };
                        db.Entry(userRole).State = System.Data.Entity.EntityState.Added;
                    });

                    //Delete existing Roles unselected
                    existRoles.Where(x => !roles.Contains(x.RoleId)).ToList().ForEach(x =>
                    {
                        db.Entry(x).State = System.Data.Entity.EntityState.Deleted;
                    });

                    db.SaveChanges();
                }
                catch (Exception ex)
                {
                    LoggingHelper.LogError(ex, thisClassName + string.Format(".UpdateRoles(), aspNetUserId: {0}", aspNetUserId));
                    //statusMessage = ex.Message;
                }
            }
        }
        public bool AddRole(int userId, int roleId, int createdByUserId, ref string statusMessage)
        {
            bool   isValid      = true;
            string aspNetUserId = "";

            if (userId == 0)
            {
                statusMessage = "Error - please provide a valid user";
                return(false);
            }
            if (roleId < 1 || roleId > SiteReader)
            {
                statusMessage = "Error - please provide a valid role identifier";
                return(false);
            }

            AppUser user = AppUser_Get(userId);

            if (user != null && user.Id > 0)
            {
                aspNetUserId = user.AspNetUserId;
            }

            if (!IsValidGuid(aspNetUserId))
            {
                statusMessage = "Error - please provide a valid user identifier";
                return(false);
            }

            EM.AspNetUserRole efEntity = new EM.AspNetUserRole();
            using (var context = new EntityContext())
            {
                try
                {
                    efEntity.UserId  = aspNetUserId;
                    efEntity.RoleId  = roleId.ToString();
                    efEntity.Created = System.DateTime.Now;

                    context.AspNetUserRoles.Add(efEntity);

                    // submit the change to database
                    int count = context.SaveChanges();
                    if (count > 0)
                    {
                        statusMessage = "successful";
                        //other, maybe notification
                    }
                    else
                    {
                        //?no info on error
                        statusMessage = "Error - the Account_AddRole was not successful. ";
                        string message = string.Format("AccountManager. Account_AddRole Failed", "Attempted to add an Account_AddRole. The process appeared to not work, but was not an exception, so we have no message, or no clue. Email: {0}, roleId {1}, requestedBy: {2}", user.Email, roleId, createdByUserId);
                        EmailManager.NotifyAdmin("	Manager. Account_AddRole Failed", message);
                    }
                }
                catch (Exception ex)
                {
                    LoggingHelper.LogError(ex, thisClassName + string.Format(".Account_AddRole(), Email: {0}", user.Email));
                    statusMessage = ex.Message;
                    isValid       = false;
                }
            }

            return(isValid);
        }