public GetEntityResult<ExternalActivityViewModel> DownLoadExternalOrders(OrderSearchOptions orderSearchOptions)
        {
            GetEntityResult<ExternalActivityViewModel> externalActivityResult = new GetEntityResult<ExternalActivityViewModel>() { Success = false };

            ExternalOrderResult orderResult = null;

            orderSearchOptions.ToDate = DateTime.Now;

            orderResult = new ExternalOrderClient().GetUnshippedOrders(orderSearchOptions);

            if (orderResult.Success)
            {
                EntityOperationResultBase saveResult = SaveExternalOrder(orderResult.Orders);

            }
            else
            {
                externalActivityResult.ErrorMessage = "Error occurred while retrieving orders for " + orderSearchOptions.StoreProvider.ToString();

                return externalActivityResult;
            }

            ExternalActivityViewModel activity = new ExternalActivityViewModel()
            {
                ActivityStatus = ExternalActivityStatus.Completed,
                ExternalActivityType = ExternalActivityTypeEnum.GetUnshippedOrders,
                StoreProviderType = orderSearchOptions.StoreProvider,
                LastPerformedOn = orderSearchOptions.ToDate,
            };

            try
            {
                UpdateResult<ExternalActivity> externalActivityUpdateResult = UpdateExternalActivityDetails(activity);

                GetEntityResult<ExternalActivityViewModel> result = GetLastExternalActivityDetails(ExternalActivityTypeEnum.GetUnshippedOrders, orderSearchOptions.StoreProvider);

                externalActivityResult.Success = result.Success;
                externalActivityResult.Entity = result.Entity;

            }
            catch (Exception ex)
            {
                externalActivityResult.Success = false;
                externalActivityResult.ErrorMessage = "Error occurred while update activity details. Please refresh the page";
            }

            return externalActivityResult;
        }
        public ExternalOrderResult GetUnshippedOrders(OrderSearchOptions orderOptions)
        {
            IOrderOptions extOrderOptions = null;
            IExternalStoreService externalService = null;

            if (orderOptions.StoreProvider == StoreProviderTypeEnum.eBay)
            {
                externalService = new eBayServiceCall();

                extOrderOptions = new eBayOrderOptions(orderOptions.FromDate, orderOptions.ToDate);

            }

            if (orderOptions.StoreProvider == StoreProviderTypeEnum.Amazon)
            {
                externalService = new AmazonServiceClient();

                extOrderOptions = new AmazonOrderOptions(orderOptions.FromDate, orderOptions.ToDate);
            }

            ExternalOrderResult orderResult = externalService.GetOrders(extOrderOptions);

            int serialNo = 0;

            //if (orderResult.Success)
            //{
            //    foreach (ExternalOrder extOrder in orderResult.Orders)
            //    {
            //        {
            //            serialNo += 1;
            //            ExternalOrderViewModel extOrderVM = new ExternalOrderViewModel(extOrder);

            //            extOrderVM.SerialNo = serialNo;

            //            vmResult.ExternalOrderViewModels.Add(extOrderVM);
            //        }
            //    }

            //    vmResult.Success = true;
            //}

            return orderResult;
        }
        public ExternalOrderViewModelResult GetExternalOrders(OrderSearchOptions orderSearchOptions)
        {
            ExternalOrderViewModelResult result = new ExternalOrderViewModelResult()
            {
                Success = false,
                ExternalOrderViewModels = new List<ExternalOrderViewModel>(),
            };

            DateTime fromDate = orderSearchOptions.FromDate;
            DateTime toDate = orderSearchOptions.ToDate;

            DbSet<ExternalOrder> externalOrderSet = new InnoventoryDBContext().ExternalOrderSet;

            DateTime from = Utility.ConvertToGMT(fromDate);

            DateTime to = Utility.ConvertToGMT(toDate);

            int storeType = (int)orderSearchOptions.StoreProvider;

            var dbExternalOrders = externalOrderSet.Where(x => x.OrderDate >= from && x.OrderDate <= to && x.StoreProviderId == storeType).OrderByDescending(y => y.OrderDate).ToList();

            if (dbExternalOrders.Count > 0)
            {
                foreach (var order in dbExternalOrders)
                {
                    ExternalOrderViewModel vm = new ExternalOrderViewModel(order);

                    result.ExternalOrderViewModels.Add(vm);
                }
            }
            else
            {
                result.ErrorMessage = "No unshipped orders found...";
            }

            return result;
        }