public Smlouva CreateSmlouva(Smlouva smlouva) { var context = DBContextSingleton.GetDBContext(); //check overlaping interval if (context.Smlouva.FirstOrDefault(t => t.PoskytovatelZdravotnichSluzebId == smlouva.PoskytovatelZdravotnichSluzebId && t.PojistovnaId == smlouva.PojistovnaId && t.TypSmlouvyId == smlouva.TypSmlouvyId && ((t.DatumDo != null && smlouva.DatumDo >= t.DatumOd && smlouva.DatumDo <= t.DatumDo) || //datumDo inside closed interval (t.DatumDo != null && smlouva.DatumOd <= t.DatumDo && smlouva.DatumOd >= t.DatumOd) || //datumOd inside closed interval (t.DatumDo == null && smlouva.DatumOd <= t.DatumOd) || //datumOd before not closed interval (t.DatumDo == null && smlouva.DatumDo <= t.DatumOd)) //datumDo before not closed interval ) != null) { throw new DateOverlapingException("Dates overlap importing Smlouva"); } context.Smlouva.Add(smlouva); //close previous interval(s) var toUpdate = context.Smlouva.Where(t => t.PoskytovatelZdravotnichSluzebId == smlouva.PoskytovatelZdravotnichSluzebId && t.PojistovnaId == smlouva.PojistovnaId && t.TypSmlouvyId == smlouva.TypSmlouvyId && t.DatumDo == null).ToList(); toUpdate.ForEach(t => t.DatumDo = smlouva.DatumOd.AddDays(-1)); context.SaveChanges(); return(context.Smlouva.FirstOrDefault(t => t.PoskytovatelZdravotnichSluzebId == smlouva.PoskytovatelZdravotnichSluzebId && t.PojistovnaId == smlouva.PojistovnaId && t.TypSmlouvyId == smlouva.TypSmlouvyId && t.DatumDo == null)); }
private void ImportSmlouva(ImportBatch importBatch) { foreach (Smlouva item in importBatch.Smlouvy) { int typSmlouvyId = _dataConnector.GetTypSmlouvy(item.TypSmlouvy, item.DatumOd).Id; int pojistovnaId = _dataConnector.GetPojistovna(item.PojistovnaZkratka).Id; int poskytovatelZdravotnichSluzebId = _dataConnector.GetPoskytovatelZdravotnichSluzeb(item.PoskytovatelZdravotnichSluzebNazev, item.PoskytovatelZdravotnichSluzebTypPZS).Id; EF.Smlouva smlouva = new EF.Smlouva() { PoskytovatelZdravotnichSluzebId = poskytovatelZdravotnichSluzebId, PojistovnaId = pojistovnaId, TypSmlouvyId = typSmlouvyId, DatumOd = item.DatumOd, DatumDo = item.DatumDo }; _dataConnector.CreateSmlouva(smlouva); } }