private static void AuditIncidents(int IncidentCount, PCSAudit _Audit, PCSDataContext _PCSContext) { if (IncidentCount < _Audit.IncidentRecordCount) { List <int> MissingIncidents = new List <int>(); for (int i = _Audit.IncidentStartSeqNumber; i <= _Audit.IncidentEndSeqNumber; i++) { int i_ = i; // avoid closure issues var exists = (from inc in _PCSContext.Incidents.Where(x => x.IncidentSeqNr == i_) join sl in _PCSContext.StaffLogins.Where() on inc.StaffLoginGUID equals sl.StaffLoginGUID where sl.LocationGUID == _Audit.LaneGuid select inc.IncidentGUID).Any(); if (!exists) { MissingIncidents.Add(i); } } TollDataImportDataRequestClient.RequestDataStatic(int.Parse(_Audit.Lane.LaneCode.Substring(0, 2)), DataTypeRequest.Incident, MissingIncidents); Log.LogInfoMessage(string.Format("Incidents missing between {0}h00 and {1}h00: {2}", _Audit.AuditHour - 1, _Audit.AuditHour, MissingIncidents.Count)); } }
/*private void AuditDateFiles(DateTime Date) * { * var PreviousDay = Date.PreviousDay(); * * using (PCSAgentDataContext PCSContext = new PCSAgentDataContext()) * { * foreach (Audit audit in PCSContext.AuditRepository.Get(x => x.TransAuditStatus != (int)AuditStatus.ValidatedCorrect || x.IncidentAuditStatus != (int)AuditStatus.ValidatedCorrect || * x.SessionAuditStatus != (int)AuditStatus.ValidatedCorrect || x.StaffLoginAuditStatus != (int)AuditStatus.ValidatedCorrect) * .Where(x => x.AuditDate >= PreviousDay) * .Take(20)) * { * Log.LogInfoMessage(string.Format("Auditing {0} {1} {2}", audit.Lane.LaneCode, audit.AuditDate.ToShortDateString(), audit.AuditHour)); * * Audit audit_ = audit; // avoid closure issues * DateTime StartDate = audit_.AuditDate.Date; * DateTime EndDate = audit_.AuditDate.Date.AddDays(1); * * var TransactionCount = PCSContext.TransactionRepository.Count(x => x.TransDate.Hour == audit_.AuditHour && x.TransDate > StartDate && x.TransDate < EndDate); * var IncidentCount = PCSContext.IncidentRepository.Count(x => x.IncidentSetDate.Hour == audit_.AuditHour && x.IncidentSetDate > StartDate && x.IncidentSetDate < EndDate); * var LoginsCount = PCSContext.StaffLoginRepository.Count(x => x.StartDate.Hour == audit_.AuditHour && x.StartDate > StartDate && x.StartDate < EndDate); * var SessionCount = PCSContext.SessionRepository.Count(x => x.StartDate.Hour == audit_.AuditHour && x.StartDate > StartDate && x.StartDate < EndDate); * * AuditTransactions(TransactionCount, audit, PCSContext); * AuditIncidents(IncidentCount, audit, PCSContext); * AuditStaffLogins(LoginsCount, audit); * AuditSessions(SessionCount, audit, PCSContext); * } * * PCSContext.Save(); * } * }*/ private static void AuditTransactions(int TransactionCount, PCSAudit _Audit, PCSDataContext _PCSContext) { if (TransactionCount < _Audit.TransRecordCount) { List <int> MissingTransactions = new List <int>(); for (int i = _Audit.TransStartSeqNumber; i <= _Audit.TransEndSeqNumber; i++) { int i_ = i; // avoid closure issues if (!_PCSContext.Transactions.Any(x => x.LaneTransSeqNr == i_ && x.Session.LaneGUID == _Audit.LaneGuid)) { MissingTransactions.Add(i); } } TollDataImportDataRequestClient.RequestDataStatic(int.Parse(_Audit.Lane.LaneCode.Substring(0, 2)), DataTypeRequest.Transaction, MissingTransactions); _Audit.TransAuditStatus = (int)AuditStatus.ValidatedIncorrect; Log.LogInfoMessage(string.Format("Transactions missing between {0}h00 and {1}h00: {2}", _Audit.AuditHour - 1, _Audit.AuditHour, MissingTransactions.Count)); } }