public static AuditReviewTrackingViewModel ComplianceVisitsFrom(ComplianceVisits source, IDictionary <byte, string> messageIDs) { return(source == null ? new AuditReviewTrackingViewModel() : new AuditReviewTrackingViewModel { ReviewNumberName = "Visit", Reviews = (from r in source.Visits group r by r.CommitteeID).ToDictionary(g => g.Key, g => g.Select(r => AuditReviewFrom(r, messageIDs.ContainsKey(r.Number) ? messageIDs[r.Number] : null))), CommiteeNames = GetNamesFrom(source.Visits), IsComplianceVisits = true }); }
/// <summary> /// Retrieves all compliance visits on record for the specified candidate and election cycle. /// </summary> /// <param name="candidateID">The ID of the candidate whose compliance visits are to be retrieved.</param> /// <param name="electionCycle">The election cycle in which to search.</param> /// <returns>A <see cref="ComplianceVisits"/> collection of all compliance visits on record for the specified candidate and election cycle.</returns> public ComplianceVisits GetComplianceVisits(string candidateID, string electionCycle) { using (ComplianceVisitTds ds = new ComplianceVisitTds()) { using (ComplianceVisitsTableAdapter ta = new ComplianceVisitsTableAdapter()) { ta.Fill(ds.ComplianceVisits, candidateID, electionCycle); } ComplianceVisits c = new ComplianceVisits(); foreach (ComplianceVisitTds.ComplianceVisitsRow row in ds.ComplianceVisits.Rows) { short number = row.Number; //fetch applicable dates and create a new ComplianceVisit object as appropriate ComplianceVisit visit = new ComplianceVisit(row.ElectionCycle.Trim(), ParseCommitteeID(row.CommitteeID), number > byte.MaxValue ? byte.MaxValue : Convert.ToByte(number), row.AppointmentDate.Date) { LastUpdated = row.LastUpdated, SentDate = (row.IsLetterCertifiedDateNull()) ? (row.IsLetterSentDateNull()) ? null : row.LetterSentDate as DateTime? : row.LetterCertifiedDate, CommitteeName = row.CommitteeName.Trim() }; // response due if due date is after letter sent date if (!row.IsResponseDueDateNull() && visit.SentDate.HasValue && (visit.SentDate.Value < row.ResponseDueDate)) { CVResponseDeadline deadline = new CVResponseDeadline(row.ResponseDueDate.Date, visit); if (!row.IsResponseReceivedDateNull()) { deadline.ResponseReceivedDate = row.ResponseReceivedDate; } if (!row.IsExtensionDueDateNull() && !row.IsExtensionGrantedDateNull()) { deadline.GrantExtension(row.ExtensionDueDate.Date, row.ExtensionGrantedDate, null); } visit.ResponseDeadline = deadline; c.ResponseDeadlines.Add(deadline); } c.Visits.Add(visit); } return(c); } }