Exemple #1
0
        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);
            }
        }
Exemple #2
0
        /// <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();
                }
            }
        }