Пример #1
0
        private async Task OnSave(object obj)
        {
            if (obj != null)
            {
                CreateOrderModel model = (CreateOrderModel)obj;
                if (string.IsNullOrEmpty(model.CustomerName))
                {
                    return;
                }

                await Task.Run(() =>
                {
                    IsBusy    = true;
                    IsEnabled = false;

                    IDbManager dbManager = ObjectPool.Instance.Resolve <IDbManager>();
                    IDataCommand db      = dbManager.GetDatabase(ApplicationSettings.Instance.Database.DefaultConnection.Name);

                    Dictionary <string, string> scripts = new Dictionary <string, string>();

                    List <int> result = db.Query <int>("CheckExistsOrder", new
                    {
                        OrderId = model.PoNumber
                    });

                    if (result.Any())
                    {
                        scripts.Add("Order", "UpdateOrder");
                        scripts.Add("OrderDetail", "UpdateOrderDetail");
                    }
                    else
                    {
                        scripts.Add("Order", "CreateOrder");
                        scripts.Add("OrderDetail", "CreateOrderDetail");
                    }

                    IDbTransaction transaction = ((BaseDbCommand)db).BeginTransaction();
                    try
                    {
                        db.Execute(scripts["Order"], new
                        {
                            OrderId       = model.PoNumber,
                            CustomerName  = model.CustomerName,
                            CustomerPhone = model.CustomerPhone,
                            Status        = "I",
                            Total         = model.TotalPayment,
                            Installment   = model.Installment,
                            Remaining     = model.Remaining,
                            Disc          = model.discount
                        });

                        CreateOrderDetailModel detail;
                        for (int i = 0; i < model.Details.Source.Count; i++)
                        {
                            detail = model.Details.Source[i];

                            result = db.Query <int>("CheckExistsOrderDetail", new
                            {
                                OrderId = model.poNumber,
                                SeqNbr  = detail.SeqNbr
                            });

                            if (!result.Any())
                            {
                                scripts["OrderDetail"] = "CreateOrderDetail";
                            }

                            db.Execute(scripts["OrderDetail"], new
                            {
                                OrderId        = model.PoNumber,
                                SeqNbr         = i + 1,
                                MaterialTypeId = detail.MaterialId,
                                QualityId      = detail.QualityId,
                                FinishingId    = detail.FinishingId,
                                Title          = detail.Title,
                                Width          = detail.Width,
                                Height         = detail.Height,
                                Qty            = detail.Qty,
                                Filename       = detail.Filename,
                                Image          = detail.Stream,
                                Queue          = 0,
                                Deadline       = detail.Deadline,
                                Description    = detail.Description,
                                Total          = detail.Price
                            });
                        }
                        transaction.Commit();
                    }
                    catch (Exception x)
                    {
                        transaction.Rollback();
                    }

                    db.Close();

                    IsBusy    = false;
                    IsEnabled = true;

                    OnItemCreated();
                });
            }
        }
Пример #2
0
 private void OnCreateOrder()
 {
     CreateOrderModel order = new CreateOrderModel();
     IDialogService dialog = ObjectPool.Instance.Resolve<IDialogService>();
     
     order.ItemCreated += order_ItemCreated;
     dialog.ShowDialog<CreateOrder>(order);
 }