public override void add(ref RequirementEntity entity, bool persistir = true) { try { if (checkProjectBalance(entity.ProjectID, entity.cost)) { unit.BeginTransaction(); ProjectEntity project = projectService.get(entity.ProjectID); entity.preTraceability = projectService.isPreTraceability(project); entity.versionNumber = 1; entity.active = true; if (entity.RequirementTemplateID.Equals(0)) { entity.RequirementTemplateID = null; } if (entity.RequirementSubTypeID.Equals(0)) { entity.RequirementSubTypeID = null; } Mapper.Initialize(cfg => { cfg.CreateAutomaticMapping <RequirementEntity, RequirementVersionsEntity>(); }); RequirementVersionsEntity version = new RequirementVersionsEntity(); version = Mapper.Map <RequirementEntity, RequirementVersionsEntity>(entity); version.RequirementRequestForChangesID = null; version.creationDate = DateTime.Now; version.rationale = "First version of the requirement."; base.add(ref entity, false); version.RequirementID = entity.RequirementID; versionService.add(ref version, false); foreach (var item in characteristicsService.getRequiredCharacteristics()) { RequirementCharacteristicsEntity req = new RequirementCharacteristicsEntity(); req.RequirementID = entity.RequirementID; req.CharacteristicsID = item.CharacteristicsID; req.check = false; requirementCharacteristicsService.add(ref req, false); } unit.Commit(); } else { throw new ArgumentException("The inclusion of this requirement exceeds the project balance!"); } } catch (Exception ex) { unit.Rollback(); throw ex; } }
public void update(ref RequirementEntity entity, int RequirementRequestForChangesID, string rationale) { try { if (checkProjectBalance(entity.ProjectID, entity.cost)) { unit.BeginTransaction(); entity.versionNumber += 1; if (entity.RequirementTemplateID.Equals(0)) { entity.RequirementTemplateID = null; } if (entity.RequirementSubTypeID.Equals(0)) { entity.RequirementSubTypeID = null; } Mapper.Initialize(cfg => { cfg.CreateAutomaticMapping <RequirementEntity, RequirementVersionsEntity>(); }); RequirementRequestForChangesEntity request = requestService.get(RequirementRequestForChangesID); request.RequestStatusID = 3; RequirementVersionsEntity version = new RequirementVersionsEntity(); version = Mapper.Map <RequirementEntity, RequirementVersionsEntity>(entity); version.creationDate = DateTime.Now; version.rationale = rationale; version.RequirementRequestForChangesID = request.RequirementRequestForChangesID; version.RequirementID = null; versionService.add(ref version, false); requestService.update(ref request, false); update(ref entity, false); unit.Commit(); } else { throw new ArgumentException("The inclusion of this requirement exceeds the project balance!"); } } catch (Exception ex) { unit.Rollback(); throw ex; } }