public void Handle(CreateRequirementVersionCommand command) { var queryResult = _specificationItemWithRequirementsQueryHandler.Handle(command.Id); var latestVersion = queryResult.Requirements.FirstOrDefault(s => s.IsLastVersion); foreach (var oldRequirementVersion in queryResult.Requirements) { oldRequirementVersion.IsLastVersion = false; } var package = _packageRepository.Get(command.PackageId.Value); if (!package.Active) { throw new Exception(Sentences.thisPackageWasRemoved); } queryResult.SpecificationItem.Package = package; var currentUser = _currentUserRetriever.Get(); var requirement = new Requirement(); requirement.Id = command.Id.Value; requirement.CreatorId = currentUser.Id; requirement.Difficulty = command.Difficulty.Value; requirement.Identifier = latestVersion.Identifier; requirement.IsLastVersion = true;; requirement.ProjectId = latestVersion.ProjectId; requirement.Rank = command.Rank.Value; requirement.SpecificationItem = queryResult.SpecificationItem; requirement.CreatorId = latestVersion.CreatorId; requirement.Version = latestVersion.Version + 1; requirement.Type = latestVersion.Type; foreach (var item in command.Items) { var content = new RequirementContent(); content.Action = item.Action; content.Subject = item.Subject; content.Condition = item.Condition; content.Id = requirement.Id; content.Locale = item.Locale; content.Version = requirement.Version; content.Requirement = requirement; _requirementContentRepository.Add(content); } _requirementRepository.Add(requirement); }
public static RequirementContentViewModel FromModel(RequirementContent model) { if (model == null) { return(null); } return(new RequirementContentViewModel { Id = model.Id, Locale = model.Locale, Subject = model.Subject, Action = model.Action, Condition = model.Condition, Version = model.Version }); }
public void Handle(AddRequirementTranslationCommand command) { var requirement = _lastVersionRequirementQueryHandler.Handle(command.Id); foreach (var item in command.Items) { var content = new RequirementContent(); content.Action = item.Action; content.Subject = item.Subject; content.Version = requirement.Version; content.Condition = item.Condition; content.Id = requirement.Id; content.Locale = item.Locale; content.Requirement = requirement; _requirementContentRepository.Add(content); } }
public void Handle(SaveRequirementCommand command) { var requirement = new Requirement(); var currentUser = _currentUserRetriever.Get(); requirement.CreatorId = currentUser.Id; requirement.Difficulty = command.Difficulty.Value; requirement.Id = Guid.NewGuid(); requirement.IsLastVersion = true; requirement.Rank = command.Rank.Value; foreach (var item in command.Items) { var content = new RequirementContent(); content.Action = item.Action; content.Subject = item.Subject; content.Condition = item.Condition; content.Id = requirement.Id; content.Locale = item.Locale; content.Version = 1; content.Requirement = requirement; _requirementContentRepository.Add(content); } var currentProjectId = _currentProjectContextId.Get(); if (currentProjectId == null) { throw new Exception(Sentences.noProjectInContext); } var project = _projectRepository.Get(currentProjectId.Value); var nextIdQuery = new RequirementNextIdQuery { ProjectId = project.Id, RequirementType = command.RequirementType }; var identifier = _requirementNextIdQueryHandler.Handle(nextIdQuery); var specificationItem = new SpecificationItem(); specificationItem.Active = true; specificationItem.Id = requirement.Id; specificationItem.Type = SpecificationItemType.Requirement; var prefix = RequirementViewModel.GetPrefixFromType(command.RequirementType.Value); specificationItem.Label = $"{prefix}{identifier}"; var package = _packageRepository.Get(command.PackageId.Value); if (!package.Active) { throw new Exception(Sentences.thisPackageWasRemoved); } specificationItem.Package = package; requirement.SpecificationItem = specificationItem; requirement.Type = command.RequirementType.Value; requirement.Creator = currentUser; requirement.Version = 1; requirement.Project = project; requirement.Identifier = identifier; _specificationItemRepository.Add(specificationItem); _requirementRepository.Add(requirement); }