示例#1
0
        public async Task <IActionResult> SaveCalculation(string specificationId, string calculationId, [FromBody] CalculationUpdateViewModel vm)
        {
            Guard.ArgumentNotNull(specificationId, nameof(specificationId));
            Guard.ArgumentNotNull(calculationId, nameof(calculationId));
            Guard.ArgumentNotNull(vm, nameof(vm));

            if (!await _authorizationHelper.DoesUserHavePermission(User, specificationId, SpecificationActionTypes.CanEditCalculations))
            {
                return(new ForbidResult());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            CalculationUpdateModel    update   = _mapper.Map <CalculationUpdateModel>(vm);
            ApiResponse <Calculation> response = await _calcClient.UpdateCalculation(calculationId, update);

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                return(Ok(response.Content));
            }
            else
            {
                throw new InvalidOperationException($"An error occurred while saving calculation. Status code={response.StatusCode}");
            }
        }
        public async Task <IActionResult> OnPostAsync(string specificationId, string calculationId)
        {
            Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId));
            Specification specification = await GetSpecification(specificationId);

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

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

            if (!ModelState.IsValid)
            {
                return(await PopulateForm(specification, calculationId));
            }

            CalculationUpdateModel updateModel = _mapper.Map <CalculationUpdateModel>(EditCalculationViewModel);

            ValidatedApiResponse <Calculation> editCalculationResponse = await _specsClient.UpdateCalculation(specificationId, calculationId, updateModel);

            if (editCalculationResponse.StatusCode == HttpStatusCode.OK)
            {
                Calculation editedCalculation = editCalculationResponse.Content;

                return(Redirect($"/specs/policies/{specificationId}?operationId={editedCalculation.Id}&operationType=CalculationUpdated"));
            }
            else if (editCalculationResponse.StatusCode == HttpStatusCode.BadRequest)
            {
                editCalculationResponse.AddValidationResultErrors(ModelState);

                await PopulateForm(specification, calculationId);

                return(Page());
            }
            else
            {
                throw new InvalidOperationException($"Unable to edit calculation specification. Status Code = {editCalculationResponse.StatusCode}");
            }
        }
示例#3
0
        public Task <ApiResponse <Calculation> > UpdateCalculation(string calculationId, CalculationUpdateModel calculation)
        {
            Guard.IsNullOrWhiteSpace(calculationId, nameof(calculationId));
            Guard.ArgumentNotNull(calculation, nameof(calculation));

            return(PostAsync <Calculation, CalculationUpdateModel>($"calculation-save-version?calculationId={calculationId}", calculation));
        }
示例#4
0
        public Task <ValidatedApiResponse <Calculation> > UpdateCalculation(string specificationId, string calculationId, CalculationUpdateModel calculation)
        {
            Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId));
            Guard.IsNullOrWhiteSpace(calculationId, nameof(calculationId));
            Guard.ArgumentNotNull(calculation, nameof(calculation));

            return(ValidatedPutAsync <Calculation, CalculationUpdateModel>($"calculations?specificationId={specificationId}&calculationId={calculationId}", calculation));
        }