コード例 #1
0
        public async Task <IActionResult> OnPostAsync(string specificationId)
        {
            Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId));

            Specification specification = await GetSpecification(specificationId);

            IsAuthorizedToEdit = await _authorizationHelper.DoesUserHavePermission(User, specification, SpecificationActionTypes.CanEditSpecification);

            if (!IsAuthorizedToEdit)
            {
                return(new ForbidResult());
            }

            if (!string.IsNullOrWhiteSpace(CreateSubPolicyViewModel.Name))
            {
                ApiResponse <Policy> existingPolicyResponse = await _specsClient.GetPolicyBySpecificationIdAndPolicyName(specificationId, CreateSubPolicyViewModel.Name);

                if (existingPolicyResponse.StatusCode != HttpStatusCode.NotFound)
                {
                    this.ModelState.AddModelError($"{nameof(CreateSubPolicyViewModel)}.{nameof(CreateSubPolicyViewModel.Name)}", ValidationMessages.PolicyNameAlreadyExists);
                }
            }

            if (!ModelState.IsValid)
            {
                SpecificationName = specification.Name;

                SpecificationId = specificationId;

                FundingPeriodName = specification.FundingPeriod.Name;

                FundingPeriodId = specification.FundingPeriod.Id;

                PopulatePolicies(specification);

                return(Page());
            }

            CreateSubPolicyModel policy = _mapper.Map <CreateSubPolicyModel>(CreateSubPolicyViewModel);

            policy.SpecificationId = specificationId;

            ApiResponse <Policy> newPolicyResponse = await _specsClient.CreatePolicy(policy);

            Policy newPolicy = newPolicyResponse.Content;

            return(Redirect($"/specs/policies/{specificationId}?operationType=SubpolicyCreated&operationId={newPolicy.Id}"));
        }
コード例 #2
0
        private async Task GeneratePolicies(SpecGeneratorConfiguration configuration, Specification specification)
        {
            int totalPolices = 1;

            if (configuration.NumberOfPolices.HasValue && configuration.NumberOfPolices.Value > 0)
            {
                totalPolices = configuration.NumberOfPolices.Value;
            }

            _logger.Information("Creating {totalPolices} policies for specification", totalPolices);

            for (int i = 0; i < totalPolices; i++)
            {
                int policyNumber = i + 1;
                CreatePolicyModel policyCreateModel = new CreatePolicyModel()
                {
                    SpecificationId = specification.Id,
                    Name            = $"Policy {policyNumber}",
                    Description     = "SpecGenerator",
                };

                await _specsClient.CreatePolicy(policyCreateModel);
            }
        }