private async Task afterSelection(IDialogContext context, IAwaitable <string> result) { try { var selection = await result; switch (selection.ToString()) { case "Order": this.order = new Model.Order(); this.order.AskToUseSavedSenderInfo = true; // await context.PostAsync("We are currently processing your sandwich. We will message you the status."); var orderForm = new FormDialog <TrialBot.Model.Order>(this.order, TrialBot.Model.Order.BuildForm, FormOptions.PromptInStart); context.Call(orderForm, this.AfterOrderForm); break; case "Products": case "Hotels Order": this.HodelOrder = new Model.OrderDetails(); //this.HodelOrder.AskToUseSavedSenderInfo = true; // await context.PostAsync("We are currently processing your sandwich. We will message you the status."); var sHodelOrder = new FormDialog <TrialBot.Model.OrderDetails>(this.HodelOrder, TrialBot.Model.OrderDetails.BuildForm, FormOptions.PromptInStart); context.Call(sHodelOrder, this.AfterOrderForm); break; } } catch (Exception ex) { // await this.StartOverAsync(context, Resources.RootDialog_TooManyAttempts); } }
/// <summary> /// 用户在线下单 /// </summary> /// <param name="orderInfo">订单信息</param> /// <returns></returns> public async Task CreateOrder(OrderInfoDto orderInfo) { var context = new Model.LogisticsContext(); using (var transaction = context.Database.BeginTransaction()) { try { //创建订单 var order = new Model.Order() { BarCode = orderInfo.BarCode, Region = orderInfo.Region, StartWebsiteId = orderInfo.StartWebsiteId }; context.Set <Model.Order>().Add(order); await context.SaveChangesAsync(); //添加寄件人信息 var cargoSender = new Model.CargoSender() { OrderId = order.Id, Name = orderInfo.SName, MobliePhone = orderInfo.SMobliePhone, Provinces = orderInfo.SProvince, DetailAddress = orderInfo.SAddress, PostCode = orderInfo.SPostCode, TelPhone = orderInfo.STelPhone, FirmName = orderInfo.SFirmName, Location = orderInfo.SLocation }; context.Set <Model.CargoSender>().Add(cargoSender); await context.SaveChangesAsync(); //添加收件人信息 var cargoReceiver = new Model.CargoReceiver() { OrderId = order.Id, Name = orderInfo.RName, MobliePhone = orderInfo.RMobliePhone, Provinces = orderInfo.RProvince, DetailAddress = orderInfo.RAddress, PostCode = orderInfo.RPostCode, TelPhone = orderInfo.RTelPhone, FirmName = orderInfo.RFirmName, Location = orderInfo.RLocation }; context.Set <Model.CargoReceiver>().Add(cargoReceiver); await context.SaveChangesAsync(); //创建订单明细表 var orderDetaile = new Model.OrderDetails() { OrderId = order.Id, Freight = Convert.ToDecimal(orderInfo.Freight), IsInsured = orderInfo.IsInsured, CargoName = orderInfo.CargoName, CargoWeight = orderInfo.CargoWeight, CargoVolume = orderInfo.CargoVolume, UitNum = orderInfo.UitNum, PayType = orderInfo.PayType, Mark = orderInfo.Mark, SenderId = cargoSender.Id, ReceiverId = cargoReceiver.Id, GetGoodsTime = orderInfo.TakeTime, ServiceCharge = Convert.ToDecimal(orderInfo.ServiceCharge) }; context.Set <Model.OrderDetails>().Add(orderDetaile); await context.SaveChangesAsync(); if (orderInfo.IsInsured) { var insure = new Model.InsuranceInfo() { OrderId = order.Id, InsurerId = cargoSender.Id, Value = orderInfo.CargoValue, Risk = orderInfo.Risk, Fee = decimal.Parse(Tools.MaverickCost.CalcInSurenceFee(Convert.ToDouble(orderInfo.CargoValue))) }; context.Set <Model.InsuranceInfo>().Add(insure); await context.SaveChangesAsync(); } transaction.Commit(); } catch (Exception errer) { transaction.Rollback(); throw errer; } finally { context.Dispose(); } } }