public MasterdataExportResponse GetResponse(ThirdPartyMasterDataQuery query)
 {
     var response = new MasterdataExportResponse();
     bool hasNext = false;
     IEnumerable<ImportEntity> masterData = new List<ImportEntity>();
     try
     {
         switch (query.MasterCollective)
         {
             case MasterDataCollective.Outlet:
                 masterData = GetOutlets(query, out hasNext);
                 break;
             case MasterDataCollective.SaleProduct:
                 masterData = GetProducts(query, out hasNext);
                 break;
         }
         response.MasterData = masterData;
         response.HasNextPage = hasNext;
     }catch(Exception ex)
     {
         response.Result = "Error";
         response.ResultInfo = ex.Message;
     }
     
     return response;
 }
 IEnumerable<ImportEntity> GetProducts(ThirdPartyMasterDataQuery myQuery, out bool hasNext)
 {
    
     using (var ctx=new CokeDataContext(Con))
     {
         IQueryable<tblProduct> query=null;
         hasNext = false;
         if (Enumerable.Any<string>(myQuery.SearchTextList))
         {
             List<tblProduct> items = new List<tblProduct>();
             foreach (var productcode in myQuery.SearchTextList)
             {
                 var found = ctx.tblProduct.FirstOrDefault(
                     p =>
                     p.ProductCode.Trim().Equals(productcode.Trim(),
                                                 StringComparison.CurrentCultureIgnoreCase));
                 if (found != null)
                     items.Add(found);
             }
             if (!items.Any()) return null;
             return items.Select(Map);
         }
         return null;
     }
    
 }
        IEnumerable<ImportEntity> GetOutlets(ThirdPartyMasterDataQuery myQuery, out bool hasNext)
        {
            using (var ctx = new CokeDataContext(Con))
            {
                IQueryable<tblCostCentre> query = null;
                
                    if (Enumerable.Any<string>(myQuery.SearchTextList))
                    {
                        hasNext = false;
                        List<tblCostCentre> items=new List<tblCostCentre>();
                        foreach (var outletcode in myQuery.SearchTextList)
                        {
                            var found = ctx.tblCostCentre.FirstOrDefault(
                                p =>
                                p.Cost_Centre_Code.Trim().Equals(outletcode.Trim(),
                                                                 StringComparison.CurrentCultureIgnoreCase) ||
                                p.Name.Trim() == outletcode.Trim() && p.CostCentreType == (int)CostCentreType.Outlet);
                            if (found != null)
                                items.Add(found);
                            
                        }
                        if (!items.Any()) return null;
                        return items.Select(Map);

                        
                    }
                
               query= ctx.tblCostCentre.AsQueryable().OrderBy(s => s.IM_DateCreated).Where(s=>s.IM_Status != (int)EntityStatus.Deleted
                    && s.IM_DateLastUpdated > myQuery.From);
                if (myQuery.Skip.HasValue && myQuery.Take.HasValue)
                    query = query.Skip(myQuery.Skip.Value).Take(myQuery.Take.Value);
                hasNext = false;
                return Enumerable.ToList<ImportEntity>(query.Select(Map));
            }

        }
        private ThirdPartyMasterDataQuery GetSyncValues()
        {
            var query = new ThirdPartyMasterDataQuery();
            int take;
            int skip;
            DateTime syncTimeStamp = DateTime.Now;

            var parameters = this.Request.RequestUri.ParseQueryString();
            string entityName = parameters["EntityName"];
            string searchtext = parameters["SearchText"];
            string fields = parameters["RequestedFields"];
            if(!string.IsNullOrEmpty(fields))
                query.RequestedFields = fields.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToList();

            var lookupTextList=new List<string>();
            if (!string.IsNullOrWhiteSpace(searchtext))
            lookupTextList = searchtext.Split(new string[] {","}, StringSplitOptions.RemoveEmptyEntries).ToList();
            DateTime.TryParse(parameters["syncTimeStamp"], out syncTimeStamp);
            this.PagingParam(out take, out skip);
            query.From = syncTimeStamp;
            if (take != 0)
            {
                query.Skip = skip;
                query.Take = take;
            }
           
     if (!string.IsNullOrWhiteSpace(entityName))
            {
                MasterDataCollective entity = (MasterDataCollective)Enum.Parse(typeof(MasterDataCollective), entityName);
                query.MasterCollective = entity;
            }
                
            if (lookupTextList.Any())
                query.SearchTextList = lookupTextList;
            return query;
        }
 public MasterdataExportResponse ExportMasterData(ThirdPartyMasterDataQuery query)
 {
     return _masterDataExportService.GetResponse(query);
 }