Пример #1
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("Пользователь добавлен к группе"));
        }
Пример #2
0
        /// <summary>
        /// Удалить пользователя из группы
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <BaseApiResponse> RemoveUserFromGroupAsync(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, "Пользователь не найден"));
            }

            var elem = group.Users.FirstOrDefault(x => x.UserGroupId == model.UserGroupId && x.UserId == model.UserId);

            if (elem == null)
            {
                return(new BaseApiResponse(false, "Пользователь уже не принадлежит к данной группе"));
            }

            var userInGroupRelationRepo = GetRepository <EccUserInUserGroupRelation>();

            userInGroupRelationRepo.DeleteHandled(elem);

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