private AttackGroups CreateNewAttackGroup(DnsAttackModel model, IEnumerable <string> blockedIps, IEnumerable <string> blockedSubnets)
        {
            var newGroup = new AttackGroups {
                DateBegin = DateTimeOffset.UtcNow, Status = (int)AttackGroupStatusEnum.PendingCheck
            };
            var groupHistory = AddNewAttackGroupHistory(newGroup, AttackGroupStatusEnum.None);
            var attack       = AddNewAttack(model, newGroup);
            var history      = AddNewAttackHistory(attack, AttackStatusEnum.None);

            return(newGroup);
        }
        private AttackGroupHistories AddNewAttackGroupHistory(AttackGroups attackGroups, AttackGroupStatusEnum prevStatus)
        {
            var history = new AttackGroupHistories
            {
                Date          = DateTimeOffset.UtcNow,
                CurrentStatus = attackGroups.Status,
                PrevStatus    = (int)prevStatus,
                AttackGroup   = attackGroups,
                AttackGroupId = attackGroups.Id
            };

            attackGroups.GroupHistories.Add(history);
            return(history);
        }
 public AttackGroupViewModel CastToViewModel(AttackGroups attackGroup)
 {
     return(new AttackGroupViewModel
     {
         Summary = attackGroup.Attacks.GroupBy(x => x.Status).Select(x => new AttackGroupViewModel.AttacksSummaryViewModel
         {
             Count = x.Count(),
             Status = x.Key
         }).OrderBy(x => x.Status).ToList(),
         BlackDomain = attackGroup.Attacks.FirstOrDefault().BlackDomain,
         Status = attackGroup.Status,
         Id = attackGroup.Id,
         WhiteDomain = attackGroup.Attacks.FirstOrDefault().WhiteDomain
     });
 }
        private Attacks AddNewAttack(DnsAttackModel model, AttackGroups attackGroups)
        {
            var attack = new Attacks
            {
                BlackDomain   = model.BlackDomain,
                Ip            = model.Ip,
                Status        = (int)AttackStatusEnum.Intersection,
                WhiteDomain   = model.WhiteDomain,
                AttackGroup   = attackGroups,
                AttackGroupId = attackGroups.Id
            };

            attackGroups.Attacks.Add(attack);
            return(attack);
        }
 public async Task AddHistory(AttackGroups attackGroup, AttackGroupStatusEnum prevStatusEnum, bool commit = false)
 {
     attackGroup.GroupHistories.Add(new AttackGroupHistories
     {
         AttackGroupId = attackGroup.Id,
         Date          = DateTimeOffset.UtcNow,
         CurrentStatus = attackGroup.Status,
         PrevStatus    = (int)prevStatusEnum,
     });
     if (commit)
     {
         await _dnsDb.SaveChangesAsync();
     }
     else
     {
         await Task.FromResult(0);
     }
 }
 public async Task AddNote(AttackGroups attackGroup, string text, bool commit = false)
 {
     attackGroup.Notes.Add(new AttackNotes
     {
         AttackGroup   = attackGroup,
         AttackGroupId = attackGroup.Id,
         Date          = DateTimeOffset.UtcNow,
         Text          = text.Trim()
     });
     if (commit)
     {
         await _dnsDb.SaveChangesAsync();
     }
     else
     {
         await Task.FromResult(0);
     }
 }