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

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

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

            var repo = GetRepository <MailDistribution>();

            var mailDistribution = await repo.Query().Include(x => x.UserGroups).FirstOrDefaultAsync(x => x.Id == model.MailDistributionId);

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

            var set = GetRepository <MailDistributionUserGroupRelation>();

            foreach (var userGroupToDelete in model.UserGroupActions.Where(x => !x.AddOrDelete))
            {
                var user = mailDistribution.UserGroups.FirstOrDefault(x => x.GroupId == userGroupToDelete.UserGroupId);

                set.DeleteHandled(user);
            }

            foreach (var userGroupToAddModel in model.UserGroupActions.Where(x => x.AddOrDelete))
            {
                var mailDistributionUserGroupRelation = new MailDistributionUserGroupRelation
                {
                    MailDistributionId = model.MailDistributionId,
                    GroupId            = userGroupToAddModel.UserGroupId,
                };

                set.CreateHandled(mailDistributionUserGroupRelation);
            }

            return(await TrySaveChangesAndReturnResultAsync("Группы пользователей изменены"));
        }
Example #2
0
        /// <summary>
        /// Добавить группу пользователей в рассылку
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <BaseApiResponse> AddUserGroupToMailDistributionAsync(AddMailDistributionUserGroupRelation model)
        {
            var validation = ValidateModelAndUserIsAdmin(model);

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

            var repo = GetRepository <MailDistribution>();

            if (!await repo.Query().AnyAsync(x => x.Id == model.MailDistributionId))
            {
                return(new BaseApiResponse(false, "Рассылка не найдена по указанному идентификатору"));
            }

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

            var mailRelationRepo = GetRepository <MailDistributionUserGroupRelation>();

            if (await mailRelationRepo.Query().AnyAsync(x => x.MailDistributionId == model.MailDistributionId && x.GroupId == model.UserGroupId))
            {
                return(new BaseApiResponse(false, "Группа пользователей уже принадлежит данной рассылке"));
            }

            var mailDistributionUserGroupRelation = new MailDistributionUserGroupRelation
            {
                MailDistributionId = model.MailDistributionId,
                GroupId            = model.UserGroupId,
            };

            mailRelationRepo.CreateHandled(mailDistributionUserGroupRelation);

            return(await TrySaveChangesAndReturnResultAsync("Группа пользователей добавлена к рассылке"));
        }