private List <ManagerAndDebitory> SortToMonteAndClients(List <Debitorka> debitorkas) { List <ManagerAndDebitory> managerAndDebitories = new List <ManagerAndDebitory>(); List <ClientInfo> clientInfos = _context.Set <ClientInfo>().ToList(); List <UserInfo> userInfos = _context.Set <UserInfo>().ToList(); foreach (Debitorka debitorka in debitorkas) { ClientInfo clientInfo = clientInfos.FirstOrDefault(c => c.OneCId.ToString() == debitorka.Contragent_ID); UserInfo userInfo = userInfos.FirstOrDefault(u => u.OneCId.ToString() == debitorka.Manager_ID); if (userInfo != null) { ManagerAndDebitory managerAndDebitory = managerAndDebitories.FirstOrDefault(m => m.OneCIdM.ToString() == debitorka.Manager_ID); if (managerAndDebitory != null) { managerAndDebitory.Sume += Convert.ToDouble(debitorka.Summa.Replace('.', ',')); ClientAndDebitorka clientAndDebitorka = managerAndDebitory.clientAndDebitorkas.FirstOrDefault(c => c.OneCId.ToString() == debitorka.Contragent_ID); if (clientAndDebitorka != null) { clientAndDebitorka.Sume += Convert.ToDouble(debitorka.Summa.Replace('.', ',')); clientAndDebitorka.Datas.Add(new Model.Data() { DneyDoPogashenia = Convert.ToInt32(debitorka.DneyDoPogashenia), Dogovor = debitorka.Dogovor, Dokument = debitorka.Dokument, DopustimoDney = Convert.ToInt32(debitorka.DopustimoDney), Summa = Convert.ToDouble(debitorka.Summa.Replace('.', ',')) }); } else { managerAndDebitory.clientAndDebitorkas.Add(new ClientAndDebitorka() { ClientId = clientInfo != null ? clientInfo.ClientId : 0, OneCId = new Guid(debitorka.Contragent_ID), Datas = new List <Model.Data>() { new Model.Data() { DneyDoPogashenia = Convert.ToInt32(debitorka.DneyDoPogashenia), Dogovor = debitorka.Dogovor, Dokument = debitorka.Dokument, DopustimoDney = Convert.ToInt32(debitorka.DopustimoDney), Summa = Convert.ToDouble(debitorka.Summa.Replace('.', ',')) } }, Name = debitorka.Contragent, Sume = Convert.ToDouble(debitorka.Summa.Replace('.', ',')) }); } } else { managerAndDebitories.Add(new ManagerAndDebitory() { clientAndDebitorkas = new List <ClientAndDebitorka>() { new ClientAndDebitorka() { ClientId = clientInfo != null ? clientInfo.ClientId : 0, OneCId = new Guid(debitorka.Contragent_ID), Datas = new List <Model.Data>() { new Model.Data() { DneyDoPogashenia = Convert.ToInt32(debitorka.DneyDoPogashenia), Dogovor = debitorka.Dogovor, Dokument = debitorka.Dokument, DopustimoDney = Convert.ToInt32(debitorka.DopustimoDney), Summa = Convert.ToDouble(debitorka.Summa.Replace('.', ',')) } }, Sume = Convert.ToDouble(debitorka.Summa.Replace('.', ',')), Name = debitorka.Contragent, } }, MangerId = userInfo != null ? userInfo.UserId : 0, OneCIdM = userInfo.OneCId, Name = debitorka.Manager, Sume = Convert.ToDouble(debitorka.Summa.Replace('.', ',')) }); } } else { ManagerAndDebitory managerAndDebitory = managerAndDebitories.FirstOrDefault(m => m.OneCIdM.ToString() == "00000000-0000-0000-0000-000000000000"); if (managerAndDebitory != null) { managerAndDebitory.Sume += Convert.ToDouble(debitorka.Summa.Replace('.', ',')); ClientAndDebitorka clientAndDebitorka = managerAndDebitory.clientAndDebitorkas.FirstOrDefault(c => c.OneCId.ToString() == debitorka.Contragent_ID); if (clientAndDebitorka != null) { clientAndDebitorka.Sume += Convert.ToDouble(debitorka.Summa.Replace('.', ',')); clientAndDebitorka.Datas.Add(new Model.Data() { DneyDoPogashenia = Convert.ToInt32(debitorka.DneyDoPogashenia), Dogovor = debitorka.Dogovor, Dokument = debitorka.Dokument, DopustimoDney = Convert.ToInt32(debitorka.DopustimoDney), Summa = Convert.ToDouble(debitorka.Summa.Replace('.', ',')) }); } else { managerAndDebitory.clientAndDebitorkas.Add(new ClientAndDebitorka() { ClientId = clientInfo != null ? clientInfo.ClientId : 0, OneCId = new Guid(debitorka.Contragent_ID), Datas = new List <Model.Data>() { new Model.Data() { DneyDoPogashenia = Convert.ToInt32(debitorka.DneyDoPogashenia), Dogovor = debitorka.Dogovor, Dokument = debitorka.Dokument, DopustimoDney = Convert.ToInt32(debitorka.DopustimoDney), Summa = Convert.ToDouble(debitorka.Summa.Replace('.', ',')) } }, Name = debitorka.Contragent, Sume = Convert.ToDouble(debitorka.Summa.Replace('.', ',')) }); } } else { managerAndDebitories.Add(new ManagerAndDebitory() { clientAndDebitorkas = new List <ClientAndDebitorka>() { new ClientAndDebitorka() { ClientId = clientInfo != null ? clientInfo.ClientId : 0, OneCId = new Guid(debitorka.Contragent_ID), Datas = new List <Model.Data>() { new Model.Data() { DneyDoPogashenia = Convert.ToInt32(debitorka.DneyDoPogashenia), Dogovor = debitorka.Dogovor, Dokument = debitorka.Dokument, DopustimoDney = Convert.ToInt32(debitorka.DopustimoDney), Summa = Convert.ToDouble(debitorka.Summa.Replace('.', ',')) } }, Name = debitorka.Contragent, Sume = Convert.ToDouble(debitorka.Summa.Replace('.', ',')) } }, MangerId = 0, OneCIdM = new Guid("00000000-0000-0000-0000-000000000000"), Name = "Othe", Sume = Convert.ToDouble(debitorka.Summa.Replace('.', ',')) }); } } } return(managerAndDebitories); }
private void CreateClienrPdf(ClientAndDebitorka clientAndDebitorka) { Document doc = new Document(); if (!Directory.Exists("PDF/Client")) { Directory.CreateDirectory("PDF/Client"); } PdfWriter.GetInstance(doc, new FileStream($"PDF/Client/Debytory{clientAndDebitorka.ClientId}.pdf", FileMode.Create)); doc.Open(); doc.SetMargins(0, 0, 3, 3); BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\arial.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, 10, iTextSharp.text.Font.NORMAL); PdfPTable table = new PdfPTable(20); table.TotalWidth = 590f; table.LockedWidth = true; PdfPCell cell = new PdfPCell(new Phrase($"Отчёт за {DateTime.Now} по долгу", font)); cell.Colspan = 20; cell.HorizontalAlignment = 0; cell.Border = 0; table.AddCell(cell); cell = new PdfPCell(new Phrase(new Phrase("Контрагент / Договор", font))); cell.Colspan = 5; cell.HorizontalAlignment = 1; cell.VerticalAlignment = 1; table.AddCell(cell); cell = new PdfPCell(new Phrase(new Phrase("Документ", font))); cell.Colspan = 5; cell.HorizontalAlignment = 1; cell.VerticalAlignment = 1; table.AddCell(cell); cell = new PdfPCell(new Phrase(new Phrase("Допустимое число дней задолжености", font))); cell.Colspan = 3; cell.HorizontalAlignment = 1; cell.VerticalAlignment = 1; table.AddCell(cell); cell = new PdfPCell(new Phrase(new Phrase("Число дней до погашения", font))); cell.Colspan = 3; cell.HorizontalAlignment = 1; cell.VerticalAlignment = 1; table.AddCell(cell); cell = new PdfPCell(new Phrase(new Phrase("Сумма долга", font))); cell.Colspan = 4; cell.HorizontalAlignment = 1; cell.VerticalAlignment = 1; table.AddCell(cell); font = new iTextSharp.text.Font(baseFont, 9, iTextSharp.text.Font.NORMAL, new BaseColor(153, 51, 0)); cell = new PdfPCell(new Phrase(new Phrase(clientAndDebitorka.Name, font))); cell.HorizontalAlignment = 0; cell.VerticalAlignment = 1; cell.BorderWidthRight = 0; cell.Colspan = 12; table.AddCell(cell); if (clientAndDebitorka.Sume >= 0) { font = new iTextSharp.text.Font(baseFont, 9, iTextSharp.text.Font.NORMAL); } else { font = new iTextSharp.text.Font(baseFont, 9, iTextSharp.text.Font.NORMAL, new BaseColor(223, 1, 58)); } cell = new PdfPCell(new Phrase(new Phrase(clientAndDebitorka.Sume.ToString() + " руб", font))); cell.HorizontalAlignment = 2; cell.VerticalAlignment = 1; cell.Colspan = 8; cell.BorderWidthLeft = 0; table.AddCell(cell); foreach (Model.Data data in clientAndDebitorka.Datas) { font = new iTextSharp.text.Font(baseFont, 8, iTextSharp.text.Font.NORMAL); cell = new PdfPCell(new Phrase(new Phrase(data.Dogovor, font))); cell.HorizontalAlignment = 1; cell.VerticalAlignment = 1; cell.Colspan = 5; table.AddCell(cell); font = new iTextSharp.text.Font(baseFont, 8, iTextSharp.text.Font.NORMAL); cell = new PdfPCell(new Phrase(new Phrase(data.Dokument, font))); cell.HorizontalAlignment = 1; cell.VerticalAlignment = 1; cell.Colspan = 5; table.AddCell(cell); font = new iTextSharp.text.Font(baseFont, 8, iTextSharp.text.Font.NORMAL); cell = new PdfPCell(new Phrase(new Phrase(data.DopustimoDney.ToString(), font))); cell.HorizontalAlignment = 2; cell.VerticalAlignment = 2; cell.Colspan = 3; table.AddCell(cell); if (data.DneyDoPogashenia >= 0) { font = new iTextSharp.text.Font(baseFont, 9, iTextSharp.text.Font.NORMAL); } else { font = new iTextSharp.text.Font(baseFont, 9, iTextSharp.text.Font.NORMAL, new BaseColor(223, 1, 58)); } cell = new PdfPCell(new Phrase(new Phrase(data.DneyDoPogashenia.ToString(), font))); cell.HorizontalAlignment = 2; cell.VerticalAlignment = 2; cell.Colspan = 3; table.AddCell(cell); if (data.Summa >= 0) { font = new iTextSharp.text.Font(baseFont, 9, iTextSharp.text.Font.NORMAL); } else { font = new iTextSharp.text.Font(baseFont, 9, iTextSharp.text.Font.NORMAL, new BaseColor(223, 1, 58)); } cell = new PdfPCell(new Phrase(new Phrase(data.Summa.ToString() + " руб", font))); cell.HorizontalAlignment = 2; cell.VerticalAlignment = 2; cell.Colspan = 4; table.AddCell(cell); } doc.Add(table); doc.Close(); }