using BBWY.Client.APIServices; using BBWY.Client.Models; using BBWY.Client.Views.BatchPurchase; using BBWY.Common.Extensions; using BBWY.Common.Models; using BBWY.Controls; using GalaSoft.MvvmLight.Command; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; namespace BBWY.Client.ViewModels { public class BatchPurchaseOrderListViewModel : BaseVM, IDenpendency { private BatchPurchaseService batchPurchaseService; private GlobalContext globalContext; private DateTime startDate; private DateTime endDate; private string searchPurchaseOrderId; private string searchPurchaseName; private string searchProductId; private string searchSkuId; private PurchaseOrderState? purchaseOrderState; private int pageIndex; private int pageSize; private bool isLoading; private long totalCount; public ICommand SearchPurchaseOrderCommand { get; set; } public ICommand OpenCreateNewPurchaseOrderDialogCommand { get; set; } public ICommand SetSearchDateCommand { get; set; } public ICommand SetPurchaseOrderStateCommand { get; set; } public ICommand OnPageIndexChangedCommand { get; set; } public ICommand PayPurchaseOrderCommand { get; set; } public ICommand CancelPurchaseOrderCommand { get; set; } public DateTime StartDate { get => startDate; set { Set(ref startDate, value); } } public DateTime EndDate { get => endDate; set { Set(ref endDate, value); } } public string SearchPurchaseOrderId { get => searchPurchaseOrderId; set { Set(ref searchPurchaseOrderId, value); } } public string SearchPurchaseName { get => searchPurchaseName; set { Set(ref searchPurchaseName, value); } } public string SearchProductId { get => searchProductId; set { Set(ref searchProductId, value); } } public string SearchSkuId { get => searchSkuId; set { Set(ref searchSkuId, value); } } public PurchaseOrderState? PurchaseOrderState { get => purchaseOrderState; set { Set(ref purchaseOrderState, value); } } public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } } public int PageSize { get => pageSize; set { Set(ref pageSize, value); } } public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } public long TotalCount { get => totalCount; set { Set(ref totalCount, value); } } public IList PurchaseOrderList { get; set; } public BatchPurchaseOrderListViewModel(GlobalContext globalContext, BatchPurchaseService batchPurchaseService) { this.batchPurchaseService = batchPurchaseService; SetSearchDateCommand = new RelayCommand(SetSearchDate); SetPurchaseOrderStateCommand = new RelayCommand(SetPurchaseOrderState); SearchPurchaseOrderCommand = new RelayCommand(InitQueryPurchaseOrder); OpenCreateNewPurchaseOrderDialogCommand = new RelayCommand(OpenCreateNewPurchaseOrderDialog); OnPageIndexChangedCommand = new RelayCommand(OnPageIndexChanged); PayPurchaseOrderCommand = new RelayCommand(PayPurchaseOrder); CancelPurchaseOrderCommand = new RelayCommand(CancelPurchaseOrder); PageSize = 10; this.globalContext = globalContext; EndDate = DateTime.Now.Date; StartDate = DateTime.Now.Date.AddDays(-15); PurchaseOrderList = new ObservableCollection(); InitQueryPurchaseOrder(); } private void CancelPurchaseOrder(object obj) { MessageBoxResult result = MessageBox.Show("确定取消订单?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning); if (result != MessageBoxResult.Yes) return; //; var parameters = (object[])obj; var PurchasePlatform = (Platform)parameters[0];//采购平台 var purchaseAccount = globalContext.User.Shop.PurchaseAccountList.FirstOrDefault(p => p.PurchasePlatformId == PurchasePlatform); var res = batchPurchaseService.CancelOrder(parameters[1].ToString(), purchaseAccount, ""); if (res.Success) { Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex)); return; } if (res.Data != null) MessageBox.Show(res.Data.Msg); } private void PayPurchaseOrder(object obj) { MessageBoxResult result = MessageBox.Show("确定支付货款?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning); if (result != MessageBoxResult.Yes) return; var parameters = (object[])obj; var PurchasePlatform = (Platform)parameters[0];//采购平台 var purchaseAccount = globalContext.User.Shop.PurchaseAccountList.FirstOrDefault(p => p.PurchasePlatformId == PurchasePlatform); var res = batchPurchaseService.PayOrder(parameters[1].ToString(), PurchasePlatform, purchaseAccount); if (res.Success) { Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex)); return; } if (res.Data != null) MessageBox.Show(res.Data.Msg); } private void InitQueryPurchaseOrder() { PageIndex = 1; Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex)); } private void SetPurchaseOrderState(PurchaseOrderState? purchaseOrderState) { this.PurchaseOrderState = purchaseOrderState; InitQueryPurchaseOrder(); } private void SetSearchDate(int d) { EndDate = d == 1 ? DateTime.Now.Date.AddDays(-1) : DateTime.Now; StartDate = DateTime.Now.Date.AddDays(d * -1); InitQueryPurchaseOrder(); } private void QueryPurchaseOrder(int pageIndex) { IsLoading = true; var response = batchPurchaseService.GetPurchaseOrderList(SearchProductId, SearchSkuId, SearchPurchaseName, SearchPurchaseOrderId, pageIndex, PageSize, StartDate, EndDate, this.PurchaseOrderState); IsLoading = false; if (!response.Success) { App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示")); return; } TotalCount = response.Data.Count; App.Current.Dispatcher.Invoke(() => PurchaseOrderList.Clear()); if (response.Data.ItemList == null || response.Data.ItemList.Count() == 0) return; var list = response.Data.ItemList.Map>(); App.Current.Dispatcher.Invoke(() => { foreach (var p in list) PurchaseOrderList.Add(p); }); } private void OpenCreateNewPurchaseOrderDialog() { var createWindow = new BatchCreateNewPurchaseOrder(); if (createWindow.ShowDialog() == true) { InitQueryPurchaseOrder(); //刷新采购单页面 } } private void OnPageIndexChanged(PageArgs pageArgs) { Task.Factory.StartNew(() => QueryPurchaseOrder(pageArgs.PageIndex)); } } }