/// <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); } }
/// <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); }
/// <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); }