コード例 #1
0
        /// <summary>
        /// Метод отправляет сообщение с вложением на почту.
        /// </summary>
        /// <param name="user">Пользователь с данными для отправки.</param>
        /// <param name="policy">Полис с данными для отправки.</param>
        public void SendMail(User user, Policy policy)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                var pdfGenerator = new PdfGenerator();
                pdfGenerator.GeneratePolicy(user, policy, ms);
                var fileName   = policy.PolicyId.ToString() + ".pdf";
                var attachment = new Attachment(ms, fileName);

                Send(user, policy, attachment);
            }
        }
コード例 #2
0
ファイル: FileManager.cs プロジェクト: AldTLT/Insurance
        /// <summary>
        /// Метод возвращает MemoryStream со сгенерированным pdf файлом полиса.
        /// </summary>
        /// <param name="user">Экземпляр класса User для данных полиса.</param>
        /// <param name="policy">Экземпляр класса Policy для данных полиса.</param>
        /// <returns>Массив байт со сгенерированным pdf файлом полиса.</returns>
        public byte[] GetPdfByByteArray(User user, Policy policy)
        {
            byte[] fileByteArray;
            var    encoding = Encoding.ASCII;

            using (MemoryStream ms = new MemoryStream())
            {
                ms.Position = 0;

                var pdfGenerator = new PdfGenerator();
                pdfGenerator.GeneratePolicy(user, policy, ms);

                ms.Position   = 0;
                fileByteArray = ms.ToArray();
            }

            return(fileByteArray);
        }
コード例 #3
0
ファイル: PdfGenerator.cs プロジェクト: AldTLT/Insurance
        /// <summary>
        /// Метод генерирует полис.
        /// </summary>
        /// <param name="policy">Экземпляр Insurance.BL.Models.Policy</param>
        /// <param name="user">Экземпляр Insurance.BL.Models.User</param>
        /// <returns>Имя сгенерированного полиса.</returns>
        public Document GeneratePolicy(User user, Policy policy, Stream stream)
        {
            var      encoding = Encoding.UTF8;
            var      p        = new PdfGenerator();
            Document document = new Document();
            Section  section  = document.AddSection();

            p.Styles(document);

            //ЗАГОЛОВОК
            Paragraph paragraph = section.AddParagraph();

            paragraph.Format.LeftIndent = 120;
            paragraph.AddFormattedText("СТРАХОВОЙ ПОЛИС", "Title");
            paragraph.AddFormattedText("\nКОМПЛЕКСНОГО АВТОМОБИЛЬНОГО" +
                                       "\nСТРАХОВАНИЯ, КРОМЕ ОТВЕТСТВЕННОСТИ", "Normal");

            //ТАБЛИЦА С ДАТОЙ СРОКА ДЕЙСТВИЯ ПОЛИСА
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            Table tablePolicyDate = section.AddTable();

            tablePolicyDate.AddColumn(296);
            tablePolicyDate.Borders.Width = 1.5;
            tablePolicyDate.TopPadding    = 4;
            tablePolicyDate.BottomPadding = 4;
            Row row = tablePolicyDate.AddRow();

            tablePolicyDate.Rows.LeftIndent = 180;
            var text = p.GetFormattedPolicyDateText(policy.PolicyDate);

            row.Style = "Text";
            row.Cells[0].AddParagraph(text);

            //ТАБЛИЦА С ИМЕНЕМ КЛИЕНТА
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            Table dateInsuranceCase = section.AddTable();

            dateInsuranceCase.AddColumn(480);
            dateInsuranceCase.Borders.Width = 1.5;
            dateInsuranceCase.TopPadding    = 4;
            dateInsuranceCase.BottomPadding = 4;
            row                   = dateInsuranceCase.AddRow();
            row.Style             = "Text";
            row.VerticalAlignment = VerticalAlignment.Center;
            row.Cells[0].AddParagraph("Страхователь (фамилия имя отчество)");
            row       = dateInsuranceCase.AddRow();
            row.Style = "Text";
            row.Cells[0].AddParagraph(user.Name);

            //ТАБЛИЦА С ПАРАМЕТРАМИ АВТОМОБИЛЯ.
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph("Характеристики транспортного средства:");
            Table carData = section.AddTable();

            //Строка с наименованием.
            carData.AddColumn(120);
            carData.AddColumn(120);
            carData.AddColumn(120);
            carData.AddColumn(120);
            row = carData.AddRow();
            carData.Borders.Width = 1.5;
            carData.TopPadding    = 4;
            carData.BottomPadding = 4;
            row.Style             = "Text";
            row.Cells[0].AddParagraph(
                "Номер" +
                "\nавтомобиля");
            row.Cells[1].AddParagraph(
                "Модель" +
                "\nавтомобиля");
            row.Cells[2].AddParagraph(
                "Год производства" +
                "\nавтомобиля");
            row.Cells[3].AddParagraph(
                "Мощность двигателя" +
                "\nавтомобиля");

            //Строка со значениями.
            row = carData.AddRow();
            row.VerticalAlignment = VerticalAlignment.Center;
            row.Cells[0].AddParagraph(policy.Car.CarNumber);
            row.Cells[1].AddParagraph(policy.Car.Model);
            row.Cells[2].AddParagraph(policy.Car.ManufacturedYear.ToString());
            row.Cells[3].AddParagraph(string.Format("{0} л.с.", policy.Car.EnginePower));

            //СТРАХОВАЯ ПРЕМИЯ
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph(
                "Автомобиль застрахован по программе все включено (угон\\хищение, полная потеря, повреждение)." +
                "\nСумма страховой премии:");
            Table cost = section.AddTable();

            cost.AddColumn(200);
            row = cost.AddRow();
            cost.Borders.Width    = 1.5;
            cost.TopPadding       = 4;
            cost.BottomPadding    = 4;
            row.Style             = "Title";
            row.VerticalAlignment = VerticalAlignment.Center;
            row.Cells[0].AddParagraph(string.Format("{0:C}", policy.Cost));

            //НОМЕР ПОЛИСА
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            section.AddParagraph();
            paragraph = section.AddParagraph();
            paragraph.Format.Alignment = ParagraphAlignment.Center;
            paragraph.AddFormattedText(string.Format("Полис № {0}", policy.PolicyId));

            //Сохранение и рендер полиса
            PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(true, PdfFontEmbedding.Always);

            pdfRenderer.Document = document;
            pdfRenderer.RenderDocument();
            pdfRenderer.PdfDocument.Save(stream);

            return(document);
        }