public ActionResult Add(int id, int projectId, Requirement requirement) { ModelState.Remove("requirement.Project"); ModelState.Remove("requirement.SquareType"); try { // load the project step var projectStep = _projectService.GetProjectStep(id, CurrentUserId); if (ModelState.IsValid) { _projectService.SaveRequirement(projectId, projectStep.Step.SquareType.Id, requirement); Message = string.Format(Messages.Saved, "requirements"); return RedirectToAction(projectStep.Step.Action, projectStep.Step.Controller, new { id = projectStep.Id, projectId = projectStep.Project.Id }); } var viewModel = RequirementViewModel.Create(Db, _projectService, projectId, id, CurrentUserId, requirement); return View(viewModel); } catch (SecurityException) { return this.RedirectToAction<ErrorController>(a => a.NoAccessToStep()); } }
public static RequirementViewModel Create(SquareContext db, IProjectService projectService, int projectId, int projectStepId, string userId, Requirement requirement = null) { Check.Require(db != null, "db is required."); var viewModel = new RequirementViewModel(); viewModel.SetProjectInfo(projectService, projectId, projectStepId, userId); viewModel.Requirement = requirement ?? new Requirement(){RequirementId = string.Format("R{0}", viewModel.Project.Requirements.Count + 1)}; return viewModel; }
public static RequirementDefectViewModel Create(SquareContext db, IProjectService projectService, int projectId, int projectStepId, string userId, Requirement requirement, RequirementDefect requirementDefect = null) { Check.Require(db != null, "db is required."); Check.Require(projectService != null, "projectService is required."); Check.Require(requirement != null, "requirement is required."); var viewModel = new RequirementDefectViewModel(){Requirement = requirement, RequirementDefect = requirementDefect ?? new RequirementDefect()}; viewModel.SetProjectInfo(projectService, projectId, projectStepId, userId); return viewModel; }
public static RequirementCategoryViewModel Create(SquareContext db, IProjectService projectService, int projectId, int projectStepId, string userId, Requirement requirement) { Check.Require(db != null, "db is required."); Check.Require(projectService != null, "projectService is required."); Check.Require(requirement != null, "requirement is required."); var viewModel = new RequirementCategoryViewModel() {Requirement = requirement}; viewModel.SetProjectInfo(projectService, projectId, projectStepId, userId); viewModel.Categories = db.Categories.Where(a => a.SquareType.Id == viewModel.ProjectStep.Step.SquareType.Id && a.Project.Id == projectId).ToList(); return viewModel; }
/// <summary> /// Save a Requirement /// </summary> /// <param name="id">Project Id</param> /// <param name="squareType">Square Type Id</param> /// <param name="requirement"></param> /// <param name="modelState"></param> public void SaveRequirement(int id, int squareTypeId, Requirement requirement, int? requirementId = null) { using (var db = new SquareContext()) { var project = db.Projects.Where(a => a.Id == id).Single(); var squareType = db.SquareTypes.Where(a => a.Id == squareTypeId).Single(); // adding a new one if (!requirementId.HasValue) { requirement.Project = project; requirement.SquareType = squareType; db.Requirements.Add(requirement); } // updating an existing one else { // load the existing one var existingReq = db.Requirements.Where(a => a.Id == requirementId.Value).Single(); // update the values existingReq.RequirementId = requirement.RequirementId; existingReq.Name = requirement.Name; existingReq.RequirementText = requirement.RequirementText; existingReq.Source = requirement.Source; existingReq.Project = project; existingReq.SquareType = squareType; } try { db.SaveChanges(); } catch (DbEntityValidationException dbEx) { throw; } } }