private OrderPackage ShipItems(Order order, string trackingNumber, string serviceProvider, string serviceCode, bool dontShip, string shippingMethodId = null) { var p = new OrderPackage { ShipDateUtc = DateTime.UtcNow, TrackingNumber = trackingNumber, ShippingProviderId = serviceProvider, ShippingProviderServiceCode = serviceCode, OrderId = order.bvin, ShippingMethodId = string.IsNullOrEmpty(shippingMethodId) == false ? shippingMethodId : string.Empty }; foreach (GridViewRow gvr in ItemsGridView.Rows) { if (gvr.RowType == DataControlRowType.DataRow) { var lineItemId = (long)ItemsGridView.DataKeys[gvr.RowIndex].Value; var lineItem = order.GetLineItem(lineItemId); if (lineItem == null || lineItem.IsNonShipping) { continue; } var qty = 0; var QtyToShip = (TextBox)gvr.FindControl("QtyToShip"); if (QtyToShip != null) { if (!int.TryParse(QtyToShip.Text, out qty)) { qty = 0; } } // Prevent shipping more than ordered if order is not recurring if (!order.IsRecurring && qty > lineItem.Quantity - lineItem.QuantityShipped) { qty = lineItem.Quantity - lineItem.QuantityShipped; } if (qty > 0) { p.Items.Add(new OrderPackageItem(lineItem.ProductId, lineItem.Id, qty)); p.Weight += lineItem.ProductShippingWeight * qty; } } } p.WeightUnits = WebAppSettings.ApplicationWeightUnits; if (p.Items.Count > 0) { order.Packages.Add(p); if (!dontShip) { HccApp.OrdersShipPackage(p, order); } HccApp.OrderServices.Orders.Update(order); } return(p); }
public bool OrdersShipPackage(OrderPackage package, Order order) { if (order == null) { throw new NullReferenceException("order"); } if (package == null) { throw new NullReferenceException("package"); } package.HasShipped = true; OrdersShipItems(package, order); var c = new OrderTaskContext(CurrentRequestContext); c.Order = order; c.UserId = CurrentCustomerId; if (!Workflow.RunByName(c, WorkflowNames.PackageShipped)) { EventLog.LogEvent("PackageShippedWorkflow", "Package Shipped Workflow Failed", EventLogSeverity.Debug); foreach (var item in c.Errors) { EventLog.LogEvent("PackageShippedWorkflow", item.Description, EventLogSeverity.Debug); } } return(true); }
private void OrdersShipItems(OrderPackage package, Order order) { if (package.Items.Count == 0) { return; } foreach (var pi in package.Items) { var li = order.GetLineItem(pi.LineItemId); if (li == null || li.IsNonShipping) { continue; } // Prevent shipping more than ordered if order is not recurring if (!order.IsRecurring && pi.Quantity > li.Quantity - li.QuantityShipped) { pi.Quantity = li.Quantity - li.QuantityShipped; } if (pi.Quantity <= 0) { pi.Quantity = 0; } else { CatalogServices.InventoryLineItemShipQuantity(li, pi.Quantity); } } }
private OrderPackage ShipItems(Commerce.Orders.Order o, string trackingNumber, string serviceProvider, string serviceCode) { var p = new OrderPackage { ShipDateUtc = DateTime.UtcNow, TrackingNumber = trackingNumber, ShippingProviderId = serviceProvider, ShippingProviderServiceCode = serviceCode }; foreach (var li in o.Items) { if (li != null) { var qty = li.Quantity; p.Items.Add(new OrderPackageItem(li.ProductId, li.Id, qty)); p.Weight += li.ProductShippingWeight * qty; } } p.WeightUnits = WebAppSettings.ApplicationWeightUnits; o.Packages.Add(p); HccApp.OrdersShipPackage(p, o); o.EvaluateCurrentShippingStatus(); HccApp.OrderServices.Orders.Update(o); return(p); }
//protected void lstShippingProvider_SelectedIndexChanged(object sender, System.EventArgs e) //{ // LoadServiceCodes(); //} //private void LoadServiceCodes() //{ // this.lstServiceCode.Items.Clear(); // IShippingService p = MerchantTribe.Commerce.Shipping.AvailableServices.FindById(this.lstShippingProvider.SelectedValue); // if (p != null) { // foreach (IServiceCode li in p.ListAllServiceCodes()) // { // this.lstServiceCode.Items.Add(new System.Web.UI.WebControls.ListItem(li.DisplayName, li.Code)); // } // } // if (this.lstServiceCode.Items.Count > 0) { // this.lstServiceCode.Visible = true; // } // else { // this.lstServiceCode.Visible = false; // } // this.lstShippingProvider.UpdateAfterCallBack = true; // this.lstServiceCode.UpdateAfterCallBack = true; //} protected void PackagesGridView_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e) { if (e.CommandName == "TrackingNumberUpdate") { if (e.CommandSource is System.Web.UI.Control) { Order o = MTApp.OrderServices.Orders.FindForCurrentStore(Request.QueryString["id"]); GridViewRow row = (GridViewRow)((System.Web.UI.Control)e.CommandSource).NamingContainer; TextBox trackingNumberTextBox = (TextBox)row.FindControl("TrackingNumberTextBox"); if (trackingNumberTextBox != null) { string idstring = (string)e.CommandArgument; long pid = 0; long.TryParse(idstring, out pid); OrderPackage package = o.Packages.Where(y => y.Id == pid).SingleOrDefault(); if (package != null) { package.TrackingNumber = trackingNumberTextBox.Text; MTApp.OrderServices.Orders.Update(o); } } } } LoadOrder(); }
protected void Button1_Click(object sender, EventArgs e) { if (Session["CustomerUID"] != null && (dsPackage.dtSelectedPackageDataTable)Session["selectedPackage"] != null) { OrderPackageDetail opd; OrderPackage op = new OrderPackage(); clsPackage pk = new clsPackage(); DataTable dt = new DataTable(); DataTable dtOrderPackage = new DataTable(); int OrderPackageUID = 0; //Insert Order op.CustomerUID = Convert.ToInt32(Session["CustomerUID"]); op.OrderNo = lblOrderNo.Text.Trim(); op.OrderDate = Convert.ToDateTime(lblOrderDate.Text.Trim()); op.Total = Convert.ToDecimal(txtTotal.Text.Trim()); op.VAT = Convert.ToDecimal(txtVat.Text.Trim()); op.GrandTotal = Convert.ToDecimal(txtGrandTotal.Text.Trim()); op.StatusFlage = "A"; op.CUser = 99; op.CWhen = DateTime.Now; op.MUser = 99; op.MWhen = DateTime.Now; db.OrderPackages.InsertOnSubmit(op); db.SubmitChanges(); //Insert Order Detail dtOrderPackage = pk.SearchPackageOrdeByOrderNo(lblOrderNo.Text.Trim()); if (dtOrderPackage.Rows.Count > 0 && dtOrderPackage != null) { OrderPackageUID = Convert.ToInt32(dtOrderPackage.Rows[0]["UID"]); dt = (dsPackage.dtSelectedPackageDataTable)Session["selectedPackage"]; for (int i = 0; i <= dt.Rows.Count - 1; i++) { opd = new OrderPackageDetail(); opd.OrderPackageUID = OrderPackageUID; opd.PackageUID = Convert.ToInt32(dt.Rows[i]["UID"]); opd.UnitPrice = Convert.ToDecimal(dt.Rows[i]["UnitPrice"]); opd.Qty = Convert.ToInt32(dt.Rows[i]["Qty"]); opd.Total = opd.UnitPrice * opd.Qty; opd.StatusFlag = "A"; opd.CUser = 99; opd.CWhen = DateTime.Now; opd.MUser = 99; opd.MWhen = DateTime.Now; db.OrderPackageDetails.InsertOnSubmit(opd); db.SubmitChanges(); opd = null; } } Session["OrderNo"] = lblOrderNo.Text.Trim(); Response.Redirect("PackageOrder3.aspx"); } else { ClientScript.RegisterClientScriptBlock(this.GetType(), "Information", "alert('Session หมดอายุ กรุณาเลือกแพ็คเกจที่ต้องการใหม่อีกครั้งครับ')", true); } }
public Guid?CreateOrder(OrderPackage package, string orderUserId) { logger.InfoFormat("CreateOrder: {0} ", JsonConvert.SerializeObject(new { package, orderUserId })); try { using (AuctionDB db = new AuctionDB()) { var defaultValues = db.DefaultValues.SingleOrDefault(); var orderUser = db.Users.Where(u => u.Id.Equals(orderUserId)).SingleOrDefault(); if (orderUser == null || defaultValues == null) { logger.ErrorFormat("CreateOrder: Something is null {0} ", JsonConvert.SerializeObject(new { orderUser, defaultValues })); return(null); } Order order = new Order { Currency = defaultValues.Currency, Id = Guid.NewGuid(), User = orderUser, NumberOfTokens = (package == OrderPackage.SILVER ? defaultValues.SilverTokenNumber : package == OrderPackage.GOLD ? defaultValues.GoldTokenNumber : defaultValues.PlatinuTokenNumber), Status = OrderStatus.CANCELED }; order.Price = order.NumberOfTokens * defaultValues.TokenValue; db.Orders.Add(order); db.SaveChanges(); logger.InfoFormat("CreateOrder: new order {0} ", JsonConvert.SerializeObject(new { order.Id, order.Currency, order.NumberOfTokens, order.Status, order.Price, })); return(order.Id); } } catch (Exception e) { logger.Error("CreateOrder", e); } return(null); }
public void TestGeneratePackageContent() { OrderPackage op = new OrderPackage(); op.TotalAmount = "1"; op.ClientIP = "127.0.0.1"; op.OrderNO = "16642817866003386000"; var pk = op.GeneratePackageContent(); Assert.IsTrue(pk == "bank_type=WX&body=XXX&fee_type=1&input_charset=GBK¬ify_url=http%3a%2f%2fwww.qq.com&out_trade_no=16642817866003386000&partner=1900000109&spbill_create_ip=127.0.0.1&total_fee=1&sign=BEEF37AD19575D92E191C1E4B1474CA9"); }
public void TestGenereatePaySign() { OrderPackage op = new OrderPackage(); op.TotalAmount = "1"; op.ClientIP = "127.0.0.1"; op.OrderNO = "16642817866003386000"; PreOrderRequest por = new PreOrderRequest(); por.Package = op; por.GeneratePaySign(); Assert.IsTrue(por.PaySign == "7717231c335a05165b1874658306fa431fe9a0de"); }
private void ShipOrPackageItems(bool dontShip) { Order order = MTApp.OrderServices.Orders.FindForCurrentStore(Request.QueryString["id"]); OrderShippingStatus previousShippingStatus = order.ShippingStatus; string serviceCode = string.Empty; if (this.lstTrackingProvider.SelectedValue != null) { serviceCode = this.lstTrackingProvider.SelectedValue; } OrderPackage p = ShipItems(order, this.TrackingNumberField.Text.Trim(), order.ShippingProviderId, serviceCode, dontShip); ReloadOrder(previousShippingStatus); }
public ActionResult Create(CreateOrderViewModel model) { logger.InfoFormat("Create-POST: {0}", JsonConvert.SerializeObject(new { user = User.Identity.GetUserName(), model })); if (ModelState.IsValid) { OrderPackage package = model.Package == "SILVER" ? OrderPackage.SILVER : model.Package == "GOLD" ? OrderPackage.GOLD : model.Package == "PLATINUM" ? OrderPackage.PLATINUM : OrderPackage.ERROR; string userId = User.Identity.GetUserId(); if (String.IsNullOrEmpty(userId) || package == OrderPackage.ERROR) { return(RedirectToAction("Index", new { message = OrderMessageId.Error })); } Guid?orderId = data.CreateOrder(package, userId); if (orderId == null) { return(RedirectToAction("Index", new { message = OrderMessageId.Error })); } return(Redirect("https://stage.centili.com/widget/WidgetModule?api=564f47646ce7f954ad981d6b1b6166fc&country=RS&countrylock=true&clientid=" + orderId.ToString())); } else { var dv = data.GetDetailsDefaultValues(); if (dv == null) { return(RedirectToAction("Index", new { message = OrderMessageId.Error })); } ViewBag.platinum = dv.PlatinuTokenNumber; ViewBag.silver = dv.SilverTokenNumber; ViewBag.gold = dv.GoldTokenNumber; ViewBag.tokenPrice = dv.TokenValue; ViewBag.currency = dv.Currency; } return(View(model)); }
private OrderPackage ShipItems(Order o, string trackingNumber, string serviceProvider, string serviceCode, bool dontShip) { OrderPackage p = new OrderPackage(); p.ShipDateUtc = DateTime.UtcNow; p.TrackingNumber = trackingNumber; p.ShippingProviderId = serviceProvider; p.ShippingProviderServiceCode = serviceCode; foreach (GridViewRow gvr in this.ItemsGridView.Rows) { if (gvr.RowType == DataControlRowType.DataRow) { LineItem li = o.GetLineItem((long)this.ItemsGridView.DataKeys[gvr.RowIndex].Value); if (li != null) { int qty = 0; TextBox QtyToShip = (TextBox)gvr.FindControl("QtyToShip"); if (QtyToShip != null) { if (!int.TryParse(QtyToShip.Text, out qty)) { qty = 0; } } p.Items.Add(new OrderPackageItem(li.ProductId, li.Id, qty)); p.Weight += (li.ProductShippingWeight * qty); } } } p.WeightUnits = WebAppSettings.ApplicationWeightUnits; o.Packages.Add(p); if (!dontShip) { MTApp.OrdersShipPackage(p, o); } MTApp.OrderServices.Orders.Update(o); return(p); }
public bool OrdersUnshipItems(OrderPackage package, Order order) { if (order == null) { throw new NullReferenceException("order"); } if (package == null) { throw new NullReferenceException("package"); } var result = true; if (package.Items.Count == 0) { return(result); } foreach (var pi in package.Items) { var li = order.GetLineItem(pi.LineItemId); if (li == null || li.IsNonShipping) { continue; } // Prevent unshipping more than shipped if order is not recurring var quantityToUnship = pi.Quantity; if (!order.IsRecurring && pi.Quantity > li.QuantityShipped) { quantityToUnship = li.QuantityShipped; } CatalogServices.InventoryLineItemUnShipQuantity(li, quantityToUnship); } return(result); }
public List <OrderPackage> CalculateCheapestPrice(Int32 AmountOfLicenses, List <PriceRange> PriceRanges, out Double Total) { List <OrderPackage> result = new List <OrderPackage>(); Total = 0; Int32 AmountsOfLicensesleft = AmountOfLicenses; PriceRanges.Sort(ComparePrice); for (int i = 0; i < PriceRanges.Count; i++) { for (int j = PriceRanges[i].MaxAmount; j >= PriceRanges[i].MinAmount; j--) { if (j <= AmountsOfLicensesleft) { OrderPackage Order = new OrderPackage(); Int32 AmountOfThisPackage = AmountsOfLicensesleft / j; //Int32 AmountForThisPrice = Convert.ToInt32(Math.Floor(tmp)); Order.PriceRange = PriceRanges[i]; Order.AmountOfLicenses = j; Total += Order.AmountOfLicenses * Order.PriceRange.PricePerLicense; for (int k = 0; k < AmountOfThisPackage; k++) { result.Add(Order); } AmountsOfLicensesleft = AmountsOfLicensesleft - (AmountOfThisPackage * j); } } } return(result); }
public OperationResult CreateOrder(UserForm userForm, OrderData data, out string productName) { var result = new OperationResult(); //尋找是否有可用Coupon CouponDetail couponDetail = CheckCoupon(data.AccountName, data.CouponDetailId); if (couponDetail == null) { data.CouponDetailId = null; } else { data.CouponDetailId = couponDetail.CouponDetailId; } byte?invoiceDonateTo; if (userForm.InvoiceDonateTo == null) { invoiceDonateTo = null; } else { invoiceDonateTo = byte.Parse(userForm.InvoiceDonateTo); } UserFavorite favorite = _repository.GetAll <UserFavorite>() .First(x => x.FavoriteId == data.FavoriteId); PackageProduct package = null; List <UserDefinedProduct> userDefinedList = null; if (favorite.IsPackage) { package = GetPackage(favorite); productName = package.Name; } else { userDefinedList = GetUserDefinedList(favorite); productName = userDefinedList[0].Name; } using (var transaction = _context.Database.BeginTransaction()) { try { Order order = new Order { OrderId = Guid.NewGuid(), AccountName = data.AccountName, FullName = userForm.FullName, Email = userForm.Email, Phone = userForm.Phone, DateService = DateTime.Parse(userForm.DateService), Address = $"{userForm.County}{userForm.District}{userForm.Address}", Remark = userForm.Remark == null ? string.Empty : userForm.Remark, OrderState = (byte)OrderState.Unpaid, Rate = null, Comment = string.Empty, CouponDetailId = data.CouponDetailId, PaymentType = string.Empty, InvoiceType = byte.Parse(userForm.InvoiceType), InvoiceDonateTo = invoiceDonateTo, MerchantTradeNo = data.MerchantTradeNo, TradeNo = string.Empty, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <Order>(order); _context.SaveChanges(); OrderDetail od = new OrderDetail { OrderDetailId = Guid.NewGuid(), OrderId = order.OrderId, FavoriteId = data.FavoriteId, FinalPrice = data.FinalPrice, ProductName = productName, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <OrderDetail>(od); _context.SaveChanges(); if (favorite.IsPackage) { List <int?> roomTypes = new List <int?> { package.RoomType, package.RoomType2 }; if (package.RoomType3 >= 0) { roomTypes.Add(package.RoomType3); } List <int?> squareFeets = new List <int?> { package.Squarefeet, package.Squarefeet2 }; if (package.Squarefeet3 >= 0) { squareFeets.Add(package.Squarefeet3); } OrderPackage orderPackage = new OrderPackage { OrderId = order.OrderId, RoomTypes = string.Join(",", roomTypes), SquareFeets = string.Join(",", squareFeets), ServiceItems = package.ServiceItem, Hour = package.Hour, Price = package.Price, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <OrderPackage>(orderPackage); } else { foreach (var item in userDefinedList) { OrderUserDefined orderUserDefined = new OrderUserDefined { OrderId = order.OrderId, RoomType = item.RoomType, SquareFeet = item.Squarefeet, ServiceItems = item.ServiceItems, Hour = item.Hour, Price = item.Price, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <OrderUserDefined>(orderUserDefined); } } _context.SaveChanges(); if (couponDetail != null) { couponDetail.State = (int)UseState.Used; _context.SaveChanges(); } result.IsSuccessful = true; transaction.Commit(); } catch (Exception ex) { result.IsSuccessful = false; result.Exception = ex; transaction.Rollback(); } } return(result); }
partial void DeleteOrderPackage(OrderPackage instance);
protected void PackagesGridView_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) { OrderPackage p = (OrderPackage)e.Row.DataItem; if (p != null) { string serviceCodeName = "Other"; int trackerCode = 0; int.TryParse(p.ShippingProviderId, out trackerCode); TrackingProvider trackProvider = TrackingProvider.None; switch (trackerCode) { case 1: serviceCodeName = "UPS"; trackProvider = TrackingProvider.UPS; break; case 2: serviceCodeName = "FedEx"; trackProvider = TrackingProvider.FedEx; break; case 3: serviceCodeName = "US Postal Service"; trackProvider = TrackingProvider.USPostal; break; } //IShippingService provider = MerchantTribe.Commerce.Shipping.AvailableServices.FindById(p.ShippingProviderId); //List<IServiceCode> codes = provider.ListAllServiceCodes(); //foreach (IServiceCode item in codes) { // if (item.Code == p.ShippingProviderServiceCode) { // serviceCodeName = item.DisplayName; // } //} Label ShippedByField = (Label)e.Row.FindControl("ShippedByField"); if (ShippedByField != null) { //if (provider != null) { // if (serviceCodeName != string.Empty) { ShippedByField.Text = serviceCodeName; // } // else { // ShippedByField.Text = provider.Name; // } //} } HyperLink TrackingLink = (HyperLink)e.Row.FindControl("TrackingLink"); if (TrackingLink != null) { TrackingLink.Text = p.TrackingNumber; //if (provider != null) { // if (o != null && o.Bvin != string.Empty) { // //if (provider.SupportsTracking()) { // // TrackingLink.Text = "Track Package"; // // TrackingLink.NavigateUrl = provider.GetTrackingUrl(p.TrackingNumber); // //} // } //} } TextBox TrackingTextBox = (TextBox)e.Row.FindControl("TrackingNumberTextBox"); if (TrackingTextBox != null) { TrackingTextBox.Text = p.TrackingNumber; } Label items = (Label)e.Row.FindControl("items"); if (items != null) { items.Text = string.Empty; foreach (OrderPackageItem pi in p.Items) { if (pi.Quantity > 0) { items.Text += pi.Quantity.ToString("#") + " - "; if (o != null) { foreach (LineItem li in o.Items) { if (li.Id == pi.LineItemId) { items.Text += li.ProductSku + ": " + li.ProductName + "<br />"; } } } } } } } }
public async Task <Order> PackageOrderRows(OrderPackage orderPackage) => await _client.PostAsync <Order>("api/orderpackage", orderPackage);
protected void Button1_Click(object sender, EventArgs e) { if (Session["CustomerUID"] != null && (dsPackage.dtSelectedPackageDataTable)Session["selectedPackage"] != null) { OrderPackageDetail opd; OrderPackage op = new OrderPackage(); clsPackage pk = new clsPackage(); DataTable dt = new DataTable(); DataTable dtOrderPackage = new DataTable(); int OrderPackageUID = 0; //Insert Order op.CustomerUID = Convert.ToInt32(Session["CustomerUID"]); op.OrderNo = lblOrderNo.Text.Trim(); op.OrderDate = Convert.ToDateTime(lblOrderDate.Text.Trim()); op.Total = Convert.ToDecimal(txtTotal.Text.Trim()); op.VAT = Convert.ToDecimal(txtVat.Text.Trim()); op.GrandTotal = Convert.ToDecimal(txtGrandTotal.Text.Trim()); op.StatusFlage = "A"; op.CUser = 99; op.CWhen = DateTime.Now; op.MUser = 99; op.MWhen = DateTime.Now; db.OrderPackages.InsertOnSubmit(op); db.SubmitChanges(); //Insert Order Detail dtOrderPackage = pk.SearchPackageOrdeByOrderNo(lblOrderNo.Text.Trim()); if(dtOrderPackage.Rows.Count > 0 && dtOrderPackage !=null) { OrderPackageUID = Convert.ToInt32(dtOrderPackage.Rows[0]["UID"]); dt = (dsPackage.dtSelectedPackageDataTable)Session["selectedPackage"]; for (int i = 0; i <= dt.Rows.Count - 1; i++) { opd = new OrderPackageDetail(); opd.OrderPackageUID = OrderPackageUID; opd.PackageUID = Convert.ToInt32(dt.Rows[i]["UID"]); opd.UnitPrice = Convert.ToDecimal(dt.Rows[i]["UnitPrice"]); opd.Qty = Convert.ToInt32(dt.Rows[i]["Qty"]); opd.Total = opd.UnitPrice * opd.Qty; opd.StatusFlag = "A"; opd.CUser = 99; opd.CWhen = DateTime.Now; opd.MUser = 99; opd.MWhen = DateTime.Now; db.OrderPackageDetails.InsertOnSubmit(opd); db.SubmitChanges(); opd = null; } } Session["OrderNo"] = lblOrderNo.Text.Trim(); Response.Redirect("PackageOrder3.aspx"); } else { ClientScript.RegisterClientScriptBlock(this.GetType(), "Information", "alert('Session หมดอายุ กรุณาเลือกแพ็คเกจที่ต้องการใหม่อีกครั้งครับ')", true); } }
/// <summary> /// 预约 /// </summary> /// <param name="orderModel"></param> /// <returns></returns> public OrderModel Add(OrderModel orderModel) { using (Db = new BMSDBContext()) { //获取店铺设置 var companyInfo = Db.ShopSetting.FirstOrDefault(); //1.判断是否在营业时间 if (orderModel.StartTime.Hour < companyInfo.StartTime.Hour || orderModel.StartTime.Hour < companyInfo.EndTime.Hour) { throw new Exception("所选时间不在营业时间"); } //2.判断是否超过同时服务人数 //服务所需分钟数 var needTime = orderModel.Packages.Sum(o => o.Timespan); //服务结束时间 var serveEndTime = orderModel.StartTime.AddMinutes(needTime); var count = (orderModel.StartTime - serveEndTime).Minutes / 30; for (int i = 1; i <= count; i++) { var start = orderModel.StartTime.AddMinutes(needTime * (i - 1)); var end = orderModel.StartTime.AddMinutes(needTime * i); var allShedulCounts = Db.Schedule.Where(o => o.StartTime <= orderModel.StartTime && o.EndTime >= end).Count(); if (allShedulCounts >= companyInfo.MaxServeCount) { throw new Exception(string.Format("{0}-{1}时间段店铺达到最大服务人数", start, end)); } } //3.判断理发师时间安排 var shedulCounts = Db.Schedule.Where(o => o.BarberId == orderModel.BarberId && o.StartTime <= orderModel.StartTime && o.EndTime >= serveEndTime).Count(); if (shedulCounts > 0) { throw new Exception("与理发师时间冲突"); } //插入数据 var order = new Order() { CustomerId = orderModel.UserId, OrderNo = orderModel.OrderNo, CreatedBy = orderModel.UserId, CreatedOn = DateTime.Now, OrderStatus = "", Price = orderModel.Packages.Sum(o => o.Price), ChanelCode = "" }; Db.Order.Add(order); Db.SaveChanges(); foreach (var item in orderModel.Packages) { var orderPackage = new OrderPackage() { OrderId = Db.Order.Where(o => o.OrderNo == orderModel.OrderNo).FirstOrDefault().Id, PackageId = item.Id }; Db.OrderPackage.Add(orderPackage); } var shedul = new Schedule() { CustomerId = orderModel.UserId, BarberId = orderModel.BarberId, OrderId = Db.Order.Where(o => o.OrderNo == orderModel.OrderNo).FirstOrDefault().Id, StartTime = orderModel.StartTime, EndTime = serveEndTime, CreatedOn = DateTime.Now }; Db.Schedule.Add(shedul); } if (Db.SaveChanges() < 1) { throw new Exception("错误"); } return(orderModel); }
partial void InsertOrderPackage(OrderPackage instance);
public OrderFullModel GetOrderFull(Guid orderId) { try { Order o = _repository.GetAll <Order>().First(x => x.OrderId == orderId); OrderDetail od = _repository.GetAll <OrderDetail>().First(x => x.OrderId == orderId); OrderFullModel orderFull = new OrderFullModel { DateService = o.DateService.ToString("yyyy-MM-dd,HH:mm"), Address = o.Address, OrderState = o.OrderState, FinalPrice = od.FinalPrice, FullName = o.FullName, Phone = o.Phone, Email = o.Email, CreateTime = o.CreateTime.ToString("yyyy-MM-dd,HH:mm"), InvoiceType = o.InvoiceType, InvoiceDonateTo = o.InvoiceDonateTo, ProductName = od.ProductName, Rate = o.Rate, }; var couponDetail = _repository.GetAll <CouponDetail>() .FirstOrDefault(x => x.CouponDetailId == o.CouponDetailId); if (couponDetail == null) { orderFull.DiscountAmount = 0; } else { orderFull.DiscountAmount = _repository.GetAll <Coupon>() .First(x => x.CouponId == couponDetail.CouponId) .DiscountAmount; } switch (o.PaymentType) { case "Credit_CreditCard": orderFull.PaymentType = "信用卡"; break; case "": orderFull.PaymentType = "未付款"; break; default: orderFull.PaymentType = "其他"; break; } OrderPackage package = _repository.GetAll <OrderPackage>().FirstOrDefault(x => x.OrderId == orderId); if (package != null) { orderFull.PackageModel = new PackageModel { RoomTypes = package.RoomTypes.Split(',').Select(x => int.Parse(x)).ToArray(), SquareFeets = package.SquareFeets.Split(',').Select(x => int.Parse(x)).ToArray(), ServiceItems = package.ServiceItems.Replace("+", " + "), Hour = package.Hour, Price = package.Price, }; } else { var userDefined = _repository.GetAll <OrderUserDefined>().Where(x => x.OrderId == orderId); orderFull.UserDefinedList = new List <UserDefinedModel>(); foreach (var item in userDefined) { orderFull.UserDefinedList.Add(new UserDefinedModel { RoomType = item.RoomType, SquareFeet = item.SquareFeet, ServiceItems = item.ServiceItems.Replace(",", " + "), Hour = item.Hour, Price = item.Price }); } } return(orderFull); } catch (Exception ex) { throw ex; } }
partial void UpdateOrderPackage(OrderPackage instance);