public OrderOperationViewModel(
            OrderService orderService,
            RecipientService recipientService,
            IEventAggregator eventAggregator,
            DhlWaybillService dhlWaybillService,
            CnRecipientLabelBuilder cnRecipientLabelBuilder,
            IRegionManager manager,
            PacketDeliveredReportService PacketDeliveredReportService,
            WaybillQueryManager SearchManager,
            DirectoryService directoryService,
            ProcessModeInfoProvider ProcessModeInfoProvider
            )
        {
            this.ProcessModeInfoProvider = ProcessModeInfoProvider;
            this.SearchManager = SearchManager;
            this.manager = manager;
            this.orderService = orderService;
            this.recipientService = recipientService;
            this.eventAggregator = eventAggregator;
            this.dhlWaybillService = dhlWaybillService;
            this.cnRecipientLabelBuilder = cnRecipientLabelBuilder;
            this.directoryService = directoryService;
            this.PacketDeliveredReportService = PacketDeliveredReportService;
            this.loadOrderListCommand = new DelegateCommand(LoadOrderList);
            this.saveOrderCommand = new DelegateCommand(SaveOrder);
            this.cleanFilterTxtCommand = new DelegateCommand(CleanFilterTxt);
            this.selectAllCommand = new DelegateCommand(SelectAll);
            this.deSelectAllCommand = new DelegateCommand(DeSelectAll);
            this.deleteOrderCommand = new DelegateCommand(DeleteOrder);
            this.processWaybillCommand = new DelegateCommand<string>(ProcessWaybill);
            this.saveSelectedOrderCommand = new DelegateCommand(SaveSelectedOrder);
            this.showConfirmDialogCommand = new DelegateCommand(() => { IsShowConfirmDialog = true; });
            this.cancelProcessCommand = new DelegateCommand(() => { IsShowConfirmDialog = false; });
            this.printSelectedCnLabelCommand = new DelegateCommand(PrintSelectedCnLabel);
            this.printWaybillsCommand = new DelegateCommand(PrintWaybill);
            this.combinePrintCommand = new DelegateCommand(CombinationPrint);
            this.createDlogCommand = new DelegateCommand(CreateDLog);
            this.bringTodayCommand = new DelegateCommand(BringToday);
            this.bringYesterdayCommand = new DelegateCommand(BringToYesterday);

            this.eventAggregator.GetEvent<RecipientNewOrderAddedEvent>().Subscribe
             (OnRecipientNewOrderAdded, ThreadOption.UIThread);

            this.ModeList = this.ProcessModeInfoProvider.ModeList;
            this.SelectedDHLAgent = this.ModeList.Single(x => x.Name.StartsWith("中德快递"));

            
        }
        public RecipientViewModel(
            RecipientService recipientService,
            ConfigurationService configurationService,
            IEventAggregator eventAggregator,
            DirectoryService directoryService,
            CnRecipientLabelBuilder cnLabelPrinter,
            AgentListService agentListSvc)
        {
            this.recipientService = recipientService;
            this.agentListSvc = agentListSvc;
            this.loadRecipientListCommand = new DelegateCommand(LoadRecipientList);

            this.removeRecipientCommand = new DelegateCommand<int?>(RemoveRecipient, CanExecuteRemoveRecipient);
            this.saveRecipientChangeCommand = new DelegateCommand<RecipientItemViewModel>(SaveRecipient, CanExeciteSaveRecipient);
            this.copyRecipientInfoCommand = new DelegateCommand(CopyRecipientInfo);

            this.cleanFilterTxtCommand = new DelegateCommand(() => this.FilterTxt = string.Empty);
            this.printCNAddressLabelCommand = new DelegateCommand(PrintCNAddressLabel, CanExecutePrintCNAddressLabel);
            this.addToNewOrderCommand = new DelegateCommand(AddToNewOrder, CanAddToNewOrder);
            this.addPhotoCommand = new DelegateCommand(AddPhotoFlag);
            this.addStampCommand = new DelegateCommand(AddStampFlat);

            this.eventAggregator = eventAggregator;
            this.cnLabelPrinter = cnLabelPrinter;
            this.directoryService = directoryService;

            this.PropertyChanged += new PropertyChangedEventHandler(RecipientViewModel_PropertyChanged);

            this.eventAggregator.GetEvent<ParseRawTextRecipientFinishedEvent>().Subscribe
                (OnParseRawTextRecipientFinished, ThreadOption.UIThread);
        }