コード例 #1
0
        public async Task <Result <int> > Handle(CreateAreaTagCommand request, CancellationToken cancellationToken)
        {
            var project = await _projectRepository.GetProjectOnlyByNameAsync(request.ProjectName);

            if (project == null)
            {
                project = await CreateProjectAsync(request.ProjectName);

                if (project == null)
                {
                    return(new NotFoundResult <int>($"Project with name {request.ProjectName} not found"));
                }
            }

            var areaTagToAdd = await CreateAreaTagAsync(request);

            if (!await SetAreaDataSuccessfullyAsync(areaTagToAdd, request.AreaCode))
            {
                return(new NotFoundResult <int>($"Area with code {request.AreaCode} not found"));
            }

            if (!await SetDisciplineDataSuccessfullyAsync(areaTagToAdd, request.DisciplineCode))
            {
                return(new NotFoundResult <int>($"Discipline with code {request.DisciplineCode} not found"));
            }

            project.AddTag(areaTagToAdd);
            await _unitOfWork.SaveChangesAsync(cancellationToken);

            return(new SuccessResult <int>(areaTagToAdd.Id));
        }
コード例 #2
0
        private async Task <Tag> CreateAreaTagAsync(CreateAreaTagCommand request)
        {
            var reqDefIds = request.Requirements.Select(r => r.RequirementDefinitionId).ToList();
            var reqDefs   = await _requirementTypeRepository.GetRequirementDefinitionsByIdsAsync(reqDefIds);

            var requirements = new List <TagRequirement>();

            foreach (var requirement in request.Requirements)
            {
                var reqDef = reqDefs.Single(rd => rd.Id == requirement.RequirementDefinitionId);
                requirements.Add(new TagRequirement(_plantProvider.Plant, requirement.IntervalWeeks, reqDef));
            }

            string purchaseOrderNo = null;
            string calloff         = null;

            if (request.TagType == TagType.PoArea)
            {
                if (string.IsNullOrEmpty(request.PurchaseOrderCalloffCode))
                {
                    throw new Exception($"Tags of type {TagType.PoArea} must have {nameof(request.PurchaseOrderCalloffCode)}");
                }
                var poParts = request.PurchaseOrderCalloffCode.Split('/');
                purchaseOrderNo = poParts[0].Trim();
                if (poParts.Length > 1)
                {
                    calloff = poParts[1].Trim();
                }
            }

            var step = await _journeyRepository.GetStepByStepIdAsync(request.StepId);

            return(new Tag(
                       _plantProvider.Plant,
                       request.TagType,
                       request.GetTagNo(),
                       request.Description,
                       step,
                       requirements)
            {
                PurchaseOrderNo = purchaseOrderNo,
                Calloff = calloff,
                Remark = request.Remark,
                StorageArea = request.StorageArea
            });
        }