private ValidationFail GetValidationFailEntity(T_ValidationFail tFail)
		{
			ValidationFail fail = new ValidationFail();
			fail.ID = tFail.FailID;
			fail.PLC = tFail.vfPLC;
			fail.SDN = tFail.vfSDN;
			return fail;
		}
		public ExcListValidation GetExcListResultsByValidationID(int validationID)
		{
			using (var dc = new EngageCCTDataClassesDataContext())
			{
				T_ValidationFail tExcList = new T_ValidationFail();
				T_ValidationResult tResult = new T_ValidationResult();
				//int excType = dc.T_ValidationTypes
				//  .Where(t => t.vtDescription == ValidationConstants.FreddieList)
				//  .Select(i => i.TypeID)
				//  .First();
				int excType = (int)TypeValidation.ExclusionaryList;
				var res = dc.T_ValidationResults
					.Where(r => r.ValidationID == validationID && r.TypeID == excType)
					.FirstOrDefault();
				if (res == null)
					return null;
				tExcList = dc.T_ValidationFails.Where(l => l.FailID == res.FailID).FirstOrDefault();
				if (tExcList == null)
					return null;
				var table = GetExcListValidationEntity(tExcList);
				return table;
			}

		}
		private ExcListValidation GetExcListValidationEntity(T_ValidationFail tExc)
		{
			ExcListValidation excValidation = new ExcListValidation();
			excValidation.ID = tExc.FailID;
			excValidation.Result = tExc.vfExcList;
			return excValidation;
		}
		public int SaveExcList(int validationID, Lead lead, string status)
		{
			using (var dc = new EngageCCTDataClassesDataContext())
			{
				//int statusPassed = dc.T_ValidationStatus
				//  .Where(s => s.vsDescription == ValidationConstants.StatusPassed)
				//  .Select(st => st.StatusID)
				//  .First();
				//int statusFailed = dc.T_ValidationStatus
				//  .Where(s => s.vsDescription == ValidationConstants.StatusFailed)
				//  .Select(st => st.StatusID)
				//  .First();
				//int statusNoInfo = dc.T_ValidationStatus
				//  .Where(s => s.vsDescription == ValidationConstants.StatusNoInformation)
				//  .Select(st => st.StatusID)
				//  .First();

				int exRes = 0;
				T_ValidationResult tResult = new T_ValidationResult();
				T_ValidationFail tExcListValidation = new T_ValidationFail();
				LeadValidationManager tLeadVM = new LeadValidationManager();



				tResult.ValidationID = validationID;
				tResult.TypeID = dc.T_ValidationTypes
					.Where(t => t.vtDescription == ValidationConstants.FreddieList)
					.Select(tp => tp.TypeID)
					.First();

				if (status != ValidationConstants.StatusNoInformation)
				{
					var validResult = LeadValidationManager.SearchInExclusionaryList(lead);
					if (validResult != null)
					{
						exRes = (int)StatusValidation.Failed;
						tExcListValidation.vfExcList = tLeadVM.GetXmlExcListEntry(validResult);

						dc.T_ValidationFails.InsertOnSubmit(tExcListValidation);
						dc.SubmitChanges();
						tResult.StatusID = (int)StatusValidation.Failed;
						tResult.FailID = tExcListValidation.FailID;
						//---------------
					}
					else
					{
						exRes = (int)StatusValidation.Passed;
						tResult.StatusID = (int)StatusValidation.Passed;
						tResult.FailID = null;
					}
				}
				else
				{
					exRes = (int)StatusValidation.NoInformation;
					tResult.StatusID = (int)StatusValidation.NoInformation;
					tResult.FailID = null;
				}

				dc.T_ValidationResults.InsertOnSubmit(tResult);
				dc.SubmitChanges();
				return exRes;
			}
		}
		public int SaveOFAC(int validationID, Lead lead, string status)
		{
			using (var dc = new EngageCCTDataClassesDataContext())
			{
				//int statusPassed = dc.T_ValidationStatus
				//  .Where(s => s.vsDescription == ValidationConstants.StatusPassed)
				//  .Select(st => st.StatusID)
				//  .First();
				//int statusFailed = dc.T_ValidationStatus
				//  .Where(s => s.vsDescription == ValidationConstants.StatusFailed)
				//  .Select(st => st.StatusID)
				//  .First();
				//int statusNoInfo = dc.T_ValidationStatus
				//  .Where(s => s.vsDescription == ValidationConstants.StatusNoInformation)
				//  .Select(st => st.StatusID)
				//  .First();

				T_ValidationResult tResult = new T_ValidationResult();
				LeadValidationManager tLeadVM = new LeadValidationManager();
				T_ValidationFail tFail = new T_ValidationFail();
				//T_Lead tLead = new T_Lead();

				tResult.ValidationID = validationID;
				tResult.TypeID = dc.T_ValidationTypes
					.Where(t => t.vtDescription == ValidationConstants.OFAC).Select(tp => tp.TypeID).First();

				int validStat = 0;
				if (status != ValidationConstants.StatusNoInformation)
				{
					var resultSearchInPLC = LeadValidationManager.SearchInPLC(lead);
					var resultSearchInSDN = LeadValidationManager.SearchInSDN(lead);

					if (resultSearchInPLC == null && resultSearchInSDN == null)
					{
						validStat = (int)StatusValidation.Passed;
						tResult.FailID = null;
					}
					else
					{
						if (resultSearchInPLC != null)
						{
							tFail.vfPLC = tLeadVM.GetXmlPLC(resultSearchInPLC);
						}
						if (resultSearchInSDN != null)
						{
							tFail.vfSDN = tLeadVM.GetXmlSDN(resultSearchInSDN);
						}
						dc.T_ValidationFails.InsertOnSubmit(tFail);
						dc.SubmitChanges();
						tResult.FailID = tFail.FailID;
						validStat = (int)StatusValidation.Failed;
					}
				}
				else
				{
					validStat = (int)StatusValidation.NoInformation;
					tResult.FailID = null;
				}



				//  if (resultSearchInPLC != null || resultSearchInSDN != null)
				//  {
				//    if (resultSearchInPLC != null)
				//    {
				//      tFail.vfPLC = tLeadVM.GetXmlPLC(resultSearchInPLC);
				//    }
				//    if (resultSearchInSDN != null)
				//    {
				//      tFail.vfSDN = tLeadVM.GetXmlSDN(resultSearchInSDN);

				//    }
				//    dc.T_ValidationFails.InsertOnSubmit(tFail);
				//    dc.SubmitChanges();
				//    tResult.FailID = tFail.FailID;
				//  }

				//  if (resultSearchInPLC == null && resultSearchInSDN == null)
				//  {
				//    validStat = (int)StatusValidation.Passed;
				//    tResult.FailID = null;
				//    //
				//  }
				//  else
				//  {
				//    validStat = (int)StatusValidation.Failed;
				//  }

				//}
				//else
				//{
				//  validStat = (int)StatusValidation.NoInformation;
				//  tResult.FailID = null;
				//}

				tResult.StatusID = validStat;
				dc.T_ValidationResults.InsertOnSubmit(tResult);
				dc.SubmitChanges();

				return validStat;
			}
		}
 partial void DeleteT_ValidationFail(T_ValidationFail instance);
 partial void UpdateT_ValidationFail(T_ValidationFail instance);
 partial void InsertT_ValidationFail(T_ValidationFail instance);