示例#1
0
        public async Task <IActionResult> Edit(int id, [Bind("PhoneId,OrderId")] PhoneOrder phoneOrder)
        {
            if (id != phoneOrder.PhoneId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(phoneOrder);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!PhoneOrderExists(phoneOrder.PhoneId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["OrderId"] = new SelectList(_context.Order, "Id", "Id", phoneOrder.OrderId);
            ViewData["PhoneId"] = new SelectList(_context.Phone, "Id", "Id", phoneOrder.PhoneId);
            return(View(phoneOrder));
        }
示例#2
0
        public async Task <IActionResult> Create([Bind("PhoneId,OrderId")] PhoneOrder phoneOrder)
        {
            if (ModelState.IsValid)
            {
                _context.Add(phoneOrder);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["OrderId"] = new SelectList(_context.Order, "Id", "Id", phoneOrder.OrderId);
            ViewData["PhoneId"] = new SelectList(_context.Phone, "Id", "Id", phoneOrder.PhoneId);
            return(View(phoneOrder));
        }
示例#3
0
        // GET: Phones
        public async Task <IActionResult> Index(
            string name,
            double?priceFrom,
            double?priceTo,
            int?companyId,
            PhoneOrder PhoneOrder = PhoneOrder.NameAsc)
        {
            IQueryable <Phone> phonesSort = _context.Phones.Include(s => s.Company);

            if (!string.IsNullOrWhiteSpace(name))
            {
                phonesSort = phonesSort.Where(s => s.Name.Contains(name));
            }

            if (priceFrom.HasValue)
            {
                phonesSort = phonesSort.Where(s => s.Price >= priceFrom.Value);
            }

            if (priceTo.HasValue)
            {
                phonesSort = phonesSort.Where(s => s.Price <= priceTo.Value);
            }

            if (companyId.HasValue)
            {
                phonesSort = phonesSort.Where(s => s.CompanyId == companyId.Value);
            }


            ViewBag.NameSort    = PhoneOrder == PhoneOrder.NameAsc ? PhoneOrder.NameDesc : PhoneOrder.NameAsc;
            ViewBag.PriceSort   = PhoneOrder == PhoneOrder.PriceAsc ? PhoneOrder.PriceDesc : PhoneOrder.PriceAsc;
            ViewBag.CompanySort = PhoneOrder == PhoneOrder.CompanyAsc ? PhoneOrder.CompanyDesc : PhoneOrder.CompanyAsc;

            switch (PhoneOrder)
            {
            case PhoneOrder.NameAsc:
                phonesSort = phonesSort.OrderBy(s => s.Name);
                break;

            case PhoneOrder.NameDesc:
                phonesSort = phonesSort.OrderByDescending(s => s.Name);
                break;

            case PhoneOrder.PriceAsc:
                phonesSort = phonesSort.OrderBy(s => s.Price);
                break;

            case PhoneOrder.PriceDesc:
                phonesSort = phonesSort.OrderByDescending(s => s.Price);
                break;

            case PhoneOrder.CompanyAsc:
                phonesSort = phonesSort.OrderBy(s => s.Company.Name);
                break;

            case PhoneOrder.CompanyDesc:
                phonesSort = phonesSort.OrderByDescending(s => s.Company.Name);
                break;
            }

            PhonesIndexViewModel model = new PhonesIndexViewModel()
            {
                Phones    = await phonesSort.ToListAsync(),
                Name      = name,
                CompanyId = companyId,
                PriceFrom = priceFrom,
                PriceTo   = priceTo,
                Companies = new SelectList(_context.Companies, "Id", "Name")
            };

//            //CRUD
//            List<Company> companies = _context.Companies.ToList();
//            //companies.Insert(0, new Company { Id = 0, Name = "Все" });
//
//            var phones = _context.Phones.Include(p => p.Category).Include(p => p.Company).ToList();
//
//            IndexViewModel ivm = new IndexViewModel();
//
//            if (companyId.HasValue)
//            {
//                phones = phones.Where(p => p.Company.Id == companyId.Value).ToList();
//                ivm.Company = companies.FirstOrDefault(c => c.Id == companyId.Value);
//            }
//
//            if (!string.IsNullOrWhiteSpace(name))
//            {
//                phones = phones.Where(p => p.Name.Contains(name, StringComparison.OrdinalIgnoreCase)).ToList();
//                ivm.Name = name;
//            }
//
//            ivm.Companies = companies;
//            ivm.Phones = phones;

//            return View(ivm);
            return(View(model));
        }
        public ActionResult SaveOrder(PhoneOrder phoneOrder)
        {
            List <string> giftIds   = null;
            List <string> couponIds = null;

            //不能为null 为null会报错
            if (phoneOrder.GiftCardDetailIds.IsNotNullOrEmpty())
            {
                giftIds = phoneOrder.GiftCardDetailIds.Split(',').ToList();
            }
            if (phoneOrder.CouponDetailIds.IsNotNullOrEmpty())
            {
                couponIds = phoneOrder.CouponDetailIds.Split(',').ToList();
            }
            //合并相同产品
            phoneOrder.Products = phoneOrder.Products.GroupBy(a => a.ID)
                                  .Select(a => new CollectionIDNum {
                ID = a.Key, Num = a.Sum(b => b.Num), BirthdayCard = a.Max(b => b.BirthdayCard ?? "")
            }).ToList();

            OpResult result  = null;
            Invoice  invoice = null;

            if (phoneOrder.InvoiceType != null)
            {
                invoice = new Invoice {
                    InvoiceType = phoneOrder.InvoiceType.ToString(), InvoiceTitle = phoneOrder.InvoiceTitle
                };
            }
            //地址
            Action <Orders> setAddress;

            if (phoneOrder.AddressType == 0)
            {
                setAddress = osv.SetOrderAddress(a => a.Id.Equals(phoneOrder.AddressId, StringComparison.OrdinalIgnoreCase) &&
                                                 a.CustomerId.Equals(phoneOrder.CustomerId, StringComparison.OrdinalIgnoreCase));
            }
            else
            {
                setAddress = osv.SetOrderAddress(null, a => a.Id.Equals(phoneOrder.AddressId, StringComparison.OrdinalIgnoreCase), phoneOrder.RevierName, phoneOrder.RevierPhone);
            }
            //优惠金额处理
            if (phoneOrder.CouponPay > 0 || phoneOrder.GiftCardPay > 0)
            {
                var integralDeductionCashRate = CommonRules.IntegralDeductionCashRate; //积分抵扣比例
                if (phoneOrder.CouponPay > 0)
                {                                                                      //优惠券支付
                    if (phoneOrder.OrderTotalAmount == phoneOrder.CouponPay)
                    {
                        phoneOrder.IntegralPay = 0;//不需要积分
                    }
                    else if (phoneOrder.OrderTotalAmount < phoneOrder.CouponPay)
                    {                               //优惠券总额>订单金额
                        phoneOrder.CouponPay   = phoneOrder.OrderTotalAmount;
                        phoneOrder.IntegralPay = 0; //不需要积分
                    }
                    else if (phoneOrder.OrderTotalAmount < (phoneOrder.IntegralPay + phoneOrder.CouponPay))
                    {//积分+优惠券》订单总额
                        phoneOrder.IntegralPay = phoneOrder.OrderTotalAmount - phoneOrder.CouponPay;
                    }
                }
                else
                { //代金卡支付
                    if (phoneOrder.OrderTotalAmount < phoneOrder.GiftCardPay)
                    {
                        phoneOrder.IntegralPay = 0;//不需要积分
                    }
                    else if (phoneOrder.OrderTotalAmount < phoneOrder.GiftCardPay)
                    {                               //优惠券总额>订单金额
                        phoneOrder.GiftCardPay = phoneOrder.OrderTotalAmount;
                        phoneOrder.IntegralPay = 0; //不需要积分
                    }
                    else if (phoneOrder.OrderTotalAmount < (phoneOrder.IntegralPay + phoneOrder.GiftCardPay))
                    {//积分+优惠券》订单总额
                        phoneOrder.IntegralPay = (phoneOrder.OrderTotalAmount - phoneOrder.GiftCardPay) * integralDeductionCashRate;
                    }
                }
            }
            //积分》订单总额
            if (phoneOrder.IntegralPay > phoneOrder.OrderTotalAmount)
            {
                phoneOrder.IntegralPay = phoneOrder.OrderTotalAmount;
            }

            //添加订单
            #region 添加订单
            if (phoneOrder.NO.IsNullOrTrimEmpty())
            {
                //创建订单
                result = osv.CreateOrder(
                    //客户信息
                    a => a.Id.Equals(phoneOrder.CustomerId, StringComparison.OrdinalIgnoreCase),
                    //客户地址信息
                    setAddress,
                    //取出订单明细
                    a =>
                {
                    var pids = phoneOrder.Products.Select(b => b.ID);
                    return(a.Where(p => pids.Contains(p.Id)).ToList()
                           .Select(b => new OrderDetails
                    {
                        ProductId = b.ParentId,
                        Size = b.Size,
                        BirthdayCard = phoneOrder.Products.Where(c => c.ID.Equals(b.Id)).Max(c => c.BirthdayCard ?? ""),
                        TotalPrice = (decimal)(b.Price == null ? 0 : b.Price) * phoneOrder.Products.Where(c => c.ID.Equals(b.Id)).Sum(c => c.Num),
                        Price = (decimal)(b.Price == null ? 0 : b.Price),
                        SubProductId = b.Id,
                        Num = phoneOrder.Products.Where(c => c.ID.Equals(b.Id)).Sum(c => c.Num)
                    }));
                },
                    //发票
                    invoice,
                    //订单赋值
                    a =>
                {
                    a.FeeType            = FeeType.Cash;               //货到付现金
                    a.OrderSource        = OrderSource.TelOrder;       //电话订单
                    a.Candle             = phoneOrder.Candle;          //蜡烛
                    a.DeliverMsg         = phoneOrder.DeliverMsg;      //备注
                    a.Remark             = phoneOrder.Remark;          //订单备注
                    a.RequiredTime       = phoneOrder.ReceiveTime;     //接收时间
                    a.RequiredTimeBucket = phoneOrder.TimeBucket;      //收货时间段
                    a.CouponPay          = phoneOrder.CouponPay;       //优惠券支付
                    a.GiftCardPay        = phoneOrder.GiftCardPay;     //代金卡支付
                    a.IntegralPay        = phoneOrder.IntegralPay;     //积分支付
                    a.UsedIntegralVal    = phoneOrder.UsedIntegralVal; //使用积分
                },
                    //当前用户ID
                    Helper.UserCache.CurrentUser.Id, 2, phoneOrder.TimeBucket, couponIds, giftIds, phoneOrder.OrderTotalAmount
                    );
            }
            #endregion
            //修改订单
            #region
            else
            {
                //修改订单
                result = osv.EditOrder(
                    //客户地址信息
                    setAddress,
                    //取出订单明细
                    a =>
                {
                    var pids = phoneOrder.Products.Select(b => b.ID).ToList();
                    var ps   = a.Where(p => pids.Contains(p.Id)).ToList();

                    return(ps
                           .Select(b => new OrderDetails
                    {
                        ProductId = b.ParentId,
                        Size = b.Size,
                        BirthdayCard = phoneOrder.Products.Where(c => c.ID.Equals(b.Id)).Max(c => c.BirthdayCard ?? ""),
                        TotalPrice = (decimal)(b.Price == null ? 0 : b.Price) * phoneOrder.Products.Where(c => c.ID.Equals(b.Id)).Sum(c => c.Num),
                        Price = (decimal)(b.Price == null ? 0 : b.Price),
                        SubProductId = b.Id,
                        Num = phoneOrder.Products.Where(c => c.ID.Equals(b.Id)).Sum(c => c.Num)
                    }));
                },
                    //发票
                    invoice,
                    //订单赋值
                    a =>
                {
                    a.No                 = phoneOrder.NO;          //订单号
                    a.Candle             = phoneOrder.Candle;      //蜡烛
                    a.DeliverMsg         = phoneOrder.DeliverMsg;  //备注
                    a.Remark             = phoneOrder.Remark;      //客服备注
                    a.RequiredTime       = phoneOrder.ReceiveTime; //接收时间
                    a.RequiredTimeBucket = phoneOrder.TimeBucket;  //收货时间段
                    //a.CouponPay = phoneOrder.CouponPay;//优惠券支付
                    //a.GiftCardPay = phoneOrder.GiftCardPay;//代金卡支付
                    //a.IntegralPay = phoneOrder.IntegralPay;//积分支付
                    a.UsedIntegralVal = phoneOrder.UsedIntegralVal;    //使用积分
                },
                    //当前用户ID
                    Helper.UserCache.CurrentUser.Id
                    );
            }
            #endregion

            return(Json(new
            {
                validate = result.Successed,
                order = result.Data,
                message = result.Message
            }));
        }