public FileUploadController(IProductAPI productAPI, IOrderAPI orderAPI, ITimeAPI timeAPI, ICampaignAPI campaignAPI)
 {
     _productAPI  = productAPI;
     _orderAPI    = orderAPI;
     _timeAPI     = timeAPI;
     _campaignAPI = campaignAPI;
 }
 public OrderController(IOrderAPI orderAPI,
                        IEventPublisher eventPublisher,
                        IConsulClient consulClient, IHttpClientFactory httpClient)
 {
     _orderAPI       = orderAPI;
     _eventPublisher = eventPublisher;
     _consulClient   = consulClient;
     this._factory   = httpClient;
 }
Example #3
0
        public static void Main(string[] args)
        {
            IOrderAPI api         = null; // Your implementation
            string    accessToken = null; // Your access token

            if (api == null || string.IsNullOrWhiteSpace(accessToken))
            {
                Console.WriteLine("You need to set the api and the accessToken.");
                return;
            }

            var orders    = new List <Order>();
            var startDate = DateTime.Now.AddDays(-30);

            if (api != null)
            {
                api.DeserializeAccessToken(accessToken);

                int       numberOfPages;
                var       currentPage = 1;
                const int pageSize    = 50;
                do
                {
                    try
                    {
                        orders.AddRange(api.GetOrderList(
                                            startDate,
                                            19,
                                            7,
                                            out _,
                                            out numberOfPages,
                                            currentPage,
                                            pageSize
                                            ));
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(
                            $"Execption while querying page {currentPage} with pageSize {pageSize} and startDate {startDate}");
                        Console.WriteLine(e);
                        throw;
                    }
                } while (++currentPage <= numberOfPages);

                if (api.SerializeAccessToken() != accessToken)
                {
                    Console.WriteLine("The access token was modified.");
                }
            }

            Console.WriteLine($"Loaded {orders.Count} order(s).");

            foreach (var order in orders)
            {
                var isValid          = true;
                var uniqueIdentifier = string.IsNullOrWhiteSpace(order.Id) ? order.OrderNumber : order.Id;
                if (string.IsNullOrWhiteSpace(order.Id))
                {
                    isValid = false;
                    Console.WriteLine($"Order {uniqueIdentifier}: Missing {nameof(order.Id)}");
                }

                if (string.IsNullOrWhiteSpace(order.OrderNumber))
                {
                    isValid = false;
                    Console.WriteLine($"Order {uniqueIdentifier}: Missing {nameof(order.OrderNumber)}");
                }

                if (order.CreatedAt == default)
                {
                    isValid = false;
                    Console.WriteLine($"Order {uniqueIdentifier}: {nameof(order.CreatedAt)} was not set.");
                }

                if (string.IsNullOrWhiteSpace(order.Currency))
                {
                    isValid = false;
                    Console.WriteLine($"Order {uniqueIdentifier}: Missing {nameof(order.Currency)}");
                }
                else if (order.Currency.Trim().Length != 3)
                {
                    isValid = false;
                    Console.WriteLine(
                        $"Order {uniqueIdentifier}: {nameof(order.Currency)} must be a valid 3 letter currency code.");
                }

                if (order.InvoiceAddress == null)
                {
                    isValid = false;
                    Console.WriteLine($"Order {uniqueIdentifier}: Missing {nameof(order.InvoiceAddress)}");
                }
                else
                {
                    isValid &= _validateAddress($"{uniqueIdentifier}.{nameof(order.InvoiceAddress)}",
                                                order.InvoiceAddress);
                }

                if (order.ShippingAddress == null)
                {
                    isValid = false;
                    Console.WriteLine($"Order {uniqueIdentifier}: Missing {nameof(order.ShippingAddress)}");
                }
                else
                {
                    isValid &= _validateAddress($"{uniqueIdentifier}.{nameof(order.ShippingAddress)}",
                                                order.ShippingAddress);
                }

                if (isValid && string.IsNullOrWhiteSpace(order.ShippingAddress.Email) &&
                    string.IsNullOrWhiteSpace(order.InvoiceAddress.Email))
                {
                    isValid = false;
                    Console.WriteLine(
                        $"Order {uniqueIdentifier}: Missing a Email in {nameof(order.InvoiceAddress)} or {nameof(order.ShippingAddress)}");
                }

                if (!string.IsNullOrWhiteSpace(order.IsCancellationFor) && !order.IsCanceled)
                {
                    isValid = false;
                    Console.WriteLine(
                        $"Order {uniqueIdentifier}: {nameof(order.IsCancellationFor)} is set but {nameof(order.IsCanceled)} is false.");
                }

                if (order.OrderItems == null)
                {
                    isValid = false;
                    Console.WriteLine($"Order {uniqueIdentifier}: Missing {nameof(order.OrderItems)}");
                }
                else if (!order.OrderItems.Any())
                {
                    isValid = false;
                    Console.WriteLine($"Order {uniqueIdentifier}: The order has no OrderItems and should be excluded.");
                }
                else
                {
                    _validateOrderItems(uniqueIdentifier, order);
                }

                if (orders.Any(o => o.Id == order.Id && o.GetHashCode() != order.GetHashCode()))
                {
                    isValid = false;
                    Console.WriteLine($"Order {uniqueIdentifier}: There is more than one order with the same id.");
                }

                Console.WriteLine($"Order {uniqueIdentifier} is {(isValid ? "valid" : "invalid")}.");
                Console.WriteLine();
            }
        }