Пример #1
0
        private async void btnSave_Click(object sender, EventArgs e)
        {
            if (_productsAdd.Count == 0)
            {
                MessageBox.Show("No added products!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                Model.Orders        _order       = new Model.Orders();
                OrdersUpsertRequest orderRequest = new OrdersUpsertRequest
                {
                    Date        = DateTime.Now,
                    OrderNumber = Helper.GenerateString(generatedSize),
                    Status      = OrderStatusTypes.Created.ToString(),
                    Cancel      = false,
                    UserId      = _loggedUser.Id
                };
                try
                {
                    _order = await _ordersService.Insert <Model.Orders>(orderRequest);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                if (_order != null)
                {
                    OutputsUpsertRequest outputsRequest = new OutputsUpsertRequest
                    {
                        Date            = DateTime.Now,
                        OrderId         = _order.Id,
                        Finished        = false,
                        UserId          = _loggedUser.Id,
                        ValueWithoutPdv = 0,
                        ValueWithPdv    = 0,
                        ReceiveNumber   = _order.OrderNumber
                    };
                    try
                    {
                        _outputs = await _outputsService.Insert <Model.Outputs>(outputsRequest);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    await Helper.CalculateInputProductsPrice(_productsAdd);

                    List <OutputProductsUpsertRequest> list = new List <OutputProductsUpsertRequest>();
                    foreach (var item in _productsAdd)
                    {
                        OutputProductsUpsertRequest tmp = new OutputProductsUpsertRequest
                        {
                            OutputId  = _outputs.Id,
                            ProductId = item.ProductId,
                            Price     = item.Price,
                            Quantity  = item.Quantity,
                            Discount  = item.Quantity / 2
                        };
                        if (tmp.Quantity > 100)
                        {
                            tmp.Discount = 50;
                        }
                        if (tmp.Quantity < 20)
                        {
                            tmp.Discount = 0;
                        }
                        try
                        {
                            await _outputProductsService.Insert <Model.OutputProducts>(tmp);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    await CalculateOutputValue();

                    MessageBox.Show("Success", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.Close();
                }
            }
        }
        public async Task SaveOrder()
        {
            await AddressLenght();
            await CityLenght();
            await StateLenght();

            var user = await _usersService.GetById <Model.Users>(User.Id);

            UserAddress = await _userAddresssesService.GetById <Model.UserAddresses>(user.UserAddressId);

            UserAddressesUpsertRequest userAddressesUpserRequest = new UserAddressesUpsertRequest
            {
                AddressName = AddressName,
                City        = City,
                Country     = Country,
                Id          = UserAddress.Id
            };

            await _userAddresssesService.Update <Model.UserAddresses>(UserAddress.Id, userAddressesUpserRequest);


            OrdersUpsertRequest ordersUpsertRequest = new OrdersUpsertRequest
            {
                Date        = DateTime.Now,
                Cancel      = false,
                OrderNumber = Helper.GenerateString(19),
                Status      = OrderStatusTypes.Created.ToString(),
                UserId      = User.Id
            };

            try
            {
                var order = await _ordersService.Insert <Model.Orders>(ordersUpsertRequest);

                OutputsUpsertRequest outputsUpsertRequest = new OutputsUpsertRequest
                {
                    Date            = DateTime.Now,
                    UserId          = User.Id,
                    Finished        = false,
                    OrderId         = order.Id,
                    ReceiveNumber   = Helper.GenerateString(19),
                    ValueWithoutPdv = TotalNoPDV,
                    ValueWithPdv    = Total
                };
                var outputs = await _outputsService.Insert <Model.Outputs>(outputsUpsertRequest);

                foreach (var item in ProductsList)
                {
                    OutputProductsUpsertRequest request = new OutputProductsUpsertRequest
                    {
                        ProductId = item.Product.Id,
                        Price     = item.Product.Price,
                        OutputId  = outputs.Id,
                        Quantity  = (int)item.Quantity,
                        Discount  = (item.Quantity / 2)
                    };
                    if (request.Quantity > 100)
                    {
                        request.Discount = 50;
                    }
                    if (request.Quantity < 20)
                    {
                        request.Discount = 0;
                    }
                    await _outputProductsService.Insert <Model.OutputProducts>(request);
                }
                ProductsList.Clear();
                CartService.Cart.Clear();
                await Application.Current.MainPage.DisplayAlert("Success", "Order is sent!", "OK");
            }
            catch
            {
                await Application.Current.MainPage.DisplayAlert("Error", "", "OK");
            }
        }