public void PrintActionProcessing()
        {
            var orderHistoryService = new OrderHistoryService(_log, _time, _dbFactory);
            var batchManager        = new BatchManager(_log, _time, orderHistoryService, _weightService);
            var actionService       = new SystemActionService(_log, _time);
            var serviceFactory      = new ServiceFactory();

            var labelBatchService = new LabelBatchService(_dbFactory,
                                                          actionService,
                                                          _log,
                                                          _time,
                                                          _weightService,
                                                          serviceFactory,
                                                          _emailService,
                                                          batchManager,
                                                          _pdfMaker,
                                                          AddressService.Default,
                                                          orderHistoryService,
                                                          AppSettings.DefaultCustomType,
                                                          AppSettings.LabelDirectory,
                                                          AppSettings.ReserveDirectory,
                                                          AppSettings.TemplateDirectory,
                                                          new LabelBatchService.Config(),
                                                          AppSettings.IsSampleLabels);

            labelBatchService.ProcessPrintBatchActions(null);
        }
        public void RePrintBatch(long batchId)
        {
            var actionService       = new SystemActionService(_log, _time);
            var serviceFactory      = new ServiceFactory();
            var orderHistoryService = new OrderHistoryService(_log, _time, _dbFactory);
            var batchManager        = new BatchManager(_log, _time, orderHistoryService, _weightService);

            var batchService = new LabelBatchService(_dbFactory,
                                                     actionService,
                                                     _log,
                                                     _time,
                                                     _weightService,
                                                     serviceFactory,
                                                     _emailService,
                                                     batchManager,
                                                     _pdfMaker,
                                                     AddressService.Default,
                                                     orderHistoryService,
                                                     AppSettings.DefaultCustomType,
                                                     AppSettings.LabelDirectory,
                                                     AppSettings.ReserveDirectory,
                                                     AppSettings.TemplateDirectory,
                                                     new LabelBatchService.Config(),
                                                     AppSettings.IsSampleLabels);

            var result = batchService.PrintBatch(batchId, _company.Id, null);

            _log.Info("Success: " + result.Success.ToString());
        }
        protected override void RunCallback()
        {
            var dbFactory           = new DbFactory();
            var time                = new TimeService(dbFactory);
            var log                 = GetLogger();
            var actionService       = new SystemActionService(GetLogger(), time);
            var orderHistoryService = new OrderHistoryService(log, time, dbFactory);
            var serviceFactory      = new ServiceFactory();
            var weightService       = new WeightService();
            var pdfMaker            = new PdfMakerByIText(GetLogger());
            var batchManager        = new BatchManager(log, time, orderHistoryService, weightService);

            CompanyDTO company = null;

            using (var db = dbFactory.GetRDb())
            {
                company = db.Companies.GetByIdWithSettingsAsDto(CompanyId);
            }

            var addressService    = AddressService.Default;
            var emailSmtpSettings = SettingsBuilder.GetSmtpSettingsFromCompany(company, AppSettings.IsDebug, AppSettings.IsSampleLabels);
            var emailService      = new EmailService(GetLogger(), emailSmtpSettings, addressService);


            var labelBatchService = new LabelBatchService(dbFactory,
                                                          actionService,
                                                          GetLogger(),
                                                          time,
                                                          weightService,
                                                          serviceFactory,
                                                          emailService,
                                                          batchManager,
                                                          pdfMaker,
                                                          addressService,
                                                          orderHistoryService,
                                                          AppSettings.DefaultCustomType,
                                                          AppSettings.LabelDirectory,
                                                          AppSettings.ReserveDirectory,
                                                          AppSettings.TemplateDirectory,
                                                          new LabelBatchService.Config()
            {
                PrintErrorsToEmails = new[] { company.SellerEmail, company.SellerWarehouseEmailAddress },
                PrintErrorsCCEmails = new[] { EmailHelper.RaananEmail, EmailHelper.SupportDgtexEmail },
            },
                                                          AppSettings.IsSampleLabels);

            labelBatchService.ProcessPrintBatchActions(null);
        }
        public virtual ActionResult GetLabel(long orderId)
        {
            var log = LogService.Info("GetLabel");

            log.Info("begin, orderId=" + orderId);

            var companyId = AccessManager.CompanyId;

            if (!companyId.HasValue)
            {
                throw new ArgumentNullException("CompanyId");
            }

            var printBatchService = new LabelBatchService(DbFactory,
                                                          ActionService,
                                                          LogService,
                                                          Time,
                                                          WeightService,
                                                          ServiceFactory,
                                                          EmailService,
                                                          BatchManager,
                                                          PdfMaker,
                                                          new AddressService(null, null, null),
                                                          OrderHistoryService,
                                                          AppSettings.DefaultCustomType,
                                                          AppSettings.LabelDirectory,
                                                          AppSettings.ReserveDirectory,
                                                          AppSettings.TemplateDirectory,
                                                          new LabelBatchService.Config(),
                                                          AppSettings.IsSampleLabels);

            var result = printBatchService.PrintLabel(orderId, companyId.Value, AccessManager.UserId);

            if (result.PrintPackId.HasValue)
            {
                result.Url = Models.UrlHelper.GetPrintLabelPathById(result.PrintPackId);

                log.Info("end, result.url=" + result.Url);
                return(Redirect(result.Url));
            }

            var printMessage = "-" + String.Join("<br/>- ", result.Messages.Select(m => m.Text).ToList());
            var message      = printMessage + "<br/>" + result.FailedSummary;

            log.Info("end, message=" + message);
            return(RedirectToAction("Message", "Home", new { Message = HttpUtility.UrlEncode(message.Replace("<br />", Environment.NewLine)) }));
        }
        public void AutoBuyAmazonNextDay()
        {
            var orderHistoryService = new OrderHistoryService(_log, _time, _dbFactory);
            var batchManager        = new BatchManager(_log, _time, orderHistoryService, _weightService);
            var actionService       = new SystemActionService(_log, _time);
            var serviceFactory      = new ServiceFactory();

            var labelBatchService = new LabelBatchService(_dbFactory,
                                                          actionService,
                                                          _log,
                                                          _time,
                                                          _weightService,
                                                          serviceFactory,
                                                          _emailService,
                                                          batchManager,
                                                          _pdfMaker,
                                                          AddressService.Default,
                                                          orderHistoryService,
                                                          AppSettings.DefaultCustomType,
                                                          AppSettings.LabelDirectory,
                                                          AppSettings.ReserveDirectory,
                                                          AppSettings.TemplateDirectory,
                                                          new LabelBatchService.Config(),
                                                          AppSettings.IsSampleLabels);

            var autoPurchaseService = new LabelAutoBuyService(_dbFactory,
                                                              _log,
                                                              _time,
                                                              batchManager,
                                                              labelBatchService,
                                                              actionService,
                                                              _emailService,
                                                              _weightService,
                                                              _company.Id);

            autoPurchaseService.PurchaseAmazonNextDay();
        }
        protected override void RunCallback()
        {
            CompanyDTO company   = null;
            var        dbFactory = new DbFactory();
            var        time      = new TimeService(dbFactory);
            var        log       = GetLogger();

            var now = time.GetAppNowTime();

            if (!time.IsBusinessDay(now))
            {
                return;
            }

            using (var db = dbFactory.GetRDb())
            {
                company = db.Companies.GetByIdWithSettingsAsDto(CompanyId);
            }
            var fromAddressList = new CompanyAddressService(company);

            var serviceFactory = new ServiceFactory();
            var pdfMaker       = new PdfMakerByIText(GetLogger());
            var actionService  = new SystemActionService(log, time);
            var addressService = new AddressService(null,
                                                    fromAddressList.GetReturnAddress(MarketIdentifier.Empty()),
                                                    fromAddressList.GetPickupAddress(MarketIdentifier.Empty()));
            var emailSmtpSettings = SettingsBuilder.GetSmtpSettingsFromCompany(company, AppSettings.IsDebug, AppSettings.IsSampleLabels);
            var emailService      = new EmailService(GetLogger(), emailSmtpSettings, addressService);

            var weightService = new WeightService();

            var orderHistoryService = new OrderHistoryService(log, time, dbFactory);
            var batchManager        = new BatchManager(log, time, orderHistoryService, weightService);
            var labelBatchService   = new LabelBatchService(dbFactory,
                                                            actionService,
                                                            log,
                                                            time,
                                                            weightService,
                                                            serviceFactory,
                                                            emailService,
                                                            batchManager,
                                                            pdfMaker,
                                                            AddressService.Default,
                                                            orderHistoryService,
                                                            AppSettings.DefaultCustomType,
                                                            AppSettings.LabelDirectory,
                                                            AppSettings.ReserveDirectory,
                                                            AppSettings.TemplateDirectory,
                                                            new LabelBatchService.Config()
            {
                PrintErrorsToEmails = new[] { company.SellerEmail, company.SellerWarehouseEmailAddress },
                PrintErrorsCCEmails = new[] { EmailHelper.RaananEmail, EmailHelper.SupportDgtexEmail },
            },
                                                            AppSettings.IsSampleLabels);

            var autoPurchaseService = new LabelAutoBuyService(dbFactory,
                                                              log,
                                                              time,
                                                              batchManager,
                                                              labelBatchService,
                                                              actionService,
                                                              emailService,
                                                              weightService,
                                                              company.Id);

            autoPurchaseService.PurchaseAmazonNextDay();
        }
        public virtual ActionResult PrintLabelsForBatch(long batchId)
        {
            LogI("PrintLabelsForBatch, batchId=" + batchId);

            try
            {
                var companyId = AccessManager.CompanyId;
                if (!companyId.HasValue)
                {
                    throw new ArgumentNullException("CompanyId");
                }

                var when = Time.GetAppNowTime();
                var by   = AccessManager.UserId;

                var actionId = ActionService.AddAction(Db,
                                                       SystemActionType.PrintBatch,
                                                       batchId.ToString(),
                                                       new PrintBatchInput()
                {
                    BatchId   = batchId,
                    CompanyId = companyId.Value,
                    UserId    = by
                },
                                                       null,
                                                       by);

                LogI("PrintLabelsForBatch, actionId=" + actionId);

                if (AppSettings.IsDebug)
                {
                    var labelBatchService = new LabelBatchService(DbFactory,
                                                                  ActionService,
                                                                  LogService,
                                                                  Time,
                                                                  WeightService,
                                                                  ServiceFactory,
                                                                  EmailService,
                                                                  BatchManager,
                                                                  new PdfMakerByIText(LogService),
                                                                  new AddressService(null, null, null),
                                                                  OrderHistoryService,
                                                                  AppSettings.DefaultCustomType,
                                                                  AppSettings.LabelDirectory,
                                                                  AppSettings.ReserveDirectory,
                                                                  AppSettings.TemplateDirectory,
                                                                  new LabelBatchService.Config(),
                                                                  AppSettings.IsSampleLabels);


                    _debugPrintLabelThread = new Thread(() =>
                    {
                        labelBatchService.ProcessPrintBatchActions(null);
                    });
                    _debugPrintLabelThread.Start();
                }


                return(JsonGet(MessageResult.Success("", actionId.ToString())));
            }
            catch (Exception ex)
            {
                LogE("PrintLabelsForBatch error", ex);
                return(JsonGet(MessageResult.Error("Print Error: " + ex.Message)));
            }
        }