Example #1
0
        private void CreateOrderClick(object sender, MouseEventArgs e)
        {
            StoreBookOrder order = new StoreBookOrder();

            order.UserID        = 0;
            order.OrderDate     = DateTime.Now;
            order.BookID        = BookIDField.Text;
            order.Quantity      = int.Parse(QuantityField.Text);
            order.TotalPrice    = double.Parse(TotalPriceField.Text);
            order.ClientName    = ClientNameField.Text;
            order.ClientAddress = ClientAddressField.Text;
            order.ClientEmail   = ClientEmailField.Text;

            if (ServiceEngine.Instance.CreateOrder(order))
            {
                BookIDField.Text        = "";
                QuantityField.Text      = "";
                TotalPriceField.Text    = "";
                ClientNameField.Text    = "";
                ClientAddressField.Text = "";
                ClientEmailField.Text   = "";
                this.RefreshAll();
            }
            else
            {
                ClientNameField.Text = "Error creating the order...";
            }
        }
        public bool CreateOrder(StoreBookOrder order)
        {
            var keyValues = new List <KeyValuePair <string, string> >();

            keyValues.Add(new KeyValuePair <string, string>("bookID", order.BookID));
            keyValues.Add(new KeyValuePair <string, string>("userID", order.UserID.ToString()));
            keyValues.Add(new KeyValuePair <string, string>("quantity", order.Quantity.ToString()));
            keyValues.Add(new KeyValuePair <string, string>("totalPrice", order.TotalPrice.ToString(CultureInfo.InvariantCulture)));
            keyValues.Add(new KeyValuePair <string, string>("clientName", order.ClientName));
            keyValues.Add(new KeyValuePair <string, string>("clientAddress", order.ClientAddress));
            keyValues.Add(new KeyValuePair <string, string>("clientEmail", order.ClientEmail));


            HttpResponseMessage response = null;

            try
            {
                response = httpClient.PostAsync(APIConstants.BOOKSTORE_ORDERS, new FormUrlEncodedContent(keyValues))?.Result;
            }
            catch (Exception)
            {
                return(false);
            }

            if (response.IsSuccessStatusCode)
            {
                order.OrderID = response.Headers.Location.Segments.Last();
                string filePath = PDFEngine.Instance.CreateOrderPDF(order);
                System.Diagnostics.Process.Start(@filePath);
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public string CreateOrderPDF(StoreBookOrder order)
        {
            // Create a Document object
            Document document = new Document(PageSize.A4, 70, 70, 70, 70);

            // File
            string    filePath = AppDomain.CurrentDomain.BaseDirectory + order.OrderID + ".pdf";
            PdfWriter writer   = PdfWriter.GetInstance(document, new FileStream(filePath, FileMode.Create));

            // First, create our fonts
            var       titleFont     = FontFactory.GetFont("Arial", 14, Font.BOLD);
            var       boldTableFont = FontFactory.GetFont("Arial", 10, Font.BOLD);
            var       bodyFont      = FontFactory.GetFont("Arial", 10, Font.NORMAL);
            Rectangle pageSize      = writer.PageSize;

            // Open the Document for writing
            document.Open();

            #region Top table
            // Create the header table
            PdfPTable headertable = new PdfPTable(3);
            headertable.HorizontalAlignment = 0;
            headertable.WidthPercentage     = 100;
            headertable.SetWidths(new float[] { 4, 2, 4 });
            headertable.DefaultCell.Border = Rectangle.NO_BORDER;
            headertable.SpacingAfter       = 30;
            PdfPTable nested = new PdfPTable(1);
            nested.DefaultCell.Border = Rectangle.BOX;
            PdfPCell nextPostCell1 = new PdfPCell(new Phrase("TDIN Bookstore", bodyFont));
            nextPostCell1.Border = Rectangle.LEFT_BORDER | Rectangle.RIGHT_BORDER;
            nested.AddCell(nextPostCell1);
            PdfPCell nextPostCell2 = new PdfPCell(new Phrase("Faculdade de Engenharia,", bodyFont));
            nextPostCell2.Border = Rectangle.LEFT_BORDER | Rectangle.RIGHT_BORDER;
            nested.AddCell(nextPostCell2);
            PdfPCell nesthousing = new PdfPCell(nested);
            nesthousing.Rowspan = 4;
            nesthousing.Padding = 0f;
            headertable.AddCell(nesthousing);

            headertable.AddCell("");
            PdfPCell invoiceCell = new PdfPCell(new Phrase("ORDER", titleFont));
            invoiceCell.HorizontalAlignment = 2;
            invoiceCell.Border = Rectangle.NO_BORDER;
            headertable.AddCell(invoiceCell);
            PdfPCell noCell = new PdfPCell(new Phrase("No :", bodyFont));
            noCell.HorizontalAlignment = 2;
            noCell.Border = Rectangle.NO_BORDER;
            headertable.AddCell(noCell);
            headertable.AddCell(new Phrase(order.OrderID, bodyFont));
            PdfPCell dateCell = new PdfPCell(new Phrase("Date :", bodyFont));
            dateCell.HorizontalAlignment = 2;
            dateCell.Border = Rectangle.NO_BORDER;
            headertable.AddCell(dateCell);
            headertable.AddCell(new Phrase(order.OrderDate.ToString(), bodyFont));
            PdfPCell billCell = new PdfPCell(new Phrase("Bill To :", bodyFont));
            billCell.HorizontalAlignment = 2;
            billCell.Border = Rectangle.NO_BORDER;
            headertable.AddCell(billCell);
            headertable.AddCell(new Phrase(order.ClientName + "\n" + order.ClientAddress + "\n" + order.ClientEmail, bodyFont));
            document.Add(headertable);
            #endregion

            #region Items Table
            //Create body table
            PdfPTable itemTable = new PdfPTable(2);
            itemTable.HorizontalAlignment = 0;
            itemTable.WidthPercentage     = 100;
            itemTable.SetWidths(new float[] { 10, 20 });
            itemTable.SpacingAfter       = 40;
            itemTable.DefaultCell.Border = Rectangle.BOX;
            PdfPCell cell1 = new PdfPCell(new Phrase("ID", boldTableFont));
            cell1.HorizontalAlignment = 1;
            itemTable.AddCell(cell1);
            PdfPCell cell2 = new PdfPCell(new Phrase("QUANTITY", boldTableFont));
            cell2.HorizontalAlignment = 1;
            itemTable.AddCell(cell2);


            // Add book
            PdfPCell numberCell = new PdfPCell(new Phrase(order.BookID.ToString(), bodyFont));
            numberCell.HorizontalAlignment = 1;
            numberCell.PaddingLeft         = 10f;
            numberCell.Border = Rectangle.LEFT_BORDER | Rectangle.RIGHT_BORDER;
            itemTable.AddCell(numberCell);

            PdfPCell qtyCell = new PdfPCell(new Phrase(order.Quantity.ToString(), bodyFont));
            qtyCell.HorizontalAlignment = 1;
            qtyCell.PaddingLeft         = 10f;
            qtyCell.Border = Rectangle.LEFT_BORDER | Rectangle.RIGHT_BORDER;
            itemTable.AddCell(qtyCell);

            // Table footer
            PdfPCell totalAmtStrCell = new PdfPCell(new Phrase("Total Amount", boldTableFont));
            totalAmtStrCell.HorizontalAlignment = 1;
            itemTable.AddCell(totalAmtStrCell);
            PdfPCell totalAmtCell = new PdfPCell(new Phrase(order.TotalPrice.ToString("#,###.00") + "€", boldTableFont));
            totalAmtCell.HorizontalAlignment = 1;
            itemTable.AddCell(totalAmtCell);

            document.Add(itemTable);
            #endregion

            //Approved by
            PdfContentByte cb = new PdfContentByte(writer);
            BaseFont       bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1250, true);
            cb = writer.DirectContent;
            cb.BeginText();
            cb.SetFontAndSize(bf, 10);
            cb.SetTextMatrix(pageSize.GetLeft(300), 200);
            cb.ShowText("Approved by TDIN FEUP");
            cb.EndText();

            cb = new PdfContentByte(writer);
            bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1250, true);
            cb = writer.DirectContent;
            cb.BeginText();
            cb.SetFontAndSize(bf, 10);
            cb.SetTextMatrix(pageSize.GetLeft(70), 100);
            cb.ShowText("Thank you for buying at TDIN Bookstore");
            cb.EndText();

            document.Close();
            return(filePath);
        }