/// <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("Группы пользователей изменены")); }
/// <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("Группа пользователей добавлена к рассылке")); }