Beispiel #1
0
        public bool Invoke(int appId, int user, UserRole newRole)
        {
            var userFromDB = userRepository.GetById(user);

            if (userFromDB == null || userFromDB.IsSuperAdmin && newRole == UserRole.SuperAdmin)
            {
                return(false);
            }

            var userApp = userAppRepository.FindBy(m => m.User.Id == user && m.App.Id == appId).FirstOrDefault();

            if (userApp == null && !userFromDB.IsSuperAdmin)
            {
                return(false);
            }

            if (userApp == null && userFromDB.IsSuperAdmin)
            {
                // Set IsSuperAdmin flag to false
                userFromDB.IsSuperAdmin = false;
                userRepository.Edit(userFromDB);
                userRepository.Save();

                // Add new user to this app with newRole
                var newUserApp = new UserAppModel
                {
                    AppId  = appId,
                    UserId = user,
                    Role   = newRole
                };

                addNewUserApp.Invoke(newUserApp);

                return(true);
            }

            var userRole = (UserRole)userApp.Role;

            if (userRole.Equals(newRole) || newRole > userRole)
            {
                if (!userFromDB.IsSuperAdmin)
                {
                    return(false);
                }

                // Set IsSuperAdmin flag to false
                userFromDB.IsSuperAdmin = false;
                userRepository.Edit(userFromDB);
                userRepository.Save();

                return(true);
            }

            userApp.Role = (DataAccess.Enums.UserRole)newRole;
            userAppRepository.Edit(userApp);
            userAppRepository.Save();

            return(true);
        }
        public bool Invoke(int userId, int appId)
        {
            var appToDelete = userAppRepository.FindBy(x => x.User.Id == userId && x.App.Id == appId).FirstOrDefault();

            if (appToDelete == null)
            {
                return(false);
            }

            userAppRepository.Delete(appToDelete);
            userAppRepository.Save();

            return(true);
        }
        public bool Invoke(int userId, int appId, ActionType type = ActionType.Display)
        {
            var user = userRepository.GetById(userId);

            if (user == null)
            {
                return(false);
            }

            if (user.IsSuperAdmin)
            {
                return(true);
            }

            var userToQuestionRole = userAppRepository.FindBy(x => x.User.Id == userId && x.App.Id == appId).FirstOrDefault();

            switch (type)
            {
            case ActionType.Edit:
                if (userToQuestionRole != null)
                {
                    return(userToQuestionRole.Role == UserRole.Manager);
                }
                break;

            case ActionType.Delete:
                if (userToQuestionRole != null)
                {
                    return(userToQuestionRole.Role == UserRole.Manager);
                }
                break;

            case ActionType.Display:
                return(userAppRepository.FindBy(x => x.User.Id == userId && x.App.Id == appId).Any());
            }
            return(false);
        }
        public UserRole Invoke(int appId, int userId)
        {
            var user = userRepository.GetById(userId);

            if (user.IsSuperAdmin)
            {
                return(UserRole.SuperAdmin);
            }

            var userAppRole = userAppRepository.FindBy(m => m.User.Id == userId && m.App.Id == appId).FirstOrDefault();

            if (userAppRole == null)
            {
                return(UserRole.None);
            }

            return((UserRole)Enum.Parse(typeof(UserRole), userAppRole.Role.ToString()));
        }
Beispiel #5
0
        public int Invoke(UserAppModel model)
        {
            var userApp = new DataAccess.Models.UserApps()
            {
                User = userRepository.GetById(model.UserId),
                App  = appRepository.GetById(model.AppId),
                Role = (DataAccess.Enums.UserRole)Enum.Parse(typeof(DataAccess.Enums.UserRole), model.Role.ToString()),
            };

            if (userApp.User == null ||
                userApp.App == null ||
                userAppRepository.FindBy(x => x.App.Id == userApp.App.Id && x.User.Id == userApp.User.Id).Any())
            {
                return(0);
            }

            userAppRepository.Add(userApp);
            userAppRepository.Save();

            return(userApp.Id);
        }
Beispiel #6
0
        public bool Invoke(int appId, int user, UserRole newRole)
        {
            var userFromDb = userRepository.GetById(user);

            if (userFromDb == null || userFromDb.IsSuperAdmin)
            {
                return(false);
            }

            if (newRole == UserRole.SuperAdmin)
            {
                userFromDb.IsSuperAdmin = true;
                userRepository.Edit(userFromDb);
                userRepository.Save();

                return(true);
            }

            var userApp = userAppRepository.FindBy(m => m.User.Id == user && m.App.Id == appId).FirstOrDefault();

            if (userApp == null)
            {
                return(false);
            }

            var userRole = (UserRole)userApp.Role;

            if (userRole.HasRole(newRole))
            {
                return(false);
            }

            userApp.Role = (DataAccess.Enums.UserRole)newRole;
            userAppRepository.Edit(userApp);
            userAppRepository.Save();

            return(true);
        }