using AutoMapper;
using AutoMapper.Internal;
using BBWY.Client.APIServices;
using BBWY.Client.Helpers;
using BBWY.Client.Models;
using BBWY.Client.Models.APIModel.Request;
using BBWY.Client.Models.APIModel.Response.PackTask;
using BBWY.Client.Models.PackTask;
using BBWY.Client.Views.PackTask;
using BBWY.Common.Models;
using GalaSoft.MvvmLight.Command;
using Microsoft.Extensions.Logging;
using NPOI.Util;
using Org.BouncyCastle.Asn1.Crmf;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Drawing.Printing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection.Metadata.Ecma335;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
using System.Windows.Media.Imaging;
namespace BBWY.Client.ViewModels.PackTask
{
public class PackServiceViewModel : BaseVM, IDenpendency
{
private decimal? directionalFees;
///
/// 定向费用
///
public decimal? DirectionalFees { get => directionalFees; set { Set(ref directionalFees, value); } }
private BitmapImage barcodeImage;
///
/// 任务Id条形码
///
public BitmapImage BarcodeImage { get => barcodeImage; set { Set(ref barcodeImage, value); } }
private BitmapImage taskImage;
///
/// 任务Id条形码
///
public BitmapImage TaskImage { get => taskImage; set { Set(ref taskImage, value); } }
private string printName;
public string PrintName { get => printName; set { Set(ref printName, value); } }
private ObservableCollection printList;
///
/// 打印机列表
///
public ObservableCollection PrintList { get => printList; set { Set(ref printList, value); } }
private ObservableCollection packTaskList;
///
/// 动态数据表
///
public ObservableCollection PackTaskList { get => packTaskList; set { Set(ref packTaskList, value); } }
private PackTaskModel packTaskModel;
public PackTaskModel PackTaskModel { get => packTaskModel; set { Set(ref packTaskModel, value); } } //
public ICommand AddPackServiceCommand { get; set; }
public ICommand AddIncreateServiceCommand { get; set; }
public ICommand AddConsumableCommand { get; set; }
public ICommand UpLoadPackCommand { get; set; }
public ICommand SetAllCountCommand { get; set; }
public ICommand PrintCommand { get; set; }
readonly PackTaskService packTaskService;
readonly ConsumableService consumableService;
readonly PackDetailService packDetailService;
readonly BatchPurchaseService batchPurchaseService;
private ObservableCollection increateList = new ObservableCollection();
public ObservableCollection IncreateList { get => increateList; set { Set(ref increateList, value); } } //
private ObservableCollection
packList = new ObservableCollection();
public ObservableCollection PackList { get => packList; set { Set(ref packList, value); } } //
private ObservableCollection
consumableServiceList = new ObservableCollection();
public ObservableCollection ConsumableServiceList { get => consumableServiceList; set { Set(ref consumableServiceList, value); } } //
private string discount = "1";
///
/// 折扣
///
public string Discount { get => discount; set { Set(ref discount, value); } } //
public ObservableCollection IncreateServiceList { get; set; } = new ObservableCollection();
public ObservableCollection MemberList { get; set; } = new ObservableCollection();
public ObservableCollection ConsumableList { get; set; } = new ObservableCollection();
public ObservableCollection PackServiceList { get; set; } = new ObservableCollection();
private readonly PackServiceService packServiceService;
///
/// 加载原数据
///
public List LoadList = new List();
public void InitPrintList()
{
TaskImage = MyPrintHelper.GetBarcodeImage(TaskId.ToString(),300,60);
BarcodeImage = MyPrintHelper.GetBarcodeImage(SkuId, 300, 60);
PrintList = new ObservableCollection();
var printingNames = PrinterSettings.InstalledPrinters;//获取本机的打印机数据
int index = -1;
int selectIndex = 0;
foreach (string name in printingNames)
{
if (name == "Microsoft XPS Document Writer" || name == "Microsoft Print to PDF" || name == "Fax")
{
continue;
}
index++;
if (name.Contains("Deli"))
{
selectIndex = index;
}
PrintList.Add(name);
}
try
{
var applicationPath = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string printNames = Path.Combine(applicationPath, "printName.init");
if (File.Exists(printNames))
{
PrintName = File.ReadAllText(printNames);
}
else
{
if (PrintList.Count > 0)
{
PrintName = PrintList[0].ToString();
}
}
}
catch (Exception)
{
}
}
public PackServiceViewModel(PackTaskService packTaskService, ConsumableService consumableService, PackServiceService packServiceService, PackDetailService packDetailService, BatchPurchaseService batchPurchaseService)//, long taskId
{
//TaskId = taskId;
this.consumableService = consumableService;
this.packTaskService = packTaskService;
this.packServiceService = packServiceService;
this.packDetailService = packDetailService;
var packServiceRes = this.packServiceService.SearchAll();
if (packServiceRes.Success)
{
if (packServiceRes.Data != null && packServiceRes.Data.Count() > 0)
{
foreach (var packService in packServiceRes.Data)
{
if (packService.ServiceType == ServiceType.增值服务)
App.Current.Dispatcher.Invoke(() =>
{
IncreateServiceList.Add(packService);//加载增值服务列表
});
if (packService.ServiceType == ServiceType.打包服务)
App.Current.Dispatcher.Invoke(() =>
{
PackServiceList.Add(packService);//加载工序服务列表
});
}
}
}
var res = this.packTaskService.GetPackMembers();//成员表
if (res.Success)
{
foreach (var item in res.Data)
{
App.Current.Dispatcher.Invoke(() =>
{
MemberList.Add(item);
});
}
}
var conRes = this.consumableService.SearchAll();
if (conRes.Success)
{
foreach (var item in conRes.Data)
{
App.Current.Dispatcher.Invoke(() =>
{
ConsumableList.Add(new ConsumableModel(consumableService)
{
Width = item.Width,
Weigth = item.Weigth,
Remark = item.Remark,
Price = item.Price,
Name = item.Name,
Length = item.Length,
Heigth = item.Heigth,
Id = item.Id
});
});
}
}
AddIncreateServiceCommand = new RelayCommand(AddIncreateService);
AddPackServiceCommand = new RelayCommand(AddPackService);
AddConsumableCommand = new RelayCommand(AddConsumable);
UpLoadPackCommand = new RelayCommand