Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }