Пример #1
0
        public async Task <IActionResult> Edit([FromBody] AttackEditParams data)
        {
            try
            {
                var attack = await _dnsDb.AttackGroups
                             .FirstOrDefaultAsync(x => x.Id == data.Id);

                if (attack != null)
                {
                    var prevStatus = attack.StatusEnum;
                    attack.Status = data.Status;
                    await _attackService.AddHistory(attack, prevStatus);

                    if (!data.Comment.IsBlank())
                    {
                        await _attackService.AddNote(attack, data.Comment);
                    }
                    await _dnsDb.SaveChangesAsync();

                    await _hubContext.Clients.All.SendAsync("UpdateAttack", _attackService.CastToViewModel(attack));

                    var attackMessage = await _notifyService.BuildAttackMessage(string.Empty, attack.Id);

                    await _redisService.Publish(RedisKeys.NOTIFY_SEND_CHANNEL, attackMessage.ProtoSerialize());

                    return(new JsonResult("Ok"));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "");
            }
            return(new JsonResult(null));
        }
Пример #2
0
        public async Task AttackList(DateTimeOffset?from, DateTimeOffset?to)
        {
            List <AttackGroups> attacks = null;

            if (!from.HasValue && !to.HasValue)
            {
                attacks = await _dbContext.AttackGroups
                          .Include(x => x.Attacks)
                          .ToListAsync();
            }
            else
            {
                var fromD = from?.Date ?? DateTimeOffset.UtcNow.Date;
                var toD   = to?.Date.AddDays(1).AddMilliseconds(-1) ?? DateTimeOffset.UtcNow.Date.AddDays(1).AddMilliseconds(-1);

                await _dbContext.AttackGroups
                .Include(x => x.Attacks)
                .Where(x => x.DateBegin >= fromD && x.DateBegin <= toD)
                .ToListAsync();
            }
            var attackModels = attacks
                               .OrderBy(x => x.Status)
                               .ThenByDescending(x => x.DateBegin)
                               .Select(x => _attackService.CastToViewModel(x))
                               .ToList();
            await Clients.Caller.SendAsync("attacks", attackModels);
        }