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");
        }
Esempio n. 2
0
        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();
            }
        }