public async Task <IActionResult> Create(NewClientDto contract) { var resource = await _resourceRepo.GetAsync(contract.ResourceId, include : true); if (resource == null) { return(NotFound("Не найден")); } var cookieName = resource.Clients.SingleOrDefault(t => t.Name == contract.Name); if (cookieName != null) { return(BadRequest("Такое наименование уже существует")); } var client = new Client { Name = contract.Name, ResourceId = contract.ResourceId }; await _clientRepo.CreateClientAsync(client); await _clientRepo.SaveChangesAsync(); // Из шаблонов берем список куков и заполняем. var cookies = resource.CookieTemplates.Select(t => new Cookie { ClientId = client.Id, CookieTemplateId = t.Id }).ToArray(); await _cookieRepo.CreateRangeCookieAsync(cookies); await _cookieRepo.SaveChangesAsync(); return(Ok(new ClientDto { Id = client.Id, Name = client.Name, Cookies = cookies.Select(async t => { var cookieTemplate = await _cookieTemplateRepo.GetByTemplateAsync(t.CookieTemplateId); return new CookieDto { Value = t.Value, Id = t.Id, }; }).Select(t => t.Result).ToArray() })); }
public async Task <IActionResult> CreateAsync(NewCookieTemplateDto newCookieTemplateDto) { var cookieTemplate = new CookieTemplate { Domain = newCookieTemplateDto.Domain, Name = newCookieTemplateDto.Name, ResourceId = newCookieTemplateDto.ResourceId }; await _cookieTemplateRepo.CreateAsync(cookieTemplate); await _cookieTemplateRepo.SaveChangesAsync(); // Добавляем новые шаблоны в куки var clients = await _clientRepo.GetByResourceAsync(newCookieTemplateDto.ResourceId); var cookies = clients.Data.Select(t => new Cookie { ClientId = t.Id, CookieTemplateId = cookieTemplate.Id }).ToArray(); await _cookieRepo.CreateRangeCookieAsync(cookies); await _cookieRepo.SaveChangesAsync(); // TODO: Уведомлять всех пользователей что теперь по такому что куку нужно отправлять значение //var users = //var connection = _connectionMapping.GetConnections(user.Email); //await _cookieHub.Clients.AllExcept(new string[] { connection.SingleOrDefault() }).SendAsync("NewCookie", new //{ // id = cookie.Id, // value = cookie.Value, // name = template.Name, // url = resource.Url //}); return(Ok(cookieTemplate)); }