using BBWY.Client.APIServices;
using BBWY.Client.Models.FallWare;
using BBWY.Client.Models;
using BBWY.Controls;
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using WebSocketSharp;
using BBWY.Client.Helpers;
using System.Printing;
using System.Reflection;
using System.IO;
using System.Threading;
using System.Drawing.Printing;

namespace BBWY.Client.Views.FallWare
{
    /// <summary>
    /// SetCloudWareBoxWindow.xaml 的交互逻辑
    /// </summary>
    public partial class SetCloudWareBoxWindow : BWindow
    {
        public SetCloudWareBoxWindow(JDWareBoxModel model, WareType wareType)
        {

            WareType = wareType;
            JDWareBoxModel = model;
            InitializeComponent();
            PurchaseOrderImage = MyPrintHelper.GetBarcodeImageV2(model.PurchaseOrder, 420, 50);
            this.DataContext = this;
            this.Dispatcher.Invoke(() => {
                tb_printcount.Text = "1";
            });
            this.UpdateLayout();

        }
        public JDWareBoxModel JDWareBoxModel { get; set; }
        /// <summary>
        /// 采购单号条形码
        /// </summary>
        public BitmapImage PurchaseOrderImage { get; set; }
        public WareType WareType { get; set; }

        public void PrintBox(string printName)
        {
            var localPrintServer = new LocalPrintServer();
            if (string.IsNullOrEmpty(printName))
            {
                return;
            }
            var printQueue = localPrintServer.GetPrintQueue(printName);
            if (printQueue.IsInError)
            {
                System.Windows.MessageBox.Show("打印机处于错误状态");
                return;
            }
            MyPrintHelper.SetDefaultPrint(printName);//设置默认打印机
            PrintDialog printDialog = new PrintDialog();
            printDialog.PrintTicket.PageOrientation = PageOrientation.Portrait;//设置为横向打印 PageOrientation.Landscape   Portrait为纵向
            PrintDocument document = new PrintDocument();
            document.PrinterSettings.PrinterName = printName;

            var pageWidth = document.DefaultPageSettings.Bounds.Size.Width;
            var pageHeight = document.DefaultPageSettings.Bounds.Size.Height;

            //设置纸张大小
            //var pageWidth = (int)Math.Ceiling(printDialog.PrintableAreaWidth);
            //var pageHeight = (int)Math.Ceiling(printDialog.PrintableAreaHeight);



            printDialog.PrintTicket.PageMediaSize = new PageMediaSize(pageWidth, pageHeight);

            var printAreaWidth = (int)Math.Ceiling(printDialog.PrintableAreaWidth);//打印区宽度
            var printAreaHeight = (int)Math.Ceiling(printDialog.PrintableAreaHeight);//打印区高度



            this.Height = pageHeight + 39;//492
            this.Width = pageWidth;//227

            // this.FontSize = 30;
            box_margin.Margin = new Thickness(2);
            //this.jd_box.Arrange(new Rect(new Point(0, 0), new Size(pageWidth, pageHeight)));
            for (int i = 1; i <= JDWareBoxModel.BoxCount; i++)
            {
                this.Dispatcher.Invoke(() => {
                    tb_printcount.Text =i.ToString();
                });
                this.Dispatcher.Invoke(() => {
                    this.UpdateLayout();
                });
               
              

                printDialog.PrintVisual(this.jd_box, "打印任务");
            }
            var applicationPath = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string printNames = System.IO.Path.Combine(applicationPath, "printName.init");
            if (File.Exists(printNames))
            {
                File.Delete(printNames);
            }
            System.IO.File.WriteAllText(printNames, printName);
            this.Close();
        }
    }
}