Exemplo n.º 1
0
        internal void Order()
        {
            List<OrderDetailDTO> details = new List<OrderDetailDTO>(OrderedPizzasCollection.Count);
            foreach (var item in OrderedPizzasCollection)
                details.Add(item.OrderDetail);

            Worker.EnqueueTask(new WorkerTask((args) =>
            {
                var det = args[0] as List<OrderDetailDTO>;
                try
                {
                    using (var proxy = new WorkChannel())
                    {
                        proxy.MakeOrder(new UpdateRequest<OrderDTO>
                        {
                            Data = new OrderDTO
                                {
                                    Address = ClientConfig.CurrentUser.Address,
                                    Date = DateTime.Now,
                                    CustomerPhone = ClientConfig.CurrentUser.Phone,
                                    OrderDetailsDTO = det
                                },
                            Login = ClientConfig.CurrentUser.Email,
                            Password = ClientConfig.CurrentUser.Password
                        });
                    }
                    return true;
                }
                catch (Exception e)
                {
                    return e;
                }
            }, (s, args) =>
            {
                if (args.Result is Exception)
                {
                    Utils.HandleException(args.Result as Exception);
                    return;
                }
                bool b = (args.Result as bool?) ?? false;
                if (b)
                {
                    Utils.showInformation(Utils.Messages.ORDERED_SUCCESSFULLY);
                    OrderedPizzasCollection.Clear();
                }
                else
                    Utils.showExclamation(Utils.Messages.ORDERING_ERROR);
            }, details));
        }