using System; using System.Collections.Generic; using System.Linq; using System.Text; using Pilotfish.Afx.Services.Forms.Entities; using Neo.Legitimate.Data.Models; namespace Neo.Legitimate.Data { public class ChecklistHelpers { #region CleanChecklistTemplate public static IEnumerable CleanChecklistTemplate(IEnumerable documentChecklistTemplates, short applicationRequestTypeID, short modeID, bool isRenewal, bool isLtpsConversion, long workflowID) { var cleanedChecklist = new List(); var db = new LegitimateDatabase(); var applicationRequestTypes = GetRequiredApplicationTypes(applicationRequestTypeID, isRenewal, isLtpsConversion, workflowID); foreach (var rt in applicationRequestTypes) { foreach (var templateDocument in documentChecklistTemplates) { var document = rt.ApplicationRequestTypeDocuments.Where(a => a.DocumentTypes.Description == templateDocument.ChecklistTitle).FirstOrDefault(); ////if (document != null) ////{ ////if ( //// ((document.IsRequiredInMinibusTaxiMode.HasValue && document.IsRequiredInMinibusTaxiMode.Value) && (modeID == (short)Neo.Legitimate.Common.Mode.MinibusTaxi)) || //// ((document.IsRequiredInMidibusTaxiMode.HasValue && document.IsRequiredInMidibusTaxiMode.Value) && (modeID == (short)Neo.Legitimate.Common.Mode.Midibus)) || //// ((document.IsRequiredInBusMode.HasValue && document.IsRequiredInBusMode.Value) && (modeID == (short)Neo.Legitimate.Common.Mode.Bus)) || //// ((document.IsRequiredInMeteredTaxiMode.HasValue && document.IsRequiredInMeteredTaxiMode.Value) && (modeID == (short)Neo.Legitimate.Common.Mode.MeteredTaxi)) || //// ((document.IsRequiredInOtherMode.HasValue && document.IsRequiredInOtherMode.Value) && (modeID == (short)Neo.Legitimate.Common.Mode.Other)) //// ) ////{ //// if (!cleanedChecklist.Contains(templateDocument)) //// { //// cleanedChecklist.Add(templateDocument); //// } ////} ////} } } return cleanedChecklist; } #endregion #region CleanChecklistResults public static List CleanChecklistResults(List checklistResultList, short applicationRequestTypeID, short modeID, bool isRenewal, bool isLtpsConversion, long workflowID) { var cleanedChecklist = new List(); var db = new LegitimateDatabase(); var applicationRequestTypes = GetRequiredApplicationTypes(applicationRequestTypeID, isRenewal, isLtpsConversion, workflowID); foreach (var rt in applicationRequestTypes) { foreach (var checklistResult in checklistResultList) { var document = rt.ApplicationRequestTypeDocuments.Where(a => a.DocumentTypes.Description == checklistResult.ChecklistTemplateQuestion.ChecklistTemplate.ChecklistTitle).FirstOrDefault(); ////if (document != null) ////{ //// if ( //// ((document.IsRequiredInMinibusTaxiMode.HasValue && document.IsRequiredInMinibusTaxiMode.Value) && (modeID == (short)Neo.Legitimate.Common.Mode.MinibusTaxi)) || //// ((document.IsRequiredInMidibusTaxiMode.HasValue && document.IsRequiredInMidibusTaxiMode.Value) && (modeID == (short)Neo.Legitimate.Common.Mode.Midibus)) || //// ((document.IsRequiredInBusMode.HasValue && document.IsRequiredInBusMode.Value) && (modeID == (short)Neo.Legitimate.Common.Mode.Bus)) || //// ((document.IsRequiredInMeteredTaxiMode.HasValue && document.IsRequiredInMeteredTaxiMode.Value) && (modeID == (short)Neo.Legitimate.Common.Mode.MeteredTaxi)) || //// ((document.IsRequiredInOtherMode.HasValue && document.IsRequiredInOtherMode.Value) && (modeID == (short)Neo.Legitimate.Common.Mode.Other)) //// ) //// { //// if (!cleanedChecklist.Contains(checklistResult)) //// { //// cleanedChecklist.Add(checklistResult); //// } //// } ////} } } return cleanedChecklist; } #endregion #region GetRequiredApplicationTypes public static List GetRequiredApplicationTypes(short applicationRequestTypeID, bool isRenewal, bool isLtpsConversion, long workflowID) { var db = new LegitimateDatabase(); var applicationRequestTypes = new List(); var applicationRequestTypeIDs = new List(); #region Base Types if (applicationRequestTypeID >= 1 && applicationRequestTypeID <= 13 || applicationRequestTypeID == 27) { applicationRequestTypeIDs.Add(applicationRequestTypeID); } #endregion #region Renewal if (isRenewal) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.Renewal); } #endregion #region Ltps Conversion if (isLtpsConversion && applicationRequestTypeID != 5) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.ConversionLtpsToLegitimate); } #endregion #region Combined Types if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.RenewalAndCOV) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.Renewal); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.ReplacementsCOV); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.RenewalCOVAndIncreaseInCarryingCapacity) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.Renewal); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.ReplacementsCOV); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.IncreaseCarryingCapacity); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.RenewalAndDeceasedTransfer) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.Renewal); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.DeceasedTransfer); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.RenewalDeceasedTransferAndIncreaseInCarryingCapacity) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.Renewal); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.DeceasedTransfer); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.IncreaseCarryingCapacity); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.RenewalDeceasedTransferIncreaseInCarryingCapacityAndCOV) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.Renewal); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.DeceasedTransfer); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.IncreaseCarryingCapacity); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.ReplacementsCOV); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.DuplicateAndCOV) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.DuplicateLicence); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.ReplacementsCOV); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.DuplicateAndIncreaseInCarryingCapacity) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.DuplicateLicence); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.IncreaseCarryingCapacity); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.DuplicateCOVAndIncreaseInCarryingCapacity) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.DuplicateLicence); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.ReplacementsCOV); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.IncreaseCarryingCapacity); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.IncreaseInCarryingCapacityAndCOV) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.ReplacementsCOV); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.IncreaseCarryingCapacity); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.RenewalAndNormalTransfer) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.Renewal); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.NormalTransfer); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.RenewalNormalTransferAndCOV) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.Renewal); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.NormalTransfer); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.ReplacementsCOV); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.DeceasedTransferNewOL) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.DeceasedTransfer); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.NewOperatingLicence); } else if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.RenewalAndDeceasedTransferAndCOV) { applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.Renewal); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.DeceasedTransfer); applicationRequestTypeIDs.Add((short)Neo.Legitimate.Common.ApplicationRequestType.ReplacementsCOV); } #endregion #region Read required application request type and document from database foreach (var artId in applicationRequestTypeIDs.Distinct()) { var applicationRequestType = db.GetApplicationRequestType(artId, true); applicationRequestType.ApplicationRequestTypeDocuments = applicationRequestType.ApplicationRequestTypeDocuments.Where(a => a.WorkflowID == workflowID).ToList(); #region Remove the prdp docs for the new OL application type when doing a deceased transfer if (applicationRequestTypeID == (short)Neo.Legitimate.Common.ApplicationRequestType.DeceasedTransferNewOL && artId == (short)Neo.Legitimate.Common.ApplicationRequestType.NewOperatingLicence) { short[] prdpDocuments = { 1020, 1021, 1022 }; var tmpDocuments = applicationRequestType.ApplicationRequestTypeDocuments.Where(a => !prdpDocuments.Contains(a.DocumentTypes.DocumentTypeID)).ToList(); applicationRequestType.ApplicationRequestTypeDocuments = tmpDocuments; } #endregion applicationRequestTypes.Add(applicationRequestType); } #endregion return applicationRequestTypes; } #endregion } }