public async Task <JsonResult> GetByTrainId(int train_id) { await CheckPermission(); var tr = new TrainRepository(_logger); var cr = new CarriageRepository(_logger); var train = await tr.ByIdWithStations(train_id); if (train == null) { throw new Exception("train not found"); } var result = await cr.GetByTrain(train); tr.Dispose(); return(Json(result)); }
public async Task <IActionResult> GetActPdf([FromBody] int trainId) { await CheckPermission(); if (trainId == 0) { throw new ValidationException($"Необходимо выбрать Номер состава."); } var sqlRAct = new ActCategoriesRepository(); var html = @"<html><head> <style type='text/css'> .task { border-collapse: collapse; border: 1px solid black; } .task td { padding: 5px; border: 1px solid black; } .task th { padding: 5px; border: 1px solid black; font-size: 80%; } .rotate { text-align: center; white-space: nowrap; vertical-align: middle; width: 1.5em; } .rotate div { -webkit-transform: rotate(-90.0deg); margin-left: -10em; margin-right: -10em; } .break { page-break-after: always; } </style></head><body>"; var sqlRTrain = new TrainRepository(_logger); var train = await sqlRTrain.ByIdWithStations(trainId); var sqlRCarriage = new CarriageRepository(_logger); var carriages = await sqlRCarriage.GetByTrain(train); string carriagesString = null; carriages = carriages.OrderBy(e => e.Number).ToArray(); foreach (var carriage in carriages) { if (carriage.Number == 9) { continue; } carriagesString += $"{CreateCarriageNameWithOutTrain(carriage.Number)} "; } carriagesString += $"{CreateCarriageNameWithOutTrain(9)} "; //html += "<p align=\"center\"><font size=\"5\"><b>Акт сдачи - приемки транспорта</b></p>"; html += "<p align=\"center\"><font size=\"4\"><b>Акт сдачи - приемки Транспорта</b></font></p>"; html += "<p align=\"center\"><font size=\"4\"><b> в депо </b> Нахабино</font></p>"; html += "<p><b> N </b>1</p>" + $"<p> Дата {DateTime.Now.ToShortDateString()} Время {DateTime.Now.ToShortTimeString()} Номер эл/ п {train.Name}; Составность {carriages.Length} Причина проведения осмотра ТО-_____ </p>" + $"<p> Нумерация вагонов в подвижном составе {carriagesString} </ p >"; //шапка html += "<table class='task break'><tr><th colspan=\"3\" rowspan=\"2\"></th><th colspan=\"3\">Раздел I</th><th colspan=\"3\">Раздел II</th><th colspan=\"3\">Раздел III</th></tr>"; html += "<tr><th>Испр</th><th>Неиспр</th><th>№ вагона</th><th>Испр</th><th>Неиспр</th><th>№ вагона</th><th>Испр</th><th>Неиспр</th><th>№ вагона</th></tr>"; //1. Санитарное состояние //надо получить число записей и вставить в <th rowspan = 4> var sqlrTask = new TaskRepository(_logger); CultureInfo us = new CultureInfo("en-US"); var currentDateForFuckingSql = DateTime.Now.ToString(@"yyyy-MM-dd", us); //var filter = //$"[{{\"filter\":\"DateFrom\",\"value\":\"{currentDateForFuckingSql}\"}},{{\"filter\":\"DateTo\",\"value\":\"{currentDateForFuckingSql}\"}}]"; var tasks = await sqlrTask.GetAllForPdf(0, Int32.MaxValue, trainId); var contentWithValues = new List <ActCategoriesRepository.EquipmentActsPdf>(); var summaryContentWithValues = new List <ActCategoriesRepository.EquipmentActsPdf>(); //var sqlRAct = new ActCategoriesRepository(); var badR1 = 0; var goodR2 = 0; var badR3 = 0; var paragraphs = new List <string> { "Санитарное состояние", "Электрооборудование", "Кузовное оборудование", "Прочее" }; var count = 1; List <ActCategoriesRepository.EquipmentActsPdf> content; foreach (var paragraph in paragraphs) { content = await sqlRAct.GetAllForPdf(paragraph, count); var rowspanPlus = 2; if (count == 3) { rowspanPlus = 3; } html += $@"<tr><th class='rotate' rowspan='{content.Count + rowspanPlus}'>" + "<div>" + $"{count}. {paragraph}" + $"" + "</div>" + "</th></tr>"; var countInternal = 1; foreach (var item in content) { item.CarriageNumR1 = new List <int>(); item.CarriageNumR2 = new List <int>(); item.CarriageNumR3 = new List <int>(); if (countInternal == 12 && count == 3) { html += "</table><table class='task'>"; html += "<tr><th colspan=\"3\" rowspan=\"2\"></th><th colspan=\"3\">Раздел I</th><th colspan=\"3\">Раздел II</th><th colspan=\"3\">Раздел III</th></tr>"; html += "<tr><th>Испр</th><th>Неиспр</th><th>№ вагона</th><th>Испр</th><th>Неиспр</th><th>№ вагона</th><th>Испр</th><th>Неиспр</th><th>№ вагона</th></tr>"; html += $@"<tr><th class='rotate' rowspan='{content.Count - countInternal + rowspanPlus}'>" + "<div>" + $"{count}. {paragraph}" + $"" + "</div>" + "</th></tr>"; } await TaskFucker(sqlRAct, tasks, item); contentWithValues.Add(item); html += $"<tr><th>{item.Number}</th>" + $"<th>{item.ActName}</th>" + $"<th>{item.GoodR1}</th>" + $"<th>{item.BadR1}</th>" + $"<th>{sqlRAct.CreateCarriageStrintToPdf(item.CarriageNumR1)}</th>" + $"<th>{item.GoodR2}</th>" + $"<th>{item.BadR2}</th>" + $"<th>{sqlRAct.CreateCarriageStrintToPdf(item.CarriageNumR2)}</th>" + $"<th>{item.GoodR3}</th>" + $"<th>{item.BadR3}</th>" + $"<th>{sqlRAct.CreateCarriageStrintToPdf(item.CarriageNumR3)}</th>" + $"</tr>"; countInternal++; } //както надо посчитать колво замечаний в каждом столбце блядь badR1 = 0; goodR2 = 0; badR3 = 0; foreach (var item in contentWithValues) { if (item.BadR1 != null) { badR1 = badR1 + item.BadR1.Value; } if (item.GoodR2 != null) { goodR2 = goodR2 + item.GoodR2.Value; } if (item.BadR3 != null) { badR3 = badR3 + item.BadR3.Value; } } string s1 = null; string s2 = null; string s3 = null; if (badR1 != 0) { s1 = badR1.ToString(); } if (goodR2 != 0) { s2 = goodR2.ToString(); } if (badR3 != 0) { s3 = badR3.ToString(); } html += $"<tr><th colspan=\"2\"><b>Всего замечаний</b></th><th></th><th>{s1}</th><th></th><th>{s2}</th><th></th><th></th><th></th><th>{s3}</th><th></th></tr>"; summaryContentWithValues.AddRange(contentWithValues); contentWithValues.Clear(); count++; if (count == 4) { html += "<tr><th></th><th>4.</th><th><b>Составность не соответствует заявке</b></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr>"; count++; } } //ИТОГО badR1 = 0; goodR2 = 0; badR3 = 0; foreach (var item in summaryContentWithValues) { if (item.BadR1 != null) { badR1 = badR1 + item.BadR1.Value; } if (item.GoodR2 != null) { goodR2 = goodR2 + item.GoodR2.Value; } if (item.BadR3 != null) { badR3 = badR3 + item.BadR3.Value; } } string ss1 = null; string ss2 = null; string ss3 = null; if (badR1 != 0) { ss1 = badR1.ToString(); } if (goodR2 != 0) { ss2 = goodR2.ToString(); } if (badR3 != 0) { ss3 = badR3.ToString(); } html += $"<tr><th></th><th colspan=\"2\"><b>ИТОГО по санитарно - техническому состоянию</b></th><th></th><th>{ss1}</th><th></th><th>{ss2}</th><th></th><th>" + $"</th><th></th><th>{ss3}</th><th></th></tr>"; html += "</table><br /><br />"; //надписи под таблицей var checkBoxHtml = "<input maxlength = \"1\" size = \"1\" type = \"text\">"; var probel = " "; var probel2 = " "; var probel3 = " "; html += $"<p><font size=\"2\">{probel}Эл.поезд эксплуатационным нормам безопасности движения {checkBoxHtml}соответствует {checkBoxHtml}не соответсвует</font></p>"; html += $"<p><font size=\"2\">На основании дейтв. нормативных документов эксплуатации поезда {checkBoxHtml}разрешена{probel3}{checkBoxHtml}запрещена</font></p>"; html += $"<p><font size=\"2\">Поезд к первоочередн. устранению {checkBoxHtml} Повторная проверка проведена: _______________ Время Выхода из депо________</font></p>"; html += $"<p><font size=\"2\">по результатам повторной проверки эксплуатация поезда {checkBoxHtml}разрешена {checkBoxHtml}запрещена <b>Выдан на линию воопреки запрета в</b>________</font></p>"; html += $"<p align=\"right\"><font size=\"2\"><b>Приёмку подвижного состава до постановки на ТО(ТР) произвели</b></font>{probel2}{probel2}</p>"; html += $"<p align=\"center\"><font size=\"2\"><b>Представитель ПАО \"ЦППК\" - приёмщик ООО \"Профлайн\"_________________{probel2}{probel2}/_______________/</b></font></p>"; html += $"<p align=\"center\"><font size=\"2\"><b>Представитель депо <u>{probel2}{probel2}Нахабино{probel2}{probel2}бригадир{probel2}{probel2}{probel2}</u>{probel2}{probel2}/_______________/</b></font></p>"; html += $"<p align=\"right\"><font size=\"2\"><b>Приёмку подвижного состава после проведения ТО(ТР) произвели</b></font>{probel2}{probel2}</p>"; html += $"<p align=\"center\"><font size=\"2\"><b>Представитель ПАО \"ЦППК\" - приёмщик ООО \"Профлайн\"_________________{probel2}{probel2}/_______________/</b></font></p>"; html += $"<p align=\"center\"><font size=\"2\"><b>Представитель депо <u>{probel2}{probel2}Нахабино{probel2}{probel2}бригадир{probel2}{probel2}{probel2}</u>{probel2}{probel2}/_______________/</b></font></p>"; html += "<br /><br /><body></html>"; // var output = _pdfConverter.Convert(new HtmlToPdfDocument { GlobalSettings = { ColorMode = ColorMode.Color, Orientation = Orientation.Portrait, PaperSize = PaperKind.A4, }, Objects = { new ObjectSettings { HtmlContent = html, WebSettings ={ DefaultEncoding = "utf-8" } } } }); // return(File(output, "application/pdf", "1111" + "_" + "2222" + "_" + "3333" + ".pdf")); }