public string ValidateExpenditureOcaCodeFromContract(Subcontract subcontract, string recordDate, string coveredService, string progCode) { DateTime date = DateTime.Parse(recordDate); if (subcontract != null) { if (subcontract.SubcontractServices != null && subcontract.SubcontractServices.Count > 0) { var result = subcontract.SubcontractServices.Where(s => s.CoveredServiceCode == coveredService && s.ProgramAreaCode == progCode && s.InternalEffectiveDate <= date && s.InternalExpirationDate >= date).LastOrDefault(); return((result != null) ? result.ExpenditureOcaCode : "OCA Not in Contract"); } } return("ContractError"); }
public void UpsertSubContract(Subcontract subcontract) { using (var db = new fasams_db()) { Subcontract existing = db.Subcontracts .Include(x => x.SubcontractServices) .Include(x => x.SubcontractOutputMeasures) .Include(x => x.SubcontractOutcomeMeasures) .SingleOrDefault(s => s.ContractNumber == subcontract.ContractNumber && s.SubcontractNumber == subcontract.SubcontractNumber && s.AmendmentNumber == subcontract.AmendmentNumber); if (existing == null) { db.Subcontracts.Add(subcontract); if (subcontract.SubcontractServices != null) { foreach (var row in subcontract.SubcontractServices) { row.ContractNumber = subcontract.ContractNumber; row.SubcontractNumber = subcontract.SubcontractNumber; row.AmendmentNumber = subcontract.AmendmentNumber; db.SubcontractServices.Add(row); } } if (subcontract.SubcontractOutputMeasures != null) { foreach (var row in subcontract.SubcontractOutputMeasures) { row.ContractNumber = subcontract.ContractNumber; row.SubcontractNumber = subcontract.SubcontractNumber; row.AmendmentNumber = subcontract.AmendmentNumber; db.SubcontractOutputMeasures.Add(row); } } if (subcontract.SubcontractOutcomeMeasures != null) { foreach (var row in subcontract.SubcontractOutcomeMeasures) { row.ContractNumber = subcontract.ContractNumber; row.SubcontractNumber = subcontract.SubcontractNumber; row.AmendmentNumber = subcontract.AmendmentNumber; db.SubcontractOutcomeMeasures.Add(row); } } } else { db.Entry(existing).CurrentValues.SetValues(subcontract); if (subcontract.SubcontractServices != null) { foreach (var row in subcontract.SubcontractServices) { var exRow = db.SubcontractServices.Find(row.SourceRecordIdentifier); if (exRow != null) { db.Entry(exRow).CurrentValues.SetValues(row); } else { db.SubcontractServices.Add(row); } } } if (subcontract.SubcontractOutputMeasures != null) { foreach (var row in subcontract.SubcontractOutputMeasures) { var exRow = db.SubcontractOutputMeasures.Find(row.ProgramAreaCode, row.ServiceCategoryCode, row.ContractNumber, row.SubcontractNumber, row.AmendmentNumber); if (exRow != null) { db.Entry(exRow).CurrentValues.SetValues(row); } else { db.SubcontractOutputMeasures.Add(row); } } } if (subcontract.SubcontractOutcomeMeasures != null) { foreach (var row in subcontract.SubcontractOutcomeMeasures) { var exRow = db.SubcontractOutcomeMeasures.Find(row.ProgramAreaCode, row.OutcomeMeasureCode, row.ContractNumber, row.SubcontractNumber, row.AmendmentNumber); if (exRow != null) { db.Entry(exRow).CurrentValues.SetValues(row); } else { db.SubcontractOutcomeMeasures.Add(row); } } } } db.SaveChanges(); } }