public async Task UpdateStatuses(UpdateCertificatesBatchToIndicatePrintedRequest updateCertificatesBatchToIndicatePrintedRequest)
        {
            var toBePrintedDate = DateTime.UtcNow;

            foreach (var certificateStatus in updateCertificatesBatchToIndicatePrintedRequest.CertificateStatuses)
            {
                var certificate =
                    await _context.Certificates.FirstAsync(q => q.CertificateReference == certificateStatus.CertificateReference);

                certificate.BatchNumber = updateCertificatesBatchToIndicatePrintedRequest.BatchNumber;
                certificate.Status      = CertificateStatus.Printed;
                certificate.ToBePrinted = toBePrintedDate;
                certificate.UpdatedBy   = UpdatedBy.PrintFunction;

                await UpdateCertificateLog(certificate, CertificateActions.Printed, UpdatedBy.PrintFunction);
            }

            await _context.SaveChangesAsync();
        }
        public async Task ChangeStatusToPrinted(int batchNumber, IEnumerable <CertificateResponse> responses)
        {
            // the certificate printed status be will updated in chunks to stay within the WAF message size limits
            const int chunkSize = 100;

            var certificateStatuses = responses.Select(
                q => new CertificateStatus
            {
                CertificateReference = q.CertificateReference,
                Status = Domain.Consts.CertificateStatus.Printed
            }).ToList();

            foreach (var certificateStatusesChunk in certificateStatuses.ChunkBy(chunkSize))
            {
                var updateCertificatesBatchToIndicatePrintedRequest = new UpdateCertificatesBatchToIndicatePrintedRequest
                {
                    BatchNumber         = batchNumber,
                    CertificateStatuses = certificateStatusesChunk
                };

                await _httpClient.PutAsJsonAsync($"/api/v1/certificates/{batchNumber}", updateCertificatesBatchToIndicatePrintedRequest);
            }
        }
        public async Task <IActionResult> UpdateCertificatesBatchToIndicatePrinted(int batchNumber, [FromBody] UpdateCertificatesBatchToIndicatePrintedRequest updateCertificatesBatchToIndicatePrintedRequest)
        {
            await _mediator.Send(updateCertificatesBatchToIndicatePrintedRequest);

            return(Ok());
        }