public static Control ToDataModel(this Contracts.Control.CreateControl create, RAAPEntities db) { var control = new Control { Name = create.Name, Description = create.Description, CreatedOn = DateTime.Now, UpdatedOn = DateTime.Now, ExecutedDate = create.ExecutedDate, Deadline = create.Deadline, InvestmentCost = create.InvestmentCost, LegalObligation = create.LegalObligation, MaintenanceCost = create.MaintenanceCost, ResponsibleUserId = create.ResponsibleUserId, Status = (int)create.Status, Type = (int)create.Type, ValidTo = create.ValidTo, ControlCategory = (create.Category != null ? db.ControlCategories.FirstOrDefault(cc => cc.ControlCategoryId == create.Category.ControlCategoryId) : null), React = create.React, Detect = create.Detect, Prevent = create.Prevent, AlertUserId = create.AlertUserId, AlertDate = create.AlertDate, Avoid = create.Avoid }; create.Evaluations.Where(e => e.EvaluationId == 0 && !string.IsNullOrEmpty(e.Text)).OrderBy(e => e.Revision) .ForEach(e => control.HtmlComments.Add(e.ToDataModel(db, control))); create.Risks.ForEach(r => control.ControlRisks.Add(r.ToDataModel())); return(control); }
public Contracts.Control.Control Create(Contracts.Control.CreateControl createControl) { using (var db = new RAAPEntities(GetConnectionString())) { if (db.Controls.Any(a => a.Name == createControl.Name)) { throw new RAAPConflictException("Name is already in use, please try another name."); } RiskCalculator.CheckRiskTypes(createControl, db); var process = createControl.ToDataModel(db); db.Controls.Add(process); db.SaveChanges(); return(process.ToContract(_userService)); } }