public string CreateDeliveryPdf(TakeThai.Models.OrderModels order) { var myHtml = $"<div style='text-align: right; display: block;'> <img src='https://www.takethai.co.uk/wp-content/uploads/Take-Thai-Logo.png' /></div> <br /> " + $"<hr />"; myHtml = $"{myHtml} <p style='text-align: center;'>{order.CustomerModels.FirstName} {order.CustomerModels.Surname}<br />"; if (!string.IsNullOrEmpty(order.CustomerDeliveryAddressModel.AddressLine1)) { myHtml = $"{myHtml} {order.CustomerDeliveryAddressModel.AddressLine1} <br />"; } if (!string.IsNullOrEmpty(order.CustomerDeliveryAddressModel.AddressLine2)) { myHtml = $"{myHtml} {order.CustomerDeliveryAddressModel.AddressLine2} <br />"; } if (!string.IsNullOrEmpty(order.CustomerDeliveryAddressModel.AddressLine3)) { myHtml = $"{myHtml} {order.CustomerDeliveryAddressModel.AddressLine3} <br />"; } if (!string.IsNullOrEmpty(order.CustomerDeliveryAddressModel.PostalCode)) { myHtml = $"{myHtml} {order.CustomerDeliveryAddressModel.PostalCode} <br />"; } myHtml = $"{myHtml} </p><hr />"; myHtml = $"{myHtml} <h3 style='text-align: center;'>{order.DeliveryOrCollection} Order between: {order.OrderReceivedDate.ToString("t", CultureInfo.CreateSpecificCulture("en-GB"))} & {order.OrderReceivedDate.AddMinutes(30).ToString("t", CultureInfo.CreateSpecificCulture("en-GB"))}</h3>" + $"<h3 style='text-align: center;'>Order ID: {order.Id}</h3> <br />" + $"<br /><br />"; foreach (var subOrder in order.SubOrderModelsList) { var currentSubOrderJson = Program.GetSubOrder(subOrder.Id); var convertJsonToModels = new ConvertJsonToModels(); var currentSubOrder = convertJsonToModels.ConvertJsonToSubOrderModels(currentSubOrderJson); if (currentSubOrder == null) { continue; } var productModel = Program.GetProductModels(currentSubOrder.ProductSubModels.ProductModelId); myHtml = $"{myHtml} <div class='row' style='text-align: right;'> <p>Product Number: {productModel.Number} Name: <strong>{productModel.Name} - {currentSubOrder.ProductSubModels.OptionName}</strong> | £{currentSubOrder.ProductSubModels.Price} | Qty: {currentSubOrder.Quantity} </p>"; if (!string.IsNullOrEmpty(subOrder.SpecialCustomerNotes)) { myHtml = $"{myHtml} <p>Customers Requirements: <strong>{subOrder.SpecialCustomerNotes}</strong></p>"; } myHtml = $"{myHtml} </div>"; } myHtml = $"{myHtml} <br /><br />"; myHtml = $"{myHtml} <hr />"; myHtml = $"{myHtml} <p style='font-weight:bold; text-align: right;'>Sub Total: £{order.SubTotal}</p>"; myHtml = $"{myHtml} <p style='font-weight:bold; text-align: right;'>Delivery Cost: £{order.DeliveryCost}</p>"; myHtml = $"{myHtml} <p style='font-weight:bold; text-align: right;'>Discount: £{order.CustomerDiscount}</p>"; myHtml = $"{myHtml} <hr />"; myHtml = $"{myHtml} <p style='font-weight:bold; text-align: right;'>Total : £{order.TotalCost}</p>"; //Console.WriteLine($"Creating Delivery PDF for order {order.Id}"); return(CreatePdfFile(myHtml, order.Id, "Delivery")); }
public static TakeThai.Models.ProductModels GetProductModels(int?id = 0) { if (id == null || id <= 0) { return(null); } var searchSubOrder = new TakeThai.Models.SearchOrderModel(); searchSubOrder.OrderId = (int)id; var json = JsonSerializer.Serialize(searchSubOrder); var sendPost = SendPostRequest("Products/GetProduct", json); var convertJsonToModels = new ConvertJsonToModels(); return(convertJsonToModels.ConvertJsonToProductModels(sendPost)); }
public string CreateVatPdf(TakeThai.Models.OrderModels order) { var myHtml = $"<div style='text-align: center; display: block;'> <img src='https://www.takethai.co.uk/wp-content/uploads/Take-Thai-Logo.png' /></div> <br /> " + "<p>130 Dereham Road, Norwich NR2 3AF. 01603 464646</p> <hr />" + "<h4>VAT Receipt</h4><hr />"; foreach (var subOrder in order.SubOrderModelsList) { var currentSubOrderJson = Program.GetSubOrder(subOrder.Id); var convertJsonToModels = new ConvertJsonToModels(); var currentSubOrder = convertJsonToModels.ConvertJsonToSubOrderModels(currentSubOrderJson); if (currentSubOrder == null) { continue; } var productModel = Program.GetProductModels(currentSubOrder.ProductSubModels.ProductModelId); myHtml = $"{myHtml} <div class='row'>"; myHtml = $"{myHtml} <div class='row'> <p>{subOrder.Quantity}x {productModel.Number} {productModel.Name} {currentSubOrder.ProductSubModels.ProductSubModelShortCode} £{currentSubOrder.ProductSubModels.Price}</p>"; myHtml = $"{myHtml} </div>"; } myHtml = $"{myHtml} <hr />"; myHtml = $"{myHtml} <p style='font-weight:bold; text-align: right;'>Total £{order.TotalCost}</p>"; var vatCost = order.TotalCost - (order.TotalCost / 1.2); myHtml = $"{myHtml} <p style='font-weight:bold; text-align: right;'>Includes Vat @ 20.0% of £{vatCost.ToString("0.##")}</p>"; myHtml = $"{myHtml} <hr />"; myHtml = $"{myHtml} Date: {order.OrderPlacedDate.ToString("dd.MM.yyyy")}"; myHtml = $"{myHtml} <p style='font-weight:bold; text-align: right;'>Paid By: {order.PaymentMethod}</p>"; myHtml = $"{myHtml} Received with thanks."; myHtml = $"{myHtml} <hr />"; //Console.WriteLine($"Creating Delivery PDF for order {order.Id}"); return(CreatePdfFile(myHtml, order.Id, "Vat")); }
static void Main(string[] args) { Console.WriteLine("Welcome to Take Thai print server."); while (true != false) { try { //Console.WriteLine("Currently getting all orders."); var todaysOrders = GetAllTodaysOrders(); var convertJsonToModels = new ConvertJsonToModels(); var orderModels = convertJsonToModels.ConvertJsonToOrderModelsList(todaysOrders); if (orderModels != null && orderModels.Count > 0) { //Console.WriteLine("Printing orders"); var pdfClass = new PDFClass(); foreach (var order in orderModels) { using (var context = new SQLiteDBContext()) { //Console.WriteLine("All Tables"); //using (var command = context.Database.GetDbConnection().CreateCommand()) //{ // command.CommandText = "SELECT name from sqlite_master WHERE type='table'"; // context.Database.OpenConnection(); // using (var result = command.ExecuteReader()) // { // while (result.Read()) // { // Console.WriteLine(result.GetString(0)); // } // } //} //Console.WriteLine("Order stuff"); var currentOrder = context.PrintOrderModel.FirstOrDefaultAsync(x => x.OrderId == order.Id).Result; if (currentOrder != null) { //Console.WriteLine("Checking current order"); if ((currentOrder.IsPrinted || (!currentOrder.IsComplete && order.PaymentMethod == null)) && currentOrder.OrderPlacedDate == order.OrderPlacedDate) { //Console.WriteLine($"Order ID: {currentOrder.Id} does not need to be printed"); continue; } if (currentOrder.IsPrinted) { currentOrder.IsPrinted = false; context.Update(currentOrder); context.SaveChanges(); } } else { //Console.WriteLine("Checking current order"); if (order.PaymentMethod == null) { //Console.WriteLine($"Order ID: {currentOrder.Id} does not need to be printed"); continue; } currentOrder = new PrintOrderModel { OrderId = order.Id, OrderPlacedDate = order.OrderPlacedDate, VatReceipt = order.VatReceipt }; } //Console.WriteLine("Creating Kitchen Receipt"); // Generate format ready to print var pdfFilePath = pdfClass.CreateKitchenPdf(order); //Console.WriteLine("Send Kitchen Receipt to printer"); var print = SendRequestToPrinter(pdfFilePath); if (order.DeliveryOrCollection == "Delivery") { //Console.WriteLine("Creating Delivery Receipt"); pdfFilePath = pdfClass.CreateDeliveryPdf(order); //Console.WriteLine("Send Kitchen Receipt to printer"); print = SendRequestToPrinter(pdfFilePath); } if (order.VatReceipt) { //Console.WriteLine("Creating VAT Receipt"); pdfFilePath = pdfClass.CreateVatPdf(order); //Console.WriteLine("Send VAT Receipt to printer"); print = SendRequestToPrinter(pdfFilePath); } if (print) { // Send request to confirm printed. currentOrder.IsPrinted = true; currentOrder.IsComplete = true; context.Update(currentOrder); context.SaveChanges(); } } } } } catch (Exception exception) { Console.WriteLine("An Error occurred printing order."); Console.WriteLine(exception.Message); Console.WriteLine(exception.StackTrace); while (exception.InnerException != null) { exception = exception.InnerException; Console.WriteLine(exception.StackTrace); } } Thread.Sleep(3000); } }
public string CreateKitchenPdf(TakeThai.Models.OrderModels order) { if (order == null) { return(null); } var orderType = order.DeliveryOrCollection ?? "Counter"; if (orderType.ToLower() == "counter") { orderType = "CTR"; } else { orderType = orderType.Substring(0, 3).ToUpperInvariant(); } var myHtml = $"<h3 style='text-align: center;'>{orderType} Order between: {order.OrderReceivedDate.ToString("t", CultureInfo.CreateSpecificCulture("en-GB"))} & {order.OrderReceivedDate.AddMinutes(30).ToString("t", CultureInfo.CreateSpecificCulture("en-GB"))}</h3>" + $"<h3 style='text-align: center;'>Order ID: {order.Id}</h3> <br />" + $"<br /><br />"; foreach (var subOrder in order.SubOrderModelsList) { var currentSubOrderJson = Program.GetSubOrder(subOrder.Id); var convertJsonToModels = new ConvertJsonToModels(); var currentSubOrder = convertJsonToModels.ConvertJsonToSubOrderModels(currentSubOrderJson); if (currentSubOrder == null) { continue; } var productModel = Program.GetProductModels(currentSubOrder.ProductSubModels.ProductModelId); var quantityString = string.Empty; if (currentSubOrder.Quantity > 1) { quantityString = $"{currentSubOrder.Quantity}x "; } var subProductCode = !string.IsNullOrEmpty(currentSubOrder.ProductSubModels.ProductSubModelShortCode) ? currentSubOrder.ProductSubModels.ProductSubModelShortCode : currentSubOrder.ProductSubModels.OptionName; if (!string.IsNullOrEmpty(subOrder.SpecialCustomerNotes) && (subOrder.CustomerProductRequestsModelsList == null || subOrder.CustomerProductRequestsModelsList.Count <= 0)) { myHtml = $"{myHtml} <div class='row' style='text-align: center;'> <p>{quantityString}{productModel.Number} {subProductCode}</p>"; } else { var specialRequest = string.Empty; if (subOrder.CustomerProductRequestsModelsList != null && subOrder.CustomerProductRequestsModelsList.Count > 0) { foreach (var productRequestModel in subOrder.CustomerProductRequestsModelsList) { specialRequest = $"{specialRequest}, {productRequestModel.OptionName}"; } } specialRequest = $"{specialRequest} {currentSubOrder.SpecialCustomerNotes}"; myHtml = $"{myHtml} <div class='row' style='text-align: right;'> <ul><li></li></ul><p>{quantityString}{productModel.Number} {subProductCode} <strong>{specialRequest}</strong></p>"; } myHtml = $"{myHtml} </div>"; } myHtml = $"{myHtml} <p style='font-weight:bold; text-align: right;'>£{order.TotalCost}</p>"; return(CreatePdfFile(myHtml, order.Id, "Kitchen")); }