public async Task <IActionResult> UpdateAsync(Guid templateId, NewCookieTemplateDto newCookieTemplateDto) { if (templateId == Guid.Empty) { return(BadRequest($"Param {nameof(templateId)} is empty")); } var resource = await _resourceRepo.GetAsync(newCookieTemplateDto.ResourceId); if (resource == null) { return(BadRequest($"Resource {newCookieTemplateDto.ResourceId} not found")); } var template = await _cookieTemplateRepo.GetByTemplateAsync(templateId); if (template == null) { return(NotFound($"Template {templateId} not found")); } template.ResourceId = newCookieTemplateDto.ResourceId; template.Name = newCookieTemplateDto.Name; template.Domain = newCookieTemplateDto.Domain; _cookieTemplateRepo.Update(template); await _cookieTemplateRepo.SaveChangesAsync(); // send new cookie by resource id // templateId and resourceId -> users /* * var resources = await _clientRepo.GetByResourceAsync(newCookieTemplateDto.ResourceId); * foreach (var item in resources.Data) * { * var cookies = await _cookieRepo.GetByClientIdAsync(item.Id); * // этот кук полетит всем пользователям данног оклиента * var cookie = cookies.Data.SingleOrDefault(t => t.CookieTemplateId == templateId); * * var users = await _userRepo.GetByClientIdAsync(item.Id); * var emails = users.Select(t => t.Email); * var connectionIds = _connectionMapping.GetConnectionsByKeys(emails); * * await _cookieHub.Clients.Clients(connectionIds.ToList()).SendAsync("NewCookie", new * { * id = cookie.Id, * value = cookie.Value, * //expirationDate = cookie.ExpirationDate, * name = template.Name, * url = resource.Url * }); * } */ return(Ok($"Template {templateId} updated")); }
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)); }