Esempio n. 1
0
        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"));
        }
Esempio n. 2
0
        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));
        }