예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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));
        }
예제 #4
0
        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));
        }
예제 #5
0
        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);
        }