public override void HandelOrderCompleted(OrderCompletedEventArgs e)
        {
            if (e == null) return;
            if (e.Order == null) return;
            // do nothing

            if (!WebStoreConfiguration.LogDoNothingOrderHandler) { return; }

            log.Info("DoNothingOrderCompletedHandler called");

            StringBuilder orderDetails = new StringBuilder();
            orderDetails.Append("Order from " + e.Order.CustomerFirstName + " " + e.Order.CustomerLastName);
            orderDetails.Append("\r\n");

            // you can also get the customer information from the order
            // e.Order.BillingLastName
            // e.Order.BillingFirstName
            // e.Order.CustomerEmail
            // etc, lots of other properties on the order object

            // this DataSet has 2 relaqted tables Offers and Products
            // where the products correspond to the products included in the offer(s)
            DataSet dsOffers = Order.GetOrderOffersAndProducts(e.Order.StoreGuid, e.Order.OrderGuid);

            foreach (DataRow row in dsOffers.Tables["Offers"].Rows)
            {
                string oguid = row["OfferGuid"].ToString();
                orderDetails.Append(row["Name"].ToString() + " ");
                orderDetails.Append(row["Quantity"].ToString() + " @ ");
                orderDetails.Append(string.Format(e.CurrencyCulture, "{0:c}", Convert.ToDecimal(row["OfferPrice"])));
                orderDetails.Append("\r\n");

                string whereClause = string.Format("OfferGuid = '{0}'", oguid);
                DataView dv = new DataView(dsOffers.Tables["Products"], whereClause, "", DataViewRowState.CurrentRows);

                if (dv.Count > 1)
                {
                    foreach (DataRow r in dsOffers.Tables["Products"].Rows)
                    {
                        string poguid = r["OfferGuid"].ToString();
                        if (oguid == poguid)
                        {
                            orderDetails.Append(r["Name"].ToString() + " ");
                            orderDetails.Append(r["Quantity"].ToString() + "  \r\n");

                        }

                    }
                }

            }

            log.Info(orderDetails.ToString());
        }
Example #2
0
        protected virtual async void OnOrderCompleted(object sender, OrderCompletedEventArgs e)
        {
            // Моделирует задержку между моментом, когда заказ приготовлен, и помещением информации на информационное табло
            var delayEmulator = Task.Delay(TimeSpan.FromMilliseconds(_random.Next(MIN_DELAY_TIME_IN_MILLISECONDS, MAX_DELAY_TIME_IN_MILLISECONDS)));

            lock (_locker)
            {
                _completingOrdersNumbers.Remove(e.CompletdOrderInfo.OrderNumber);                // TODO: if order number don't contains - log this

                if (!_completedOrdersInfosByNumber.ContainsKey(e.CompletdOrderInfo.OrderNumber)) // TODO: if order number contains - log this
                {
                    _completedOrdersInfosByNumber.Add(e.CompletdOrderInfo.OrderNumber, e.CompletdOrderInfo.ProductDeliveryWindowNumber);
                }
            }

            await delayEmulator;

            OrderMarkedCompleted(this, new OrderMarkedCompletedEventArgs(e.CompletdOrderInfo));
        }
Example #3
0
        public static void ConfirmOrder(Store store, Order order)
        {
            if (store == null) { return; }
            if (order == null) { return; }

            CommerceConfiguration commerceConfig = SiteUtils.GetCommerceConfig();
            CultureInfo defaultCulture = SiteUtils.GetDefaultUICulture();

            string subjectTemplate
                        = ResourceHelper.GetMessageTemplate(defaultCulture,
                        commerceConfig.DefaultConfirmationEmailSubjectTemplate);

            string textBodyTemplate
                        = ResourceHelper.GetMessageTemplate(defaultCulture,
                        commerceConfig.DefaultConfirmationEmailTextBodyTemplate);

            int pageId = -1;

            List<PageModule> pageModules = PageModule.GetPageModulesByModule(store.ModuleId);
            foreach (PageModule pm in pageModules)
            {
                // use first pageid found, really a store should only
                // be on one page
                pageId = pm.PageId;
                break;

            }

            Module m = new Module(store.ModuleId);

            Order.EnsureSalesReportData(order.OrderGuid, m.ModuleGuid, pageId, store.ModuleId);

            SiteUser.UpdateTotalRevenue(order.UserGuid);

            SiteSettings siteSettings = CacheHelper.GetCurrentSiteSettings();
            CultureInfo currencyCulture = ResourceHelper.GetCurrencyCulture(siteSettings.GetCurrency().Code);
            OrderCompletedEventArgs e = new OrderCompletedEventArgs(order, currencyCulture);

            foreach (OrderCompletedHandlerProvider p in OrderCompletedHandlerProviderManager.Providers)
            {

                try
                {
                    p.HandelOrderCompleted(e);
                }
                catch (Exception ex)
                {
                    log.Error(ex);
                }
            }

            //TODO: make this asynchronous so if it takes a long time or has a timeout error it does
            //not prevent the redirect
            SendConfirmEmail(
                defaultCulture,
                currencyCulture,
                siteSettings,
                pageId,
                commerceConfig,
                store,
                order,
                subjectTemplate,
                textBodyTemplate);
        }
 public abstract void HandelOrderCompleted(OrderCompletedEventArgs e);
 public override void HandelOrderCompleted(OrderCompletedEventArgs e)
 {
 }
 public void OnOrderCompleted(object sender, OrderCompletedEventArgs e)
 {
     Logged(this, $"Повар \"{sender}\" приготовил заказ с номером {e.CompletdOrderInfo.OrderNumber}.{Environment.NewLine}" +
            $"Зазаз был направлен в окно выдачи с номером {e.CompletdOrderInfo.ProductDeliveryWindowNumber}.");
 }