Example #1
0
 private static void RemoveUnusedAssets(Process process, Contracts.Process.UpdateProcess updateProcess)
 {
     foreach (var assetToDependOn in process.Assets.Where(c => updateProcess.Assets.All(uc => uc.AssetId != c.AssetId)).ToList())
     {
         process.Assets.Remove(assetToDependOn);
     }
 }
Example #2
0
 public Contracts.Process.Process Update(Contracts.Process.UpdateProcess updateProcess)
 {
     using (var db = new RAAPEntities(GetConnectionString()))
     {
         var process = db.Processes.FirstOrDefault(a => a.ProcessId == updateProcess.ProcessId);
         if (process == null)
         {
             throw new RAAPNotFoundException("Item not found.");
         }
         RiskCalculator.CheckRiskTypes(updateProcess, db);
         process.ApplyUpdate(updateProcess, db);
         RemoveUnusedAssets(process, updateProcess);
         AddAssets(db, process, updateProcess.Assets);
         RiskCalculator.CalculateRisk(process);
         db.SaveChanges();
         return(process.ToContract(_userService));
     }
 }
Example #3
0
        public static void ApplyUpdate(this Process dataItem, Contracts.Process.UpdateProcess update, RAAPEntities db)
        {
            dataItem.Enabled           = update.Enabled;
            dataItem.Name              = update.Name;
            dataItem.Description       = update.Description;
            dataItem.ProcessCategoryId = update.Category.ProcessCategoryId;
            dataItem.UpdatedOn         = DateTime.Now;
            dataItem.ResponsibleUserId = update.ResponsibleUserId;
            update.Evaluations.Where(e => e.EvaluationId == 0 && !string.IsNullOrEmpty(e.Text)).OrderBy(e => e.Revision).ForEach(e => dataItem.HtmlComments.Add(e.ToDataModel(db, dataItem)));
            //Remove deleted
            var risksToDelete = dataItem.ThreatRisks.Where(r => update.Risks.All(rr => rr.RiskId != r.ThreatRiskId)).ToArray();

            foreach (var risk in risksToDelete)
            {
                dataItem.ThreatRisks.Remove(risk);
            }
            //Update existing
            update.Risks.Where(r => r.RiskId > 0).ForEach(risk =>
                                                          dataItem.ThreatRisks.First(r => r.ThreatRiskId == risk.RiskId).UpdateFrom(risk));
            //Add new
            update.Risks.Where(r => r.RiskId <= 0).ForEach(risk => dataItem.ThreatRisks.Add(risk.ToDataModel()));
        }
 public IHttpActionResult Put([FromBody] Contracts.Process.UpdateProcess update)
 {
     ProcessService.Update(update);
     return(Ok());
 }