コード例 #1
0
        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"));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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"));
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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"));
        }