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)); }
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); }