Beispiel #1
0
        public async Task <IActionResult> GetCertificate(long uln, string familyName, [SwaggerParameter("Standard Code or Standard Reference Number")] string standard)
        {
            var getRequest = new GetBatchCertificateRequest {
                UkPrn = _headerInfo.Ukprn, Uln = uln, FamilyName = familyName, Standard = standard
            };
            var response = await _apiClient.GetCertificate(getRequest);

            if (response.ValidationErrors.Any())
            {
                ApiResponse error = new ApiResponse((int)HttpStatusCode.Forbidden, string.Join("; ", response.ValidationErrors));
                return(StatusCode(error.StatusCode, error));
            }
            else if (response.Certificate is null)
            {
                return(NoContent());
            }
            else
            {
                if (CertificateHelpers.IsDraftCertificateDeemedAsReady(response.Certificate))
                {
                    response.Certificate.Status.CurrentStatus = CertificateStatus.Ready;
                }
                else if (response.Certificate.Status.CurrentStatus == CertificateStatus.Printed || response.Certificate.Status.CurrentStatus == CertificateStatus.Reprint)
                {
                    response.Certificate.Status.CurrentStatus = CertificateStatus.Submitted;
                }

                return(Ok(response.Certificate));
            }
        }
Beispiel #2
0
        public async Task <IActionResult> CreateCertificates([FromBody] IEnumerable <CreateCertificateRequest> request)
        {
            if (request.Count() > MAX_CERTIFICATES_IN_REQUEST)
            {
                ApiResponse error = new ApiResponse((int)HttpStatusCode.Forbidden, MAX_CERTIFICATES_IN_REQUEST_ERROR_MESSAGE);
                return(StatusCode(error.StatusCode, error));
            }

            var createRequest = request.Select(req =>
                                               new CreateBatchCertificateRequest {
                UkPrn           = _headerInfo.Ukprn,
                RequestId       = req.RequestId,
                CertificateData = new Models.Request.Certificates.CertificateData
                {
                    Standard        = req.Standard,
                    Learner         = req.Learner,
                    LearningDetails = req.LearningDetails,
                    PostalContact   = req.PostalContact
                }
            });

            var results = await _apiClient.CreateCertificates(createRequest);

            foreach (var result in results)
            {
                if (CertificateHelpers.IsDraftCertificateDeemedAsReady(result.Certificate))
                {
                    result.Certificate.Status.CurrentStatus = CertificateStatus.Ready;
                }
            }

            return(Ok(results));
        }
        public async Task <IActionResult> GetCertificate(long uln, string familyName, [SwaggerParameter("Standard Code or Standard Reference Number")] string standard)
        {
            var getRequest = new GetBatchCertificateRequest {
                UkPrn = _headerInfo.Ukprn, Uln = uln, FamilyName = familyName, Standard = standard
            };

            var response = await _apiClient.GetCertificate(getRequest);

            if (response.ValidationErrors.Any())
            {
                ApiResponse error = new ApiResponse((int)HttpStatusCode.Forbidden, string.Join("; ", response.ValidationErrors));
                return(StatusCode(error.StatusCode, error));
            }
            else if (response.Certificate is null)
            {
                return(NoContent());
            }

            if (response.Certificate.Status.CurrentStatus == CertificateStatus.Printed)
            {
                response.Certificate.Delivered = new Delivered {
                    Status = "WaitingForDelivery"
                };
            }

            if (CertificateStatus.HasPrintProcessStatus(response.Certificate.Status.CurrentStatus) is false) // status could be Draft or Deleted (or Privately Funded statuses)
            {
                var certificateData = response.Certificate.CertificateData;

                if (!string.IsNullOrEmpty(certificateData.Standard?.StandardReference) && !string.IsNullOrEmpty(certificateData?.LearningDetails?.Version))
                {
                    var standardOptions = await _apiClient.GetStandardOptionsByStandardIdAndVersion(certificateData.Standard.StandardReference, certificateData.LearningDetails.Version);

                    var hasOptions = standardOptions != null && standardOptions.CourseOption?.Count() > 0;

                    if (CertificateHelpers.IsDraftCertificateDeemedAsReady(response.Certificate, hasOptions))
                    {
                        response.Certificate.Status.CurrentStatus = CertificateStatus.Ready;
                    }
                }
            }

            return(Ok(response.Certificate));
        }
        public void When_AllRequiredFieldsAreComplete_Then_ReturnTrue()
        {
            var result = CertificateHelpers.IsDraftCertificateDeemedAsReady(_certificate);

            result.Should().BeTrue();
        }
        private void CheckHelperReturnsFalse()
        {
            var result = CertificateHelpers.IsDraftCertificateDeemedAsReady(_certificate, hasOptions: true);

            result.Should().BeFalse();
        }