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 }) }); } }
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)); } }