public void Handle(ShoppingCartUpdatedPayStatus e)
        {
            if (e.PayStatus == (short)Enums.ShoppingCartPayStatus.PaymentSuccess)
            {
                var hubContext = GlobalHost.ConnectionManager.GetHubContext <SystemNotificationHub>();

                hubContext.Clients.All.broadCastMonitorMessage(new NotificationMessage()
                {
                    DataType = "MonitorBroadCastMessage",
                    DataJson = JsonConvert.SerializeObject(new { type = "refreshList", orderCode = e.OrderCode })
                });
            }
        }
Exemple #2
0
        public void Handle(ShoppingCartUpdatedPayStatus e)
        {
            ShoppingCartShippingAddress addr;
            ShoppingCart           order;
            List <OrderItem>       items;
            List <ContentLanguage> contentLanguages;
            Language lang;

            using (var db = new CoreEcommerceDbContext())
            {
                addr = db.ShoppingCartShippingAddresses.OrderByDescending(i => i.CreatedDate)
                       .FirstOrDefault(i => i.ShoppingCartId == e.Id);
                order = db.ShoppingCarts.SingleOrDefault(i => i.Id == e.Id);

                lang = db.Languages.SingleOrDefault(i => i.Id == e.LanguageId);

                items = db.ShoppingCartItems.Where(i => i.ShoppingCartId == e.Id)
                        .Select(i => new OrderItem()
                {
                    Id          = i.ProductId,
                    PromotionId = i.ProductPromotionId,
                    Price       = i.TotalPrice,
                    Quanity     = i.Quantity
                }).ToList();
                var ids = items.Select(i => i.Id).ToList();
                ids.AddRange(items.Select(i => i.PromotionId).ToList());
                contentLanguages = db.ContentLanguages.Where(i => ids.Contains(i.Id)).ToList();
            }
            var    orderUrl  = e.WebsiteUrl.Trim(new[] { '/' }) + "/Order/Detail/?orderCode=" + e.OrderCode;
            string orderInfo = "<br>Your order code: " + e.OrderCode + $" <a href='{orderUrl}'>Click here to check status</a>";

            orderInfo += "<table>";
            orderInfo += "<tr><td>Product</td><td>Quantity</td><td>Price</td><tr>";
            foreach (var itm in items)
            {
                itm.Title     = contentLanguages.GetValue(itm.Id, e.LanguageId, "Title");
                itm.Promotion = contentLanguages.GetValue(itm.PromotionId, e.LanguageId, "Description");
                orderInfo    += "<tr>";
                orderInfo    += $"<td>{itm.Title}<br>{itm.Promotion}</td><td>{itm.Quanity}</td><td>{itm.Price}</td>";
                orderInfo    += "</tr>";
            }
            orderInfo += "<tr>";
            var subtotal = (order.CartSubTotal * lang.CurrencyExchangeRate) + lang.CurrencyCode;

            orderInfo += $"<td>Subtotal:</td><td></td><td>{subtotal}</td>";
            orderInfo += "</tr><tr>";
            var cartDiscount = (order.CartDiscount * lang.CurrencyExchangeRate) + lang.CurrencyCode;

            orderInfo += $"<td>Discount:</td><td></td><td>-{cartDiscount}</td>";
            orderInfo += "</tr><tr>";
            var voucherValue = (order.VoucherValue * lang.CurrencyExchangeRate) + lang.CurrencyCode;

            orderInfo += $"<td>Voucher:</td><td>{order.VoucherCode}</td><td>-{voucherValue}</td>";
            orderInfo += "</tr><tr>";
            var shippingFee = (order.ShippingFee * lang.CurrencyExchangeRate) + lang.CurrencyCode;

            orderInfo += $"<td>Shipping:</td><td></td><td>-{shippingFee}</td>";
            orderInfo += "</tr><tr>";
            var cartTotal = (order.CartTotal * lang.CurrencyExchangeRate) + lang.CurrencyCode;

            orderInfo += $"<td>Subtotal:</td><td></td><td>{cartTotal}</td>";
            orderInfo += "</tr>";
            orderInfo += "</table>";

            if (e.PayStatus == (short)Enums.ShoppingCartPayStatus.PaymentSuccess)
            {
                var subject = "Your order completed, we doing for packing and shipping. Order code: " + e.OrderCode;
                var content = "Thank you for your order";
                content += orderInfo;
                MemoryMessageBuss.PushCommand(new SendEmailToUser(Guid.NewGuid(), addr.Email, addr.AddressName, subject, content, DateTime.Now, e.Id, DateTime.Now));
            }
        }