public void UpdateDeficient(DeficientsEntity entity) { entity.ATTRIBUTE_ = Attribute; entity.DEFICIENTNAME = Name; entity.DEFICIENT = Deficient ?? 0; entity.PERCENTDEFICIENT = PercentDeficient ?? 0; entity.CRITERIA = Criteria; }
public DeficientModel(DeficientsEntity entity) { Id = entity.ID_.ToString(); Attribute = entity.ATTRIBUTE_; Name = entity.DEFICIENTNAME; Deficient = entity.DEFICIENT ?? 0; PercentDeficient = entity.PERCENTDEFICIENT ?? 0; Criteria = entity.CRITERIA; }
/// <summary> /// Executes an upsert/delete operation on a simulation's deficient library data /// Throws a RowNotInTableException if no simulation is found /// </summary> /// <param name="model">DeficientLibraryModel</param> /// <param name="db">BridgeCareContext</param> /// <returns>DeficientLibraryModel</returns> public DeficientLibraryModel SaveSimulationDeficientLibrary(DeficientLibraryModel model, BridgeCareContext db) { var id = int.Parse(model.Id); if (!db.Simulations.Any(s => s.SIMULATIONID == id)) { throw new RowNotInTableException($"No scenario was found with id {id}."); } var simulation = db.Simulations.Include(s => s.DEFICIENTS).Single(s => s.SIMULATIONID == id); if (simulation.DEFICIENTS.Any()) { simulation.DEFICIENTS.ToList().ForEach(deficientEntity => { var deficientModel = model.Deficients.SingleOrDefault(m => m.Id == deficientEntity.ID_.ToString()); if (deficientModel == null) { DeficientsEntity.DeleteEntry(deficientEntity, db); } else { deficientModel.matched = true; deficientModel.UpdateDeficient(deficientEntity); } }); } if (model.Deficients.Any(m => !m.matched)) { db.Deficients .AddRange(model.Deficients .Where(deficientModel => !deficientModel.matched) .Select(deficientModel => new DeficientsEntity(id, deficientModel)) .ToList() ); } db.SaveChanges(); return(new DeficientLibraryModel(simulation)); }