public OrdersLookupResponse LookupOrders(string orderdate)
        {
            OrdersLookupResponse  orderslookupresponse = new OrdersLookupResponse();
            OrderDateFileResponse orderdatefile        = _orderRepository.GetPath(orderdate);

            if (string.IsNullOrEmpty(orderdatefile.path))
            {
                orderslookupresponse.Success = false;
                orderslookupresponse.Message = $"File not found for Order date {orderdate} or some problem. Please contact IT.";
            }
            else
            {
                orderslookupresponse.Orderlist = _orderRepository.LoadOrders(orderdatefile.path);
                if (orderslookupresponse.Orderlist.Count > 0)
                {
                    orderslookupresponse.Success = true;
                }
                else
                {
                    orderslookupresponse.Success = false;
                    orderslookupresponse.Message = $"No orders with {orderdate} or problem with the file. Please enter another order date or contact IT!";
                }
            }
            return(orderslookupresponse);
        }
        public OrderLookupResponse LookupOrder(string orderdate, int ordernumber)
        {
            OrderLookupResponse   orderlookupresponse = new OrderLookupResponse();
            OrderDateFileResponse orderdatefile       = _orderRepository.GetPath(orderdate);

            if (string.IsNullOrEmpty(orderdatefile.path))
            {
                orderlookupresponse.Success = false;
                orderlookupresponse.Message = $"File not found for Order date {orderdate} or some problem. Please contact IT.";
            }
            else
            {
                orderlookupresponse.order = _orderRepository.LoadOrder(orderdatefile.path, ordernumber);
                if (orderlookupresponse.order == null)
                {
                    orderlookupresponse.Success = false;
                    orderlookupresponse.Message = $"No orders with order date {orderdate} and order number {ordernumber}. Please enter another order date and or order number or contact IT!";
                }
                else
                {
                    orderlookupresponse.Success = true;
                    if (orderlookupresponse.order.CustomerName.Contains("|"))
                    {
                        orderlookupresponse.order.CustomerName = orderlookupresponse.order.CustomerName.Replace("|", ",");
                    }
                }
            }
            return(orderlookupresponse);
        }
        public OrderDateFileResponse BuildPath(string orderdate)
        {
            OrderDateFileResponse orderdatefile = new OrderDateFileResponse();

            orderdate            = orderdate.Replace("/", "");
            ordersfilesearchyear = orderdate;
            var ordersfilesearch = (ordersfilesearchbeginstr + ordersfilesearchyear + ordersfilesearchendstr);

            orderdatefile.path = ordersdirpath + @"\" + ordersfilesearch;
            return(orderdatefile);
        }
        public OrderDateFileResponse GetPath(string orderdate)
        {
            OrderDateFileResponse orderdatefile = new OrderDateFileResponse();

            if (_orderdictionary.ContainsKey(orderdate))
            {
                orderdatefile.path = orderdate;
            }
            else
            {
                orderdatefile.path = "";
            }
            return(orderdatefile);
        }
        public OrderDateFileResponse BuildPath(string orderdate)
        {
            DateTime           orderdateout;
            DateTimeFormatInfo info = new DateTimeFormatInfo
            {
                ShortDatePattern = @"MM/dd/yyyy"
            };
            OrderDateFileResponse orderdatefile = new OrderDateFileResponse();

            if (DateTime.TryParseExact(orderdate, @"MM/dd/yyyy", info, DateTimeStyles.None, out orderdateout))
            {
                orderdatefile.path = orderdate;
            }
            return(orderdatefile);
        }
        public OrderDateFileResponse GetPath(string orderdate)
        {
            OrderDateFileResponse orderdatefile = new OrderDateFileResponse();

            orderdate            = orderdate.Replace("/", "");
            ordersfilesearchyear = orderdate;
            var ordersfilesearch = (ordersfilesearchbeginstr + ordersfilesearchyear + ordersfilesearchendstr);

            string[] filepath = Directory.GetFiles(ordersdirpath, ordersfilesearch);
            if (filepath.Length > 0)
            {
                orderdatefile.path = filepath[0];
            }
            return(orderdatefile);
        }
        public ProcessOrderResponse ProcessOrder(Order order, string orderdate, OrderActionType orderactiontype)
        {
            if (orderactiontype == OrderActionType.Add || orderactiontype == OrderActionType.Edit)
            {
                if (order.CustomerName.Contains(","))
                {
                    order.CustomerName = order.CustomerName.Replace(",", "|");
                }
            }
            ProcessOrderResponse  processorderresponse = new ProcessOrderResponse();
            OrderDateFileResponse orderdatefile        = _orderRepository.GetPath(orderdate);

            if (string.IsNullOrEmpty(orderdatefile.path))
            {
                processorderresponse.Success = false;
                processorderresponse.Message = $"File not found for Order date {orderdate} or some problem. Please contact IT.";
            }
            else
            {
                switch (orderactiontype)
                {
                case OrderActionType.Add:
                    processorderresponse.order = _orderRepository.AddOrderToExistingOrderDateFile(order, orderdatefile.path);
                    break;

                case OrderActionType.Edit:
                    processorderresponse.order = _orderRepository.EditOrder(order, orderdatefile.path);
                    break;

                case OrderActionType.Remove:
                    processorderresponse.order = _orderRepository.RemoveOrder(order, orderdatefile.path);
                    break;

                default:
                    throw new Exception("Order Action Type is not supported!");
                }
                if (processorderresponse.order == null)
                {
                    processorderresponse.Success = false;
                    processorderresponse.Message = "New order save (to existing order date file) unsuccessful.";
                }
                else
                {
                    processorderresponse.Success = true;
                }
            }

            if (orderactiontype == OrderActionType.Add && string.IsNullOrEmpty(orderdatefile.path))
            {
                OrderDateFileResponse neworderdatefile = _orderRepository.BuildPath(orderdate);
                if (string.IsNullOrEmpty(neworderdatefile.path))
                {
                    processorderresponse.Success = false;
                    processorderresponse.Message = $"Problem creating a new order date file for Order date {orderdate}. Please contact IT.";
                }
                else
                {
                    processorderresponse.order = _orderRepository.AddOrderToNewOrderDateFile(order, neworderdatefile.path);
                    if (processorderresponse.order == null)
                    {
                        processorderresponse.Success = false;
                        processorderresponse.Message = "New order save (to new order date file) unsuccessful.";
                    }
                    else
                    {
                        processorderresponse.Success = true;
                    }
                }
            }
            return(processorderresponse);
        }