コード例 #1
0
        /// <summary>
        /// Update the orders asynchronous.
        /// </summary>
        /// <param name="query">The orders query builder</param>
        /// <param name="newPaymentStatus">
        /// New payment status: PAID == ACCEPTED, DECLINED, CANCELLED, AWAITING_PAYMENT == QUEUED,
        /// CHARGEABLE, REFUNDED, INCOMPLETE
        /// </param>
        /// <param name="newFulfillmentStatus">
        /// New fulfillment status: AWAITING_PROCESSING == NEW, PROCESSING, SHIPPED, DELIVERED,
        /// WILL_NOT_DELIVER, RETURNED
        /// </param>
        /// <param name="newShippingTrackingCode">
        /// New shipping tracking code. Change of shipping tracking number will also change
        /// the order's fulfillment status to SHIPPED.
        /// </param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <exception cref="EcwidConfigException">Can not add or update statuses. Look inner exception.</exception>
        /// <exception cref="EcwidLimitException">Limit overheat exception.</exception>
        /// <exception cref="EcwidHttpException">Something happened to the HTTP call.</exception>
        public static Task <LegacyUpdatedOrders> UpdateAsync(
            this OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> query, string newPaymentStatus,
            string newFulfillmentStatus, string newShippingTrackingCode, CancellationToken cancellationToken)
        {
            try
            {
                Validators.ValidateNewLegacyStatuses(query.Query, newPaymentStatus, newFulfillmentStatus,
                                                     newShippingTrackingCode);

                if (!string.IsNullOrWhiteSpace(newPaymentStatus))
                {
                    query.AddOrUpdate("new_payment_status",
                                      newPaymentStatus.ExtractFirstStatus(Validators.AvailableLegacyPaymentStatuses));
                }
                if (!string.IsNullOrWhiteSpace(newFulfillmentStatus))
                {
                    query.AddOrUpdate("new_fulfillment_status",
                                      newFulfillmentStatus.ExtractFirstStatus(Validators.AvailableLegacyFulfillmentStatuses));
                }
                if (!string.IsNullOrWhiteSpace(newShippingTrackingCode))
                {
                    query.AddOrUpdate("new_shipping_tracking_code", newShippingTrackingCode);
                }
            }
            catch (ArgumentException exception)
            {
                throw new EcwidException("Can not add or update statuses. Look inner exception.", exception);
            }

            var client = (EcwidLegacyClient)query.Client;

            return(client.UpdateOrdersAsync(query, cancellationToken));
        }
コード例 #2
0
        /// <summary>
        /// Updates the orders asynchronous.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <exception cref="EcwidConfigException">Credentials are invalid.</exception>
        /// <exception cref="EcwidLimitException">Limit overheat exception.</exception>
        /// <exception cref="EcwidHttpException">Something happened to the HTTP call.</exception>
        internal async Task <LegacyUpdatedOrders> UpdateOrdersAsync(
            OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> query, CancellationToken cancellationToken)
        {
            var response =
                await
                PostApiAsync <LegacyOrderResponse <LegacyUpdatedOrder> >(GetUrl("orders"), query.Query,
                                                                         cancellationToken);

            return(response != null ? new LegacyUpdatedOrders(response.Orders) : new LegacyUpdatedOrders());
        }
コード例 #3
0
        /// <summary>
        /// All orders with numbers bigger than or equal to value.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="vendorNumber">The vendor order number (order number with prefix/suffix)</param>
        /// <exception cref="ArgumentException"><paramref name="vendorNumber" /> is null or empty.</exception>
        public static OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> FromOrder(
            this OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> query, string vendorNumber)
        {
            if (string.IsNullOrWhiteSpace(vendorNumber))
            {
                throw new ArgumentException("VendorNumber is null or empty.", nameof(vendorNumber));
            }

            query.AddOrUpdate("from_order", vendorNumber);
            return(query);
        }
コード例 #4
0
        /// <summary>
        /// All orders with numbers bigger than or equal to value.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="number">The ordinary order number</param>
        /// <exception cref="ArgumentException"><paramref name="number" /> must be greater than 0</exception>
        public static OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> FromOrder(
            this OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> query, int number)
        {
            if (number <= 0)
            {
                throw new ArgumentException("Number must be greater than 0", nameof(number));
            }

            query.AddOrUpdate("from_order", number);
            return(query);
        }
コード例 #5
0
 /// <summary>
 /// Unique numeric customer identifier or null for anonymous orders.
 /// </summary>
 /// <param name="query">The query.</param>
 /// <param name="customerId">The customer identifier.</param>
 public static OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> CustomerId(
     this OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> query, int?customerId)
 {
     if (customerId == null)
     {
         query.AddOrUpdate("customer_id", "null");
     }
     else
     {
         query.AddOrUpdate("customer_id", customerId);
     }
     return(query);
 }
コード例 #6
0
        /// <summary>
        /// Add fulfillment comma or space separated status names.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="fulfillmentStatuses">
        /// Fulfillment statuses: AWAITING_PROCESSING==NEW, PROCESSING, SHIPPED, DELIVERED,
        /// WILL_NOT_DELIVER, RETURNED
        /// </param>
        /// <exception cref="EcwidConfigException">Can not add or update statuses. Look inner exception.</exception>
        public static OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> FulfillmentStatuses(
            this OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> query, string fulfillmentStatuses)
        {
            try
            {
                Validators.StatusesValidate(fulfillmentStatuses, Validators.AvailableLegacyFulfillmentStatuses);

                query.AddOrUpdateStatuses("statuses", fulfillmentStatuses.TrimUpperReplaceSplit());
            }
            catch (ArgumentException exception)
            {
                throw new EcwidConfigException("Can not add or update statuses. Look inner exception.", exception);
            }
            return(query);
        }
コード例 #7
0
        /// <summary>
        /// Number of orders returned in response. The default and maximal value is 200, any greater value is reset to 200.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="limit">
        /// Number of orders returned in response. The default and maximal value is 200, any greater value is
        /// reset to 200.
        /// </param>
        /// <exception cref="ArgumentException"><paramref name="limit" /> must be greater than 0</exception>
        public static OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> Limit(
            this OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> query, int limit)
        {
            if (limit <= 0)
            {
                throw new ArgumentException("Limit must be greater than 0", nameof(limit));
            }

            if (limit > 200)
            {
                limit = 200;
            }

            query.AddOrUpdate("limit", limit);
            return(query);
        }
コード例 #8
0
 /// <summary>
 /// All orders changed before this date.
 /// </summary>
 /// <param name="query">The query.</param>
 /// <param name="date">The date.</param>
 /// <exception cref="ArgumentException">
 /// The date and time is outside the range of dates supported by the calendar
 /// used by the current culture.
 /// </exception>
 public static OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> ToUpdateDate(
     this OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> query, DateTime date)
 {
     query.AddOrUpdate("to_update_date", date.ToString("yyyy-MM-dd"));
     return(query);
 }
コード例 #9
0
 /// <summary>
 /// Update the orders asynchronous.
 /// </summary>
 /// <param name="query">The orders query builder</param>
 /// <param name="newPaymentStatus">
 /// New payment status: PAID == ACCEPTED, DECLINED, CANCELLED, AWAITING_PAYMENT == QUEUED,
 /// CHARGEABLE, REFUNDED, INCOMPLETE
 /// </param>
 /// <param name="newFulfillmentStatus">
 /// New fulfillment status: AWAITING_PROCESSING == NEW, PROCESSING, SHIPPED, DELIVERED,
 /// WILL_NOT_DELIVER, RETURNED
 /// </param>
 /// <param name="newShippingTrackingCode">
 /// New shipping tracking code. Change of shipping tracking number will also change
 /// the order's fulfillment status to SHIPPED.
 /// </param>
 /// <exception cref="EcwidConfigException">Can not add or update statuses. Look inner exception.</exception>
 /// <exception cref="EcwidLimitException">Limit overheat exception.</exception>
 /// <exception cref="EcwidHttpException">Something happened to the HTTP call.</exception>
 public static Task <LegacyUpdatedOrders> UpdateAsync(
     this OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> query, string newPaymentStatus,
     string newFulfillmentStatus, string newShippingTrackingCode)
 =>
 query.UpdateAsync(newPaymentStatus, newFulfillmentStatus, newShippingTrackingCode,
                   CancellationToken.None);
コード例 #10
0
 /// <summary>
 /// Customer email or <c>null</c> for orders with empty or absent emails.
 /// </summary>
 /// <param name="query">The query.</param>
 /// <param name="customerEmail">The customer email or <c>null</c>.</param>
 public static OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> CustomerEmail(
     this OrdersQueryBuilder <LegacyOrder, LegacyUpdatedOrders> query, string customerEmail)
 {
     query.AddOrUpdate("customer_email", customerEmail ?? "");
     return(query);
 }