Beispiel #1
0
 public void UpdateDeficient(DeficientsEntity entity)
 {
     entity.ATTRIBUTE_       = Attribute;
     entity.DEFICIENTNAME    = Name;
     entity.DEFICIENT        = Deficient ?? 0;
     entity.PERCENTDEFICIENT = PercentDeficient ?? 0;
     entity.CRITERIA         = Criteria;
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
        /// <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));
        }