Пример #1
0
        public Order(OrderResponseObject orderResponseObject, SveaHttpClient client)
        {
            BillingAddress    = orderResponseObject.BillingAddress;
            CancelledAmount   = orderResponseObject.CancelledAmount;
            CreationDate      = orderResponseObject.CreationDate;
            Currency          = orderResponseObject.Currency;
            CustomerReference = orderResponseObject.CustomerReference;
            EmailAddress      = orderResponseObject.EmailAddress;
            Id               = orderResponseObject.Id;
            IsCompany        = orderResponseObject.IsCompany;
            MerchantOrderId  = orderResponseObject.MerchantOrderId;
            NationalId       = orderResponseObject.NationalId;
            OrderAmount      = orderResponseObject.OrderAmount;
            OrderStatus      = orderResponseObject.OrderStatus;
            PaymentType      = orderResponseObject.PaymentType;
            PhoneNumber      = orderResponseObject.PhoneNumber;
            ShippingAddress  = orderResponseObject.ShippingAddress;
            SveaWillBuy      = orderResponseObject.SveaWillBuy;
            AvailableActions = orderResponseObject.Actions;

            Actions    = new OrderActions(orderResponseObject, client);
            OrderRows  = orderResponseObject.OrderRows?.Select(x => new OrderRow(orderResponseObject.Id, x, client)).ToList();
            Deliveries = orderResponseObject.Deliveries?.Select(x => new Delivery(orderResponseObject.Id, x, client)).ToList();
        }
Пример #2
0
        public OrderActions(OrderResponseObject orderResponse, SveaHttpClient client)
        {
            foreach (var action in orderResponse.Actions)
            {
                switch (action)
                {
                case OrderActionType.CanCancelOrder:
                    Cancel = async payload => await client.HttpPatch <object>(
                        new Uri($"/api/v1/orders/{orderResponse.Id}/", UriKind.Relative), payload);

                    break;

                case OrderActionType.CanCancelOrderRow:
                    CancelOrderRows = async payload => await client.HttpPatch <object>(
                        new Uri($"/api/v1/orders/{orderResponse.Id}/rows/cancelOrderRows",
                                UriKind.Relative), payload);

                    break;

                case OrderActionType.CanCancelAmount:
                    CancelAmount = async payload => await client.HttpPatch <object>(
                        new Uri($"/api/v1/orders/{orderResponse.Id}/", UriKind.Relative), payload);

                    break;

                case OrderActionType.CanDeliverOrder:
                case OrderActionType.CanDeliverOrderPartially:
                    DeliverOrder = async payload =>
                    {
                        var response = await client.HttpPost <ResourceResponseObject <OrderResponseObject>, OrderResponseObject>(
                            new Uri($"/api/v1/orders/{orderResponse.Id}/deliveries", UriKind.Relative), payload);

                        var resource = new ResourceResponse <OrderResponseObject, Order>(response, () => new Order(response.Resource, client));

                        return(resource);
                    };
                    break;

                case OrderActionType.CanAddOrderRow:
                    AddOrderRow = async payload =>
                    {
                        var response = await client.HttpPost <ResourceResponseObject <AddOrderRowResponseObject>, AddOrderRowResponseObject>(
                            new Uri($"/api/v1/orders/{orderResponse.Id}/rows", UriKind.Relative), payload);

                        var resource = new ResourceResponse <AddOrderRowResponseObject, AddOrderRowResponse>(response, () => new AddOrderRowResponse(response.Resource));

                        return(resource);
                    };

                    AddOrderRows = async payload => await client.HttpPost <AddOrderRowsResponse>(
                        new Uri($"/api/v1/orders/{orderResponse.Id}/rows/addOrderRows", UriKind.Relative), payload);

                    break;

                case OrderActionType.CanUpdateOrderRow:
                    UpdateOrderRows = async payload => await client.HttpPost <object>(
                        new Uri($"/api/v1/orders/{orderResponse.Id}/rows/updateOrderRows",
                                UriKind.Relative), payload);

                    ReplaceOrderRows = async payload => await client.HttpPut <object>(
                        new Uri($"/api/v1/orders/{orderResponse.Id}/rows/replaceOrderRows",
                                UriKind.Relative), payload);

                    break;
                }
            }
        }