Esempio n. 1
0
        /// <summary>
        /// Изменить пользователей в группе
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <BaseApiResponse> ChangeUsersInGroupAsync(ChangeUsersInUserGroupModel model)
        {
            var validation = ValidateModelAndUserIsAdmin(model);

            if (!validation.IsSucceeded)
            {
                return(validation);
            }

            if (model.UserActions == null || model.UserActions.Count == 0)
            {
                return(new BaseApiResponse(false, "Вы подали пустой массив изменений"));
            }

            var userGroupRepo = GetRepository <EccUserGroup>();

            var userInUserGrouopRelationRepo = GetRepository <EccUserInUserGroupRelation>();

            var userGroup = await userGroupRepo.Query().Include(x => x.Users).FirstOrDefaultAsync(x => x.Id == model.GroupId);

            if (userGroup == null)
            {
                return(new BaseApiResponse(false, "Группа не найдена по указанному идентификатору"));
            }

            foreach (var userToDelete in model.UserActions.Where(x => !x.AddOrDelete))
            {
                var user = userGroup.Users.FirstOrDefault(x => x.UserId == userToDelete.UserId);

                if (user != null)
                {
                    userInUserGrouopRelationRepo.DeleteHandled(user);
                }
            }

            foreach (var userToAddModel in model.UserActions.Where(x => x.AddOrDelete))
            {
                var userRelation = new EccUserInUserGroupRelation
                {
                    UserGroupId = model.GroupId,
                    UserId      = userToAddModel.UserId,
                };

                userInUserGrouopRelationRepo.CreateHandled(userRelation);
            }

            return(await TrySaveChangesAndReturnResultAsync("Пользователи в группе изменены"));
        }
Esempio n. 2
0
        /// <summary>
        /// Добавить пользователя в группу
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <BaseApiResponse> AddUserToGroupAsync(UserInUserGroupIdModel model)
        {
            var validation = ValidateModelAndUserIsAdmin(model);

            if (!validation.IsSucceeded)
            {
                return(validation);
            }

            var repo = GetRepository <EccUserGroup>();

            var group = await repo.Query().Include(x => x.Users).FirstOrDefaultAsync(x => x.Id == model.UserGroupId);

            if (group == null)
            {
                return(new BaseApiResponse(false, "Группа пользователей не найдена по указанному идентификатору"));
            }

            if (!await Query <EccUser>().AnyAsync(x => x.Id == model.UserId))
            {
                return(new BaseApiResponse(false, "Пользователь не найден по указанному идентификатору"));
            }

            if (group.Users.Any(x => x.UserGroupId == model.UserGroupId && x.UserId == model.UserId))
            {
                return(new BaseApiResponse(false, "Пользователь уже принадлежит данной группе"));
            }

            var relationRepo = GetRepository <EccUserInUserGroupRelation>();

            var userInUserGroupRelation = new EccUserInUserGroupRelation
            {
                UserId      = model.UserId,
                UserGroupId = model.UserGroupId,
            };

            relationRepo.CreateHandled(userInUserGroupRelation);

            return(await TrySaveChangesAndReturnResultAsync("Пользователь добавлен к группе"));
        }