public void Handle(ShoppingCartAddedProduct e) { using (var db = new CoreEcommerceDbContext()) { var temp = db.ShoppingCartItems.SingleOrDefault(i => i.ProductId == e.ProductId && i.ShoppingCartId == e.Id); if (temp != null) { temp.Quantity = e.Quantity; temp.UnitPrice = e.UnitPrice; temp.TotalPrice = e.TotalPrice; } else { db.ShoppingCartItems.Add(new ShoppingCartItem() { ShoppingCartId = e.Id, CreatedDate = e.CreatedDate, Quantity = e.Quantity, ProductId = e.ProductId, UnitPrice = e.UnitPrice, TotalPrice = e.TotalPrice, }); } db.SaveChanges(); } }
public DomainPaymentTransaction(Guid id, Guid paymentMethodId, string orderCode, long amount , string ipAddress, Guid languageId, string siteDomainUrl) { DateTime createdDate = DateTime.Now; PaymentMethod pm; Language lang = null; using (var db = new CoreEcommerceDbContext()) { pm = db.PaymentMethods.SingleOrDefault(i => i.Id == paymentMethodId); lang = db.Languages.SingleOrDefault(i => i.Id == languageId); } var type = AssemblyExtesions.FindType(pm.AssemblyType); if (type == null) { throw new Exception("Can not load assembly " + pm.AssemblyType); } var amountByCurrencyCode = (long)(amount * lang.CurrencyExchangeRate); var p = Activator.CreateInstance(type) as IPaymentMethod; var urlRedirect = p.GetRedirectUrl(pm, id, orderCode, amountByCurrencyCode, ipAddress, languageId, siteDomainUrl); ApplyChange(new PaymentTransactionCreated(id, orderCode, amountByCurrencyCode, paymentMethodId, createdDate, urlRedirect, ipAddress)); }
public JsonResult ListResult(Guid id, int?skip, int?take, string sortField, string orderBy) { List <FeShoppingCartPage.Item> rows; List <ContentLanguage> contentLangs; using (var db = new CoreEcommerceDbContext()) { rows = db.ShoppingCartItems.Join(db.Products, ci => ci.ProductId, p => p.Id, (ci, p) => new { Ci = ci, P = p }) .Where(i => i.Ci.ShoppingCartId == id) .Select(i => new FeShoppingCartPage.Item() { ProductCode = i.P.ProductCode, ProductId = i.P.Id, Quantity = i.Ci.Quantity, TotalPrice = i.Ci.TotalPrice, UnitPrice = i.Ci.UnitPrice, ProductPromotionId = i.Ci.ProductPromotionId }) .ToList(); var ids = rows.Select(i => i.ProductId).ToList(); ids.AddRange(rows.Select(i => i.ProductPromotionId).ToList()); contentLangs = db.ContentLanguages.Where(i => ids.Contains(i.Id)).ToList(); } foreach (var item in rows) { item.Title = contentLangs.GetValue(item.ProductId, "Title"); item.UrlImage = contentLangs.GetValue(item.ProductId, "UrlImage"); item.SeoUrlFriendly = contentLangs.GetValue(item.ProductId, "SeoUrlFriendly"); item.PromotionDescription = contentLangs.GetValue(item.ProductPromotionId, "Description"); } var total = rows.Count; return(Json(new { total, rows, success = true }, JsonRequestBehavior.AllowGet)); }
public static double CalculateDistance(Guid shoppingCartId, string address, double latitude, double longitude) { List <Distance> distances = new List <Distance>(); ShoppingCartShippingAddress cartAddress = new ShoppingCartShippingAddress(); cartAddress.Address = address; cartAddress.AddressLatitude = latitude; cartAddress.AddressLongitude = longitude; using (var db = new CoreEcommerceDbContext()) { distances = db.ShoppingCartItems.Where(i => i.ShoppingCartId == shoppingCartId) .Join(db.RelationShips, ci => ci.ProductId, r => r.FromId, (ci, r) => new { Ci = ci, R = r }) .Join(db.Suppliers, m => m.R.ToId, s => s.Id, (m, s) => new { S = s }) .Select(i => new Distance() { SupplierLat = i.S.AddressLatitude, SupplierLng = i.S.AddressLongitude }).ToList(); } foreach (var ds in distances) { ds.CartLat = cartAddress.AddressLatitude; ds.CartLng = cartAddress.AddressLongitude; ds.DistanceInKm = GeoExtensions.GetDistanceFromLatLonInKm(ds.CartLat, ds.CartLng, ds.SupplierLat, ds.SupplierLng); } if (distances.Count == 0) { return(0); } return(Math.Round(distances.Max(i => i.DistanceInKm), 2)); }
public ActionResult OrderListItem(string orderCode) { List <MonitorOrderItem> rows; List <ContentLanguage> contentLangs; using (var db = new CoreEcommerceDbContext()) { rows = db.ShoppingCartItems.Join(db.Products, ci => ci.ProductId, p => p.Id, (ci, p) => new { Ci = ci, P = p }) .Join(db.ShoppingCarts, m => m.Ci.ShoppingCartId, o => o.Id, (m, o) => new{ m.Ci, m.P, O = o }) .Where(m => m.O.OrderCode.Equals(orderCode, StringComparison.OrdinalIgnoreCase)) .Select(i => new MonitorOrderItem() { ProductCode = i.P.ProductCode, ProductId = i.P.Id, Quantity = i.Ci.Quantity }) .ToList(); var ids = rows.Select(i => i.ProductId).ToList(); contentLangs = db.ContentLanguages.Where(i => ids.Contains(i.Id)).ToList(); } foreach (var item in rows) { item.Title = contentLangs.GetValue(item.ProductId, "Title"); item.UrlImage = contentLangs.GetValue(item.ProductId, "UrlImage"); } //var total = rows.Count; return(View(rows)); }
public JsonResult QueryDr(string orderCode) { PaymentTransaction pt; PaymentMethod pm; using (var db = new CoreEcommerceDbContext()) { pt = db.PaymentTransactions .SingleOrDefault(i => i.OrderCode.Equals(orderCode, StringComparison.OrdinalIgnoreCase)); pm = db.PaymentMethods.SingleOrDefault(i => i.Id == pt.PaymentMethodId); } if (pt == null || pm == null) { return(Json(new { Ok = true, Data = new { Id = pt.Id }, Message = "Not found" }, JsonRequestBehavior.AllowGet)); } var type = AssemblyExtesions.FindType(pm.AssemblyType); if (type == null) { throw new Exception("Can not load assembly " + pm.AssemblyType); } var p = Activator.CreateInstance(type) as IPaymentMethod; var result = p.QueryDr(pt.Id); return(Json(new { Ok = result == Enums.ShoppingCartPayStatus.PaymentSuccess, Data = new { Id = pt.Id, Status = result } , Message = result.ToString() }, JsonRequestBehavior.AllowGet)); }
public void UpdateSeo(string seokeywords, string seoDesscription, Guid languageId, string seoUrlFiendly = "") { var id = Guid.Parse(Id); if (string.IsNullOrEmpty(seoUrlFiendly)) { List <ContentLanguage> contentLanguages; using (var db = new CoreEcommerceDbContext()) { contentLanguages = db.ContentLanguages.Where(i => i.Id == id).ToList(); } var title = contentLanguages.GetValue(id, languageId, "Title"); seoUrlFiendly = title.ToUrlSegment(); } if (ExistedSeoUrlFiendly(seoUrlFiendly, id)) { throw new Exception("Existed seo url friendly"); } seoUrlFiendly = RefindSeoUrlFiendly(seoUrlFiendly, id); ApplyChange(new UrlFriendlyCreated(seoUrlFiendly, "Product", id, "Product", "Detail")); ApplyChange(new ContentLanguageUpdated(id, languageId, "SeoUrlFriendly", seoUrlFiendly, "Product")); ApplyChange(new ContentLanguageUpdated(id, languageId, "SeoKeywords", seokeywords, "Product")); ApplyChange(new ContentLanguageUpdated(id, languageId, "SeoDescription", seoDesscription, "Product")); }
private static List <Product> ResultNoKeywords(List <Guid> categoryIds, out List <ContentLanguage> contentLanguages, Expression <Func <Product, bool> > productPredicate, int xskip, int xtake, out long total) { var isSearchWithCategory = categoryIds.Count > 0; using (var db = new CoreEcommerceDbContext()) { var tempNoKeywords = db.Products.AsQueryable(); if (isSearchWithCategory) { tempNoKeywords = tempNoKeywords.Join(db.RelationShips, p => p.Id, rs => rs.ToId, (p, rs) => new { P = p, Rs = rs }) .Where(m => categoryIds.Contains(m.Rs.FromId)).Select(i => i.P).Distinct(); } var queryable = tempNoKeywords.Where(productPredicate); total = queryable.LongCount(); var resultNoKeywords = queryable .OrderBy(i => i.CreatedDate) .Skip(xskip) .Take(xtake) .ToList(); var ids = resultNoKeywords.Select(i => i.Id).ToList(); contentLanguages = db.ContentLanguages.Where(i => ids.Contains(i.Id)).ToList(); return(resultNoKeywords); } }
public static long CalculateValue(Guid shoppingCartId, string voucherCode, long amount, Guid?userId) { VoucherCode code; VoucherMethod method = null; using (var db = new CoreEcommerceDbContext()) { code = db.VoucherCodes.SingleOrDefault( i => i.Code.Equals(voucherCode, StringComparison.OrdinalIgnoreCase)); if (code != null) { method = db.VoucherMethods.SingleOrDefault(i => i.Id == code.VoucherMethodId); } } if (method == null || string.IsNullOrEmpty(method.AssemblyType)) { return(0); } var type = AssemblyExtesions.FindType(method.AssemblyType); if (type == null) { throw new Exception("Can not load assembly " + method.AssemblyType); } var vm = Activator.CreateInstance(type) as IVoucherCodeMethod; return(vm.CalculateValue(shoppingCartId, amount, code, userId)); }
public static string GenerateCode() { var counter = 0; var now = DateTime.Now.ToString("yyMM"); while (true) { if (counter > 1000) { throw new Exception("Limited can not generate more"); } var code = (now + StringExtensions.RandomString(5)).ToUpper(); using (var db = new CoreEcommerceDbContext()) { var existed = db.VoucherCodes.FirstOrDefault(i => i.Code.Equals(code, StringComparison.OrdinalIgnoreCase)); if (existed == null) { return(code); } else { counter++; Thread.Sleep(1); } } } }
public static long ShippingCost(Guid shoppingCartId, Guid shippingMethodId, string address, double latitude, double longitude) { ShippingMethod methodInfo; using (var db = new CoreEcommerceDbContext()) { methodInfo = db.ShippingMethods.SingleOrDefault(i => i.Id == shippingMethodId); } if (methodInfo == null || string.IsNullOrEmpty(methodInfo.AssemblyType)) { return(0); } var type = AssemblyExtesions.FindType(methodInfo.AssemblyType); if (type == null) { throw new Exception("Can not load assembly " + methodInfo.AssemblyType); } var method = Activator.CreateInstance(type) as IShippingMethod; var result = method.CalculateCost(shoppingCartId, methodInfo, address, latitude, longitude); return(result); }
public void Handle(PaymentTransactionFailed e) { using (var db = new CoreEcommerceDbContext()) { var temp = db.PaymentTransactions.SingleOrDefault(i => i.Id == e.Id); temp.Status = (short)Enums.ShoppingCartPayStatus.PaymentFail; db.SaveChanges(); } }
public void Handle(ShoppingCartRemovedAllProduct e) { using (var db = new CoreEcommerceDbContext()) { var temp = db.ShoppingCartItems.Where(i => i.ShoppingCartId == e.Id); db.ShoppingCartItems.RemoveRange(temp); db.SaveChanges(); } }
public JsonResult ListAuditLog(string keywords, int?skip, int?take, string sortField, string orderBy) { var xtake = 10; var xskip = 0; long total = 0; if (skip != null) { xskip = skip.Value; } if (take != null) { xtake = take.Value; } if (string.IsNullOrEmpty(sortField)) { sortField = nameof(FeAuditLog.CreatedDate); } if (string.IsNullOrEmpty(orderBy)) { orderBy = "desc"; } List <FeAuditLog> rows = new List <FeAuditLog>(); Func <FeAuditLog, bool> predicate = m => true; if (!string.IsNullOrEmpty(keywords)) { predicate = m => m.CommandType.Contains(keywords) || m.CommandData.Contains(keywords) || m.Username.Contains(keywords) || m.Email.Contains(keywords) || m.Phone.Contains(keywords); } using (var db = new CoreEcommerceDbContext()) { var query = db.AuditLogs.Join(db.Users, a => a.UserId, u => u.Id, (a, u) => new { A = a, U = u }) .Select(m => new FeAuditLog() { Id = m.A.AlId, CreatedDate = m.A.CreatedDate, Username = m.U.Username, Phone = m.U.Phone, Email = m.U.Email, UserId = m.U.Id, CommandType = m.A.CommandType, CommandData = m.A.CommandData }).Where(predicate); total = query.LongCount(); rows = query.OrderByDescending(i => i.CreatedDate).Skip(xskip).Take(xtake).ToList(); } return(Json(new { total, rows, success = true }, JsonRequestBehavior.AllowGet)); }
public void Delete(Guid id) { using (var db = new CoreEcommerceDbContext()) { var temp = db.Suppliers.SingleOrDefault(i => i.Id == id); db.Suppliers.Remove(temp); db.SaveChanges(); } }
public JsonResult ConfrimPrint(Guid orderId) { ShoppingCart cart; using (var db = new CoreEcommerceDbContext()) { cart = db.ShoppingCarts.SingleOrDefault(i => i.Id == orderId); } MemoryMessageBuss.PushCommand(new PackAndPrintShoppingCart(orderId, cart.OrderCode, CurrentUserId, DateTime.Now)); return(Json(new { Ok = true, Data = new { Id = orderId }, Message = "Success" }, JsonRequestBehavior.AllowGet)); }
private bool ExistedSeoUrlFiendly(string seoUrlFiendly, Guid id) { using (var db = new CoreEcommerceDbContext()) { var existedSeoUrl = db.ContentLanguages.Any(i => i.Id != id && i.ColumnValue.Equals(seoUrlFiendly, StringComparison.OrdinalIgnoreCase)); return(existedSeoUrl); } }
public ActionResult Detail(string orderCode) { ShoppingCart order; using (var db = new CoreEcommerceDbContext()) { order = db.ShoppingCarts.SingleOrDefault( i => i.OrderCode.Equals(orderCode, StringComparison.OrdinalIgnoreCase)); } return(View(order)); }
public ActionResult Detail(Guid orderId) { ShoppingCart cart; PaymentTransaction payTrans; List <ContentLanguage> contentLanguages; var model = new FeOrderPaymentPage(); using (var db = new CoreEcommerceDbContext()) { cart = db.ShoppingCarts.SingleOrDefault(i => i.Id == orderId); var cartPaymentMethodId = cart.PaymentMethodId; var cartShippingMethodId = cart.ShippingMethodId; model.Payment = db.PaymentMethods.Select(i => new FeShoppingCartCheckoutPage.FeIdAndDescription() { Id = i.Id, Name = i.Name }) .SingleOrDefault(i => i.Id == cartPaymentMethodId) ?? new FeShoppingCartCheckoutPage.FeIdAndDescription(); model.Shipping = db.ShippingMethods.Select(i => new FeShoppingCartCheckoutPage.FeIdAndDescription() { Id = i.Id, Name = i.Name }) .SingleOrDefault(i => i.Id == cartShippingMethodId) ?? new FeShoppingCartCheckoutPage.FeIdAndDescription(); model.Address = db.ShoppingCartShippingAddresses .Where(i => i.ShoppingCartId == cart.Id).OrderByDescending(i => i.CreatedDate).FirstOrDefault() ?? new ShoppingCartShippingAddress(); model.OrderPromotion = db.OrderPromotions.Join(db.ShoppingCarts, pp => pp.Id, sc => sc.OrderPromotionId, (pp, sc) => new { Pp = pp, Sc = sc }) .Select(m => new FeOrderPromotion() { Id = m.Pp.Id, CreatedDate = m.Pp.CreatedDate, Actived = m.Pp.Actived, AmountToDiscount = m.Pp.AmountToDiscount, DiscountAmount = m.Pp.DiscountAmount, FreeShip = m.Pp.FreeShip, }).FirstOrDefault(); model.OrderPromotion = model.OrderPromotion ?? new FeOrderPromotion(); contentLanguages = db.ContentLanguages .Where(i => i.Id == cartPaymentMethodId || i.Id == cartShippingMethodId || i.Id == model.OrderPromotion.Id).ToList(); } model.Order = cart; model.OrderPromotion.Description = contentLanguages.GetValue(model.OrderPromotion.Id, "Description"); model.Shipping.Description = contentLanguages.GetValue(model.Shipping.Id, "Description"); model.Payment.Description = contentLanguages.GetValue(model.Payment.Id, "Description"); model.OrderPromotion.Description = contentLanguages.GetValue(model.OrderPromotion.Id, "Description"); return(View(model)); }
public JsonResult CheckVoucherCode(string voucherCode) { if (string.IsNullOrEmpty(voucherCode)) { return(Json(new { Ok = false, Data = new { VoucherValue = 0, Description = "voucher code required" }, Message = "voucher code required" }, JsonRequestBehavior.AllowGet)); } var id = GetShoppingCartId(); var currentUserId = UserSessionContext.CurrentUserId(); MemoryMessageBuss.PushCommand(new CheckVoucherCodeForShoppingCart(id, voucherCode, currentUserId)); ShoppingCart cart; string description = string.Empty; List <ContentLanguage> contentLanguages; using (var db = new CoreEcommerceDbContext()) { cart = db.ShoppingCarts.SingleOrDefault(i => i.Id == id); var voucher = db.VoucherCodes.SingleOrDefault( i => i.Code.Equals(voucherCode, StringComparison.OrdinalIgnoreCase)); if (voucher == null) { return(Json(new { Ok = false, Data = new { VoucherValue = 0, Description = "voucher code was not exist" }, Message = "voucher code was not exist" }, JsonRequestBehavior.AllowGet)); } contentLanguages = db.ContentLanguages.Where(i => i.Id == voucher.Id || i.Id == voucher.VoucherMethodId) .ToList(); } description = string.Join("<br>", contentLanguages.Where(i => i.ColumnName.Equals("Description")).Select(i => i.ColumnValue).ToList()); return(Json(new { Ok = true, Data = new { VoucherValue = cart.VoucherValue, Description = description }, Message = "Success" }, JsonRequestBehavior.AllowGet)); }
public void Handle(ProductPriceChanged e) { using (var db = new CoreEcommerceDbContext()) { var temp = db.Products.SingleOrDefault(i => i.Id == e.Id); if (temp != null) { temp.Price = e.Price; } db.SaveChanges(); } }
public JsonResult ShipSuccess(string orderCode, string note) { ShoppingCart cart; using (var db = new CoreEcommerceDbContext()) { cart = db.ShoppingCarts.SingleOrDefault(i => i.OrderCode.Equals(orderCode, StringComparison.OrdinalIgnoreCase)); } MemoryMessageBuss.PushCommand(new UpdateShippingStatusForShoppingCart(cart.Id, Enums.ShoppingCartShipStatus.ShippingSuccess, note, CurrentUserId, DateTime.Now)); return(Json(new { Ok = true, Data = new { Id = cart.Id }, Message = "Success" }, JsonRequestBehavior.AllowGet)); }
public void Handle(VoucherCodeDeleted e) { using (var db = new CoreEcommerceDbContext()) { var vc = db.VoucherCodes.SingleOrDefault(i => i.Id == e.Id); if (vc != null) { db.VoucherCodes.Remove(vc); db.SaveChanges(); } } }
public void Handle(ShoppingCartUpdatedShipStatus e) { using (var db = new CoreEcommerceDbContext()) { var temp = db.ShoppingCarts.SingleOrDefault(i => i.Id == e.Id); if (temp != null) { temp.ShippingStatus = e.ShipStatus; db.SaveChanges(); } } }
public void Handle(PaymentTransactionFailed e) { ShoppingCart cart; using (var db = new CoreEcommerceDbContext()) { var trans = db.PaymentTransactions.SingleOrDefault(i => i.Id == e.Id); cart = db.ShoppingCarts.SingleOrDefault( i => i.OrderCode.Equals(trans.OrderCode, StringComparison.OrdinalIgnoreCase)); } MemoryMessageBuss.PushCommand(new UpdatePaymentStatusForShoppingCart(cart.Id, Enums.ShoppingCartPayStatus.PaymentFail)); }
public void Handle(ShoppingCartClosedOrder e) { using (var db = new CoreEcommerceDbContext()) { var temp = db.ShoppingCarts.SingleOrDefault(i => i.Id == e.Id); if (temp != null) { temp.Status = (short)Enums.ShoppingCartStatus.OrderClosed; db.SaveChanges(); } } }
public void Handle(ShoppingCartPromotionCalulatedForOrderShipping e) { using (var db = new CoreEcommerceDbContext()) { var temp = db.ShoppingCarts.SingleOrDefault(i => i.Id == e.ShoppingCartId); if (temp != null) { temp.OrderPromotionId = e.OrderPromotionId; db.SaveChanges(); } } }
public void Handle(ShoppingCartReceivingTimeUpdated e) { using (var db = new CoreEcommerceDbContext()) { var temp = db.ShoppingCarts.SingleOrDefault(i => i.Id == e.Id); if (temp != null) { temp.ReceivingTime = e.ReceivingTime; db.SaveChanges(); } } }
public void Handle(ProductBoughtByCustomer e) { using (var db = new CoreEcommerceDbContext()) { var temp = db.Products.SingleOrDefault(i => i.Id == e.ProductId); if (temp != null) { temp.Quantity = e.Quantity; } db.SaveChanges(); } }
public void Handle(ShoppingCartLabelPackedAndPrinted e) { using (var db = new CoreEcommerceDbContext()) { var temp = db.ShoppingCarts.SingleOrDefault(i => i.Id == e.Id); if (temp != null) { temp.PackingStatus = (short)Enums.ShoppingCartPackingStatus.PackingDone; db.SaveChanges(); } } }