Ejemplo n.º 1
0
        private async Task <GenerateReferralsResponse> GenerateSingleReferralDocument(GenerateReferralsRequest request)
        {
            var referrals    = mapper.Map <IEnumerable <PrintReferral> >(request.Supports.Where(s => s.SupportDelivery is Shared.Contracts.Events.Referral), opts => opts.Items.Add("evacuationFile", request.File)).ToArray();
            var summaryItems = mapper.Map <IEnumerable <PrintSummary> >(request.Supports, opts => opts.Items.Add("evacuationFile", request.File)).ToArray();
            var printingUser = new PrintRequestingUser {
                Id = request.PrintingMember.Id, FirstName = request.PrintingMember.FirstName, LastName = request.PrintingMember.LastName
            };

            var communities = (await metadataRepository.GetCommunities()).ToDictionary(c => c.Code, c => c.Name);

            foreach (var referral in referrals)
            {
                referral.VolunteerFirstName = printingUser.FirstName;
                referral.VolunteerLastName  = printingUser.LastName;
                referral.DisplayWatermark   = request.AddWatermark;
                referral.HostCommunity      = communities.GetValueOrDefault(referral.HostCommunity);
                if (!string.IsNullOrEmpty(referral.Supplier?.Community))
                {
                    referral.Supplier.City = communities.GetValueOrDefault(referral.Supplier.Community);
                }
            }

            var title         = $"supports-{request.File.Id}-{DateTime.UtcNow.ToPST().ToString("yyyyMMddhhmmss")}";
            var referralsHtml = await ReferralHtmlGenerator.CreateSingleHtmlDocument(printingUser, referrals, summaryItems, request.AddSummary, request.AddWatermark, title);

            return(new GenerateReferralsResponse
            {
                Content = Encoding.UTF8.GetBytes(referralsHtml)
            });
        }
Ejemplo n.º 2
0
        public async Task CreateMultipleSupportsPdfsWithoutSummary()
        {
            var requestingUser = new PrintRequestingUser {
                Id = "123", FirstName = "First Name", LastName = "LastName"
            };
            var referrals = GeneratePrintReferral(requestingUser, 5, false);
            var title     = $"supportstest-{DateTime.UtcNow.ToPST().ToString("yyyyMMddhhmmss")}";

            var content = await ReferralHtmlGenerator.CreateSingleHtmlDocument(requestingUser, referrals, Enumerable.Empty <PrintSummary>(), false, false, title);

            content.ShouldNotBeNullOrEmpty();
            await File.WriteAllTextAsync("./newSupportPdfsFile.html", content);
        }
Ejemplo n.º 3
0
        public async Task CreateSupportPdfWithSummary()
        {
            var requestingUser = new PrintRequestingUser {
                Id = "123", FirstName = "First Name", LastName = "LastName"
            };
            var referrals    = GeneratePrintReferral(requestingUser, 1, true);
            var summaryItems = GetSummaryFromReferrals(referrals);
            var title        = $"supportstest-{DateTime.UtcNow.ToPST().ToString("yyyyMMddhhmmss")}";

            var content = await ReferralHtmlGenerator.CreateSingleHtmlDocument(requestingUser, referrals, summaryItems, true, true, title);

            content.ShouldNotBeNullOrEmpty();
            await File.WriteAllTextAsync("./newSupportPdfWithSummaryFile.html", content);
        }
Ejemplo n.º 4
0
 private IEnumerable <PrintReferral> GeneratePrintReferral(PrintRequestingUser requestingUser, int numberOfReferrals, bool displayWatermark) =>
 Enumerable.Range(0, numberOfReferrals).Select(i =>
                                               new Faker <PrintReferral>()
                                               .RuleFor(o => o.VolunteerFirstName, f => requestingUser.FirstName)
                                               .RuleFor(o => o.VolunteerLastName, f => requestingUser.FirstName)
                                               .RuleFor(o => o.DisplayWatermark, f => displayWatermark)
                                               .RuleFor(o => o.Type, f => f.Random.Enum <PrintReferralType>())
                                               .RuleFor(o => o.Id, f => string.Join("", f.Random.Digits(6)))
                                               .RuleFor(o => o.FromDate, f => f.Date.Soon().Date.ToShortDateString())
                                               .RuleFor(o => o.FromTime, f => f.Date.Recent().ToLongTimeString())
                                               .RuleFor(o => o.ToDate, (f, o) => DateTime.Parse(o.FromDate).AddDays(3).ToShortDateString())
                                               .RuleFor(o => o.ToTime, (f, o) => o.FromTime)
                                               .RuleFor(o => o.Comments, f => f.Random.Words(20))
                                               .RuleFor(o => o.PrintDate, f => DateTime.Now.ToString())
                                               .RuleFor(o => o.PurchaserName, f => f.Name.FullName())
                                               .RuleFor(o => o.ApprovedItems, (f, o) => o.Type == PrintReferralType.Incidentals ? string.Join(Environment.NewLine, f.Random.WordsArray(10)) : null)
                                               .RuleFor(o => o.TotalAmountPrinted, (f, o) => o.Type == PrintReferralType.Incidentals ? f.Random.Decimal(max: 1000m).ToString() : null)
                                               .RuleFor(o => o.TotalAmountPrinted, (f, o) => o.Type == PrintReferralType.Clothing ? f.Random.Decimal(max: 1000m).ToString() : null)
                                               .RuleFor(o => o.TotalAmountPrinted, (f, o) => o.Type == PrintReferralType.Meals ? f.Random.Decimal(max: 1000m).ToString() : null)
                                               .RuleFor(o => o.NumBreakfasts, (f, o) => o.Type == PrintReferralType.Meals ? f.Random.Int(0, 3) : 0)
                                               .RuleFor(o => o.NumLunches, (f, o) => o.Type == PrintReferralType.Meals ? f.Random.Int(0, 3) : 0)
                                               .RuleFor(o => o.NumDinners, (f, o) => o.Type == PrintReferralType.Meals ? f.Random.Int(0, 3) : 0)
                                               .RuleFor(o => o.TotalAmountPrinted, (f, o) => o.Type == PrintReferralType.Groceries ? f.Random.Decimal(max: 1000m).ToString() : null)
                                               .RuleFor(o => o.NumDaysMeals, (f, o) => o.Type == PrintReferralType.Groceries ? f.Random.Int(0, 3) : 0)
                                               .RuleFor(o => o.NumNights, (f, o) => o.Type == PrintReferralType.Hotel ? f.Random.Int(0, 3) : 0)
                                               .RuleFor(o => o.NumNights, (f, o) => o.Type == PrintReferralType.GroupLodging ? f.Random.Int(0, 3) : 0)
                                               .RuleFor(o => o.FromAddress, (f, o) => o.Type == PrintReferralType.Taxi ? f.Address.FullAddress() : null)
                                               .RuleFor(o => o.ToAddress, (f, o) => o.Type == PrintReferralType.Taxi ? f.Address.FullAddress() : null)
                                               .RuleFor(o => o.TotalAmountPrinted, (f, o) => o.Type == PrintReferralType.Transportation ? f.Random.Decimal(max: 1000m).ToString() : null)
                                               .RuleFor(o => o.OtherTransportModeDetails, (f, o) => o.Type == PrintReferralType.Transportation ? f.Vehicle.Type() : null)
                                               .RuleFor(o => o.Supplier, f => new Faker <PrintSupplier>()
                                                        .RuleFor(o => o.Address, f => f.Address.StreetAddress() + "," + f.Address.StreetName())
                                                        .RuleFor(o => o.City, f => f.Address.City())
                                                        .RuleFor(o => o.Name, f => f.Company.CompanyName())
                                                        .RuleFor(o => o.PostalCode, f => f.Address.ZipCode())
                                                        .RuleFor(o => o.Telephone, f => f.Phone.PhoneNumber())
                                                        .RuleFor(o => o.Province, f => f.Address.State())
                                                        .Generate())
                                               .RuleFor(o => o.Evacuees, f => f.Make(f.Random.Number(20), () => new Faker <PrintEvacuee>()
                                                                                     .RuleFor(o => o.EvacueeTypeCode, f => f.PickRandom(new[] { "F", "A", "C" }))
                                                                                     .RuleFor(o => o.FirstName, f => f.Person.FirstName)
                                                                                     .RuleFor(o => o.LastName, f => f.Person.LastName)
                                                                                     .Generate()))
                                               .Generate()
                                               );
Ejemplo n.º 5
0
        public async Task CreateMultipleSupportsPdfsWithSummary()
        {
            var requestingUser = new PrintRequestingUser {
                Id = "123", DisplayName = "User T."
            };
            var request = new SupportsToPrint
            {
                AddSummary     = true,
                AddWatermark   = true,
                RequestingUser = requestingUser,
                Referrals      = GeneratePrintReferral(requestingUser, 10)
            };

            var content = await supportsService.GetReferralHtmlPagesAsync(request);

            content.ShouldNotBeNullOrEmpty();
            await File.WriteAllTextAsync("./newSupportPdfsWithSummaryFile.html", content);
        }
Ejemplo n.º 6
0
        public async Task CreateSupportPdfWithoutSummary()
        {
            var requestingUser = new PrintRequestingUser {
                Id = "123", FirstName = "First Name", LastName = "LastName"
            };
            var request = new SupportsToPrint
            {
                AddSummary     = false,
                AddWatermark   = false,
                RequestingUser = requestingUser,
                Referrals      = GeneratePrintReferral(requestingUser, 1)
            };

            var content = await supportsService.GetReferralHtmlPagesAsync(request);

            content.ShouldNotBeNullOrEmpty();
            await File.WriteAllTextAsync("./newSupportPdfFile.html", content);
        }