// **************************************
        // DeleteUser
        // **************************************
        public static void DeleteUser(int userId, bool takeOwnerShip = false)
        {
            using (var ctx = new SongSearchContext()) {
                var user = ctx.Users.SingleOrDefault(x => x.UserId == userId);

                if (user != null) {
                    if (user.UserId == Account.User().UserId) {
                        throw new ArgumentException("You cannot delete yourself");
                    }
                    if (user.IsSuperAdmin() && GetNumberOfUsersByAccessLevel(Roles.SuperAdmin) <= 1) {
                        throw new ArgumentException("You cannot delete the last SuperAdmin");
                    } else {

                        //if (takeOwnerShip) {
                        //    ctx.TakeOwnerShip(user);
                        //}
                        ctx.ReParentOrphans(user, user.ParentUser);

                        if (user.CreatedCatalogs.Count() > 0) {

                            var userCats = user.CreatedCatalogs.ToList();

                            foreach (var cat in userCats) {
                                ctx.DeleteCatalog(cat.CatalogId);
                            }
                        }

                        if (user.Invitation != null) {
                            ctx.Invitations.DeleteObject(user.Invitation);
                        }
                        //handled via cascade in db
                        //user.ActiveCartContents.ToList().ForEach(x => user.ActiveCartContents.Remove(x));
                        //user.UserCatalogRoles.ToList().ForEach(x => user.UserCatalogRoles.Remove(x));
                        var balance = user.PlanBalance; // ctx.PlanBalances.SingleOrDefault(x => x.PlanBalanceId == user.PlanBalanceId);
                        if (balance != null) {
                            balance.Users.Remove(user);
                            if (balance.Users.Count() == 0) {
                                ctx.Delete(balance);
                            } else {
                                ctx.RemoveFromUserBalance(user);
                                if (user.IsAnyAdmin()) {
                                    ctx.RemoveFromAdminBalance(user);
                                }
                            }
                        }
                        ctx.Users.DeleteObject(user);
                        ctx.SaveChanges();

                    }
                }
            }
        }
示例#2
0
        // **************************************
        // RemoveFromUserBalance
        // **************************************
        public static void RemoveFromUserBalance(this User user)
        {
            using (var ctx = new SongSearchContext()) {

                ctx.RemoveFromUserBalance(user);
                if (user.RoleId == (int)Roles.Admin) {
                    ctx.RemoveFromAdminBalance(user);
                }
                ctx.SaveChanges();

            }
        }
        // **************************************
        // UpdateUsersRole
        // **************************************
        public static void ToggleSystemAdminAccess(int userId)
        {
            using (var ctx = new SongSearchContext()) {

                var user = ctx.GetUser(userId);

                var admin = (int)Roles.Admin;

                if (user != null && !user.IsSuperAdmin()) {

                    if (user.RoleId != admin) {
                        user.RoleId = admin;
                        ctx.AddToAdminBalance(user);
                    } else {
                        user.RoleId = (int)Roles.Client;
                        ctx.RemoveFromAdminBalance(user);
                    }

                    ctx.SaveChanges();

                }
            }
        }
示例#4
0
        // **************************************
        // RemoveFromAdminBalance
        // **************************************
        public static void RemoveFromAdminBalance(this User user)
        {
            using (var ctx = new SongSearchContext()) {

                ctx.RemoveFromAdminBalance(user);
                ctx.SaveChanges();
            }
        }