예제 #1
0
        public async Task Create(int batchNumber, IEnumerable <CertificateResponse> certificates)
        {
            var documentTemplateDataStream = await _documentTemplateDataStream.Get();

            await CleanMergedDocumentContainer();

            var certificateResponses = certificates as CertificateResponse[] ?? certificates.ToArray();
            var groupedCertificates  = certificateResponses.ToArray().GroupBy(
                x => new
            {
                x.CertificateData.ContactOrganisation,
                x.CertificateData.Department,
                x.CertificateData.ContactName,
                x.CertificateData.ContactPostCode
            },
                (key, group) => new
            {
                key1   = key.ContactOrganisation,
                key2   = key.Department,
                key3   = key.ContactName,
                key4   = key.ContactPostCode,
                Result = group.ToList()
            });

            var sequenceNumber = 0;

            foreach (var groupedCertificate in groupedCertificates)
            {
                sequenceNumber++;
                var certificate          = groupedCertificate.Result[0];
                var wordDocumentFileName = $"IFA-Certificate-{GetMonthYear()}-{batchNumber.ToString().PadLeft(9,'0')}-{certificate.CertificateData.ContactOrganisation}-{sequenceNumber}.docx";

                _aggregateLogger.LogInfo($"Processing Certificate for Cover Letter - {certificate.CertificateReference} - {wordDocumentFileName}");
                var wordStream = await CreateWordDocumentStream(wordDocumentFileName, certificate.CertificateData, documentTemplateDataStream);

                _aggregateLogger.LogInfo($"converted certifcate data - Contact Name = {certificate.CertificateData.ContactName}");

                await _fileTransferClient.Send(wordStream, wordDocumentFileName);

                wordStream.Close();
            }

            documentTemplateDataStream.Close();
        }
        public async Task Create()
        {
            var documentTemplateDataStream = await _documentTemplateDataStream.Get();

            foreach (var certificate in _certificatesRepository.GetData())
            {
                var uuid     = Guid.NewGuid();
                var fileName = $"output-{uuid}.pdf";

                Console.WriteLine($"Processing Certificate for Cover Letter - {certificate.Id} - {uuid}");
                var certificateData = JsonConvert.DeserializeObject <Domain.JsonData.CertificateData>(certificate.CertificateData);

                var pdfStream = CreatePdfStream(certificateData, documentTemplateDataStream);

                await _fileTransferClient.Send(pdfStream, fileName);

                pdfStream.Close();
            }

            documentTemplateDataStream.Close();
        }