public JsonResult Create(CMS_OrderAdminModels Order) { var status = 200; try { var model = new CMS_CheckOutModels { CreatedUser = CurrentUser.UserId, ModifiedUser = CurrentUser.UserId, Customer = new CMS_DTO.CMSCustomer.CMS_CustomerAnonymousModels { Address = Order.Address, City = Order.City, Company = Order.Company, Country = Order.Country, Description = Order.Description, Email = Order.Email, FirstName = Order.FirstName, LastName = Order.LastName, Phone = Order.Phone, Id = Order.Id }, TotalPrice = Order.TotalPrice, TotalDiscount = Order.TotalDiscount, SubTotalPrice = Order.SubTotal, ListItem = Order.Items, IsTemp = false //admin }; if (model != null && model.ListItem != null && model.ListItem.Any() && !string.IsNullOrEmpty(Order.DiscountID)) { model.ListItem.Add(new CMS_ItemModels { DiscountID = Order.DiscountID, DiscountType = Order.DiscountType, DiscountValue = Order.DiscountValue }); } var OrderId = string.Empty; var result = _fac.CreateOrder(model, ref OrderId); if (!result) { status = 500; } } catch (Exception ex) { NSLog.Logger.Error("Create_Error : ", ex); } var obj = new { Status = status, }; return(Json(obj, JsonRequestBehavior.AllowGet)); }
public ActionResult CheckOut() { CMS_CheckOutModels model = new CMS_CheckOutModels(); try { var _Orders = GetListOrderCookie(); NSLog.Logger.Info("List Order Cookie", JsonConvert.SerializeObject(_Orders)); if (_Orders != null && _Orders.Any()) { var ItemIds = _Orders.Select(x => x.ItemId).ToList(); var data = _fac.GetList().Where(o => ItemIds.Contains(o.Id)) .Select(o => new CMS_ItemModels { Price = o.ProductPrice, ProductID = o.Id, ProductName = o.ProductName, Quantity = o.Quantity }).ToList(); if (data != null && data.Any()) { data.ForEach(o => { var item = _Orders.FirstOrDefault(z => z.ItemId.Equals(o.ProductID)); o.Quantity = item.Quantity; o.TotalPrice = Convert.ToDouble(o.Price * item.Quantity); }); model.ListItem = data; model.TotalPrice = data.Sum(o => o.TotalPrice); model.SubTotalPrice = data.Sum(o => o.TotalPrice); } } /* get information customer from session */ if (Session["UserClient"] != null) { var CusInfo = Session["UserClient"] as UserSession; model.Customer.FirstName = CusInfo.FirstName; model.Customer.LastName = CusInfo.LastName; model.Customer.Phone = CusInfo.Phone; model.Customer.Email = CusInfo.Email; model.Customer.Address = CusInfo.Address; model.Customer.Id = CusInfo.UserId; model.Customer.PostCode = CusInfo.PostCode; model.Customer.City = CusInfo.City; model.Customer.Country = CusInfo.Country; } } catch (Exception ex) { NSLog.Logger.Error("CheckOut", ex); } return(View(model)); }
public JsonResult Create(CMS_OrderAdminModels Order) { var status = 200; try { var model = new CMS_CheckOutModels { CreatedUser = CurrentUser.UserName, ModifiedUser = CurrentUser.UserName, Customer = new CMS_DTO.CMSCustomer.CMS_CustomerAnonymousModels { Address = Order.Address, City = Order.City, Company = Order.Company, Country = Order.Country, Description = Order.Description, Email = Order.Email, FirstName = Order.FirstName, LastName = Order.LastName, Phone = Order.Phone, Id = Order.Id }, ListItem = Order.Items, OrderType = (byte)CMS_Common.Commons.EOrderType.Expense, TotalPrice = Order.Items != null?Order.Items.Sum(o => o.TotalPrice) : 0, SubTotalPrice = Order.Items != null?Order.Items.Sum(o => o.TotalPrice) : 0, IsTemp = false //admin }; var OrderId = string.Empty; var result = _fac.CreateOrder(model, ref OrderId); if (!result) { status = 500; } } catch (Exception ex) { NSLog.Logger.Error("Create_Error : ", ex); } var obj = new { Status = status, }; return(Json(obj, JsonRequestBehavior.AllowGet)); }
public ActionResult CheckOut(CMS_CheckOutModels model) { try { var _Orders = GetListOrderCookie(); NSLog.Logger.Info("List Order Cookie", JsonConvert.SerializeObject(_Orders)); if (_Orders != null && _Orders.Any()) { var ItemIds = _Orders.Select(x => x.ItemId).ToList(); var data = _fac.GetList().Where(o => ItemIds.Contains(o.Id)) .Select(o => new CMS_ItemModels { Price = o.ProductPrice, ProductID = o.Id, ProductName = o.ProductName, Quantity = o.Quantity }).ToList(); if (data != null && data.Any()) { data.ForEach(o => { var item = _Orders.FirstOrDefault(z => z.ItemId.Equals(o.ProductID)); o.Quantity = item.Quantity; o.TotalPrice = Convert.ToDouble(o.Price * item.Quantity); }); model.ListItem = data; model.TotalPrice = data.Sum(o => o.TotalPrice); model.SubTotalPrice = data.Sum(o => o.TotalPrice); if (!string.IsNullOrEmpty(model.DiscountID)) { model.ListItem.Add(new CMS_ItemModels { DiscountID = model.DiscountID, DiscountType = model.DiscountType, DiscountValue = model.DiscountValue }); if (model.DiscountType == (byte)CMS_Common.Commons.EValueType.Percent) { model.TotalDiscount = CommonHelper.RoundingOption4(model.TotalPrice * (model.DiscountValue / 100)); } else { model.TotalDiscount = model.DiscountValue; } model.TotalPrice = CommonHelper.RoundingOption4(model.TotalPrice - model.TotalDiscount); } } var OrderId = string.Empty; var result = _facOrder.CreateOrder(model, ref OrderId); if (result) { //get info order if (!string.IsNullOrEmpty(OrderId)) { var modelOrder = new CMS_OrderModels(); modelOrder = _facOrder.GetDetailOrder(OrderId); //body mail var body = CommonHelper.CreateBodyMail(modelOrder); var subject = "[V/v đơn hàng " + modelOrder.OrderNo + "]"; //Send to admin CommonHelper.SendContentMail(ConfigurationManager.AppSettings["LamodeMail"], body, "", subject, "", ""); //Send to customer CommonHelper.SendContentMail(modelOrder.Email, body, "", subject, "", ""); } HttpCookie currentUserCookie = HttpContext.Request.Cookies["cms-order"]; HttpContext.Response.Cookies.Remove("cms-order"); currentUserCookie.Expires = DateTime.Now.AddDays(-10); currentUserCookie.Value = null; HttpContext.Response.SetCookie(currentUserCookie); return(RedirectToAction("Index", "Home")); } else { model.IsError = true; } } } catch (Exception ex) { NSLog.Logger.Error("CheckOut", ex); } return(View(model)); }
public bool CreateOrder(CMS_CheckOutModels model, ref string OrderId) { NSLog.Logger.Info("CreateOrder_Request:", model); var ret = true; using (var db = new CMS_Context()) { using (var trans = db.Database.BeginTransaction()) { m_Semaphore.WaitOne(); try { var active = (byte)Commons.EStatus.Actived; if (string.IsNullOrEmpty(model.Customer.Id) && !string.IsNullOrEmpty(model.Customer.LastName)) { // create new customer model.Customer.Id = Guid.NewGuid().ToString(); var eCus = new CMS_Customer { ID = model.Customer.Id, FirstName = model.Customer.FirstName, LastName = model.Customer.LastName, Email = model.Customer.Email, Phone = model.Customer.Phone, CreatedDate = DateTime.Now, LastModified = DateTime.Now, CustomerType = (int)CMS_Common.Commons.ECustomerType.Anonymous, HomeCountry = model.Customer.Country, OfficeZipCode = model.Customer.PostCode, Status = active, Anniversary = Commons.MinDate, ValidTo = Commons.MinDate, HomeStreet = model.Customer.Address, OfficeStreet = model.Customer.Address, }; db.CMS_Customer.Add(eCus); } // create order OrderId = Guid.NewGuid().ToString(); var eOrder = new CMS_Order { ID = OrderId, StoreID = model.StoreID, //OrderNo = CommonHelper.RandomNumberOrder(), OrderNo = CommonHelper.GenerateOrderNo(model.StoreID, active, model.OrderType), ReceiptNo = model.IsTemp ? "" : CommonHelper.GenerateReceiptNo(model.StoreID, active, model.OrderType), ReceiptCreatedDate = model.IsTemp ? Commons.MinDate : DateTime.Now, CustomerID = model.Customer.Id, TotalBill = model.TotalPrice, SubTotal = model.SubTotalPrice, TotalDiscount = model.TotalDiscount, Cashier = model.IsTemp ? "" : model.CreatedUser, CreatedDate = DateTime.Now, LastModified = DateTime.Now, CreatedUser = string.IsNullOrEmpty(model.CreatedUser) ? model.Customer.Id : model.CreatedUser, ModifiedUser = string.IsNullOrEmpty(model.ModifiedUser) ? model.Customer.Id : model.ModifiedUser, Status = active, IsTemp = model.IsTemp, OrderType = model.OrderType, }; db.CMS_Order.Add(eOrder); // create order detail if (model.ListItem != null && model.ListItem.Any()) { var lstOrderDetail = new List <CMS_OrderDetail>(); foreach (var item in model.ListItem) { lstOrderDetail.Add(new CMS_OrderDetail { ID = Guid.NewGuid().ToString(), OrderID = OrderId, ProductID = item.ProductID, Remark = string.IsNullOrEmpty(item.ProductID) ? item.ProductName : "", Price = item.Price, Quantity = (decimal)item.Quantity, Description = string.IsNullOrEmpty(model.Customer.Description) ? item.Description : model.Customer.Description, CreatedDate = DateTime.Now, CreatedUser = string.IsNullOrEmpty(model.CreatedUser) ? model.Customer.Id : model.CreatedUser, ModifiedUser = string.IsNullOrEmpty(model.ModifiedUser) ? model.Customer.Id : model.ModifiedUser, //CreatedUser = model.IsTemp ? model.Customer.Id : (string.IsNullOrEmpty(item.EmployeeID) ? model.CreatedUser : item.EmployeeID), //ModifiedUser = model.IsTemp ? model.Customer.Id : (string.IsNullOrEmpty(item.EmployeeID) ? model.ModifiedUser : item.EmployeeID), EmployeeID = item.EmployeeID, LastModified = DateTime.Now, DiscountID = item.DiscountID, DiscountValue = item.DiscountValue, DiscountType = item.DiscountType, DiscountAmount = item.DiscountAmount, Status = active, }); } db.CMS_OrderDetail.AddRange(lstOrderDetail); /* update quantity of product */ var listProductID = model.ListItem.Select(o => o.ProductID).ToList(); var listProductDB = db.CMS_Products.Where(o => listProductID.Contains(o.ID) && o.Status == (byte)Commons.EStatus.Actived && o.TypeCode == (byte)Commons.EProductType.Product).ToList(); foreach (var product in listProductDB) { var sign = -1; if (model.OrderType == (byte)Commons.EOrderType.Expense) { sign = +1; } product.Quantity = product.Quantity + ((sign) * (decimal)(model.ListItem.Where(o => o.ProductID == product.ID).Select(o => o.Quantity).FirstOrDefault())); //if (product.Quantity < 0) //{ // ret = false; //} } } if (ret == true) { db.SaveChanges(); trans.Commit(); } } catch (Exception ex) { NSLog.Logger.Error("CreateOrder_Error:", ex); trans.Rollback(); ret = false; } finally { m_Semaphore.Release(); db.Dispose(); } } } return(ret); }