private Stream CreateWaiverStream(WaiverModel waiver)
        {
            var fullName       = $"{waiver.FirstName} {waiver.LastName}";
            var hasAllergies   = !string.IsNullOrWhiteSpace(waiver.Allergies);
            var hasMedications = !string.IsNullOrWhiteSpace(waiver.Medications);

            var timeZoneInfo = TZConvert.GetTimeZoneInfo(DefaultTimeZone);
            var now          = DateTimeOffset.UtcNow.ToOffset(timeZoneInfo.BaseUtcOffset);

            var addressAndCity = $"{waiver.StreetAddress}, {waiver.City}";

            const int signatureWidth = 155;

            using (var doc = new PdfDocument())
            {
                doc.LoadFromFile(Path.Join(_hostingEnvironment.WebRootPath, WaiversDirectory, WaiverFileName));

                var form = (PdfFormWidget)doc.Form;
                var page = doc.Pages[0];

                ((PdfTextBoxFieldWidget)form.FieldsWidget["FullName1"]).Text                       = fullName;
                ((PdfTextBoxFieldWidget)form.FieldsWidget["FullName2"]).Text                       = fullName;
                ((PdfTextBoxFieldWidget)form.FieldsWidget["FullName3"]).Text                       = fullName;
                ((PdfTextBoxFieldWidget)form.FieldsWidget["Address"]).Text                         = addressAndCity;
                ((PdfTextBoxFieldWidget)form.FieldsWidget["Allergies"]).Text                       = waiver.Allergies ?? string.Empty;
                ((PdfTextBoxFieldWidget)form.FieldsWidget["Country"]).Text                         = waiver.Country;
                ((PdfTextBoxFieldWidget)form.FieldsWidget["Email"]).Text                           = waiver.Email;
                ((PdfTextBoxFieldWidget)form.FieldsWidget["Medications"]).Text                     = waiver.Medications ?? string.Empty;
                ((PdfTextBoxFieldWidget)form.FieldsWidget["Phone"]).Text                           = waiver.Phone;
                ((PdfTextBoxFieldWidget)form.FieldsWidget["Province"]).Text                        = waiver.Province;
                ((PdfTextBoxFieldWidget)form.FieldsWidget["CertificationNumber"]).Text             = waiver.CertificationNumber;
                ((PdfTextBoxFieldWidget)form.FieldsWidget["PostalCode"]).Text                      = waiver.PostalCode;
                ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Angina"]).Checked                = waiver.Angina;
                ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Asthma"]).Checked                = waiver.Asthma;
                ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Bronchitis"]).Checked            = waiver.Bronchitis;
                ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Diabetes"]).Checked              = waiver.Diabetes;
                ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Emphysema"]).Checked             = waiver.Emphysema;
                ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Seizures"]).Checked              = waiver.Seizures;
                ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Stroke"]).Checked                = waiver.Stroke;
                ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["HeartAttack"]).Checked           = waiver.HeartAttack;
                ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["HighBloodPressure"]).Checked     = waiver.HighBloodPressure;
                ((PdfRadioButtonListFieldWidget)form.FieldsWidget["HasAllergies"]).SelectedValue   = hasAllergies ? "Yes" : "No";
                ((PdfRadioButtonListFieldWidget)form.FieldsWidget["HasMedications"]).SelectedValue = hasMedications ? "Yes" : "No";
                ((PdfTextBoxFieldWidget)form.FieldsWidget["Date"]).Text = string.Format("{0:MMMM d}{1}, {0:yyyy}", now, GetOrdinal(now.Day));

                foreach (var field in form.FieldsWidget.OfType <PdfTextBoxFieldWidget>())
                {
                    field.Flatten = true;
                }

                foreach (var field in form.FieldsWidget.OfType <PdfCheckBoxWidgetFieldWidget>())
                {
                    field.Flatten = true;
                }

                foreach (var field in form.FieldsWidget.OfType <PdfRadioButtonListFieldWidget>())
                {
                    field.ReadOnly = true;
                }

                var signature = CreatePdfImage(waiver.Signature);

                var ratio = signatureWidth / (float)signature.Width;

                page.Canvas.DrawImage(signature, 68, 667, signatureWidth, ratio * signature.Height);

                var memoryStream = new MemoryStream();

                doc.SaveToStream(memoryStream);

                memoryStream.Position = 0;

                return(memoryStream);
            }
        }