public string GetSubscriptions(int clientid)
        {
            AuthController objAuth = new AuthController();

            if (objAuth.CheckUserClients(clientid) == 0)
            {
                return("");
            }

            List <SubscriptionMarket> lstsubmkt = new List <SubscriptionMarket>();

            lstsubmkt = dbContext.subscriptionMarket.Where(q => q.subscription.ClientId == clientid).ToList();
            List <ClientSubscriptionDTO> sublist = new List <ClientSubscriptionDTO>();
            List <MarketBase>            mktlist = new List <MarketBase>();

            int subid    = 0;
            int newSubid = 0;


            foreach (var r in lstsubmkt)
            {
                ClientSubscriptionDTO dto;
                Models.Subscription.SubscriptionDTO sDto;
                List <MarketBase> lstMkt;
                //MarketBase objMbase;
                subid = r.SubscriptionId;
                if (subid != newSubid)
                {
                    dto          = new ClientSubscriptionDTO();
                    sDto         = new Models.Subscription.SubscriptionDTO();
                    dto.ClientId = r.subscription.ClientId;
                    // dto.subscription = r.subscription;
                    sDto.SubscriptionId     = r.SubscriptionId;
                    sDto.Name               = r.subscription.Name;
                    sDto.ClientId           = r.subscription.ClientId;
                    sDto.CountryId          = r.subscription.CountryId;
                    sDto.ServiceId          = r.subscription.ServiceId;
                    sDto.DataTypeId         = r.subscription.DataTypeId;
                    sDto.SourceId           = r.subscription.SourceId;
                    sDto.Country            = r.subscription.country.Name;
                    sDto.Service            = r.subscription.service.Name;
                    sDto.Data               = r.subscription.dataType.Name;
                    sDto.Source             = r.subscription.source.Name;
                    sDto.StartDate          = r.subscription.StartDate;
                    sDto.EndDate            = r.subscription.EndDate;
                    sDto.ServiceTerritoryId = r.subscription.ServiceTerritoryId;
                    sDto.Active             = r.subscription.Active;
                    sDto.LastModified       = r.subscription.LastModified;
                    sDto.ModifiedBy         = r.subscription.ModifiedBy;
                    sDto.serviceTerritory   = r.subscription.serviceTerritory;
                    dto.subscription        = sDto;
                    var listOfmktid = lstsubmkt.Where(r1 => r1.SubscriptionId == subid && r1.subscription.EndDate.Year >= DateTime.Now.Year).Select(t => t.MarketBaseId);
                    lstMkt = new List <MarketBase>();

                    lstMkt = lstsubmkt.Where(t2 => t2.SubscriptionId == subid).Select(t3 => t3.marketBase).OrderBy(p => p.Name).ThenBy(q => q.Suffix).ToList();

                    dto.MarketBase = lstMkt;
                    sublist.Add(dto);
                    //dto = new ClientSubscriptionDTO();
                    //dto.subscription = r.subscription;

                    //var listOfmktid = lstsubmkt.Where(r1 => r1.SubscriptionId == subid && r1.subscription.EndDate.Year >= DateTime.Now.Year).Select(t => t.MarketBaseId);
                    //lstMkt = new List<MarketBase>();

                    //lstMkt = lstsubmkt.Where(t2 => t2.SubscriptionId == subid).Select(t3 => t3.marketBase).ToList();

                    //dto.MarketBase = lstMkt;
                    //sublist.Add(dto);
                }
                newSubid = r.SubscriptionId;
            }


            var json = JsonConvert.SerializeObject(sublist, Formatting.Indented,
                                                   new JsonSerializerSettings
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });

            return(json);
        }
        public HttpResponseMessage DownloadSubscriptions(int clientid)
        {
            AuthController objAuth = new AuthController();

            if (objAuth.CheckUserClients(clientid) == 0)
            {
                return(new HttpResponseMessage(HttpStatusCode.NotFound));
            }

            List <SubscriptionMarket> lstsubmkt = new List <SubscriptionMarket>();

            List <ClientSubscriptionDTO> sublist = new List <ClientSubscriptionDTO>();
            List <MarketBase>            mktlist = new List <MarketBase>();

            DataTable subdcriptionDT = new DataTable();

            var objSub = dbContext.subscription.Where(u => u.ClientId == clientid && u.EndDate.Year >= DateTime.Now.Year).ToList();

            if (objSub != null && objSub.Count > 0)
            {
                foreach (var sub in objSub)
                {
                    ClientSubscriptionDTO dto = new ClientSubscriptionDTO();
                    Models.Subscription.SubscriptionDTO sDto = new Models.Subscription.SubscriptionDTO();
                    dto.ClientId = sub.ClientId;
                    //sub.client.MarketDefinitions = new List<MarketDefinition>();
                    //dto.subscription = sub;
                    sDto.SubscriptionId = sub.SubscriptionId;
                    sDto.Name           = sub.Name;
                    sDto.ClientId       = sub.ClientId;

                    var cList = dbContext.Clients.Where(z => z.Id == sub.ClientId).ToList().FirstOrDefault();
                    dto.ClientName = cList.Name;
                    //dto.ClientName =
                    sDto.CountryId          = sub.CountryId;
                    sDto.ServiceId          = sub.ServiceId;
                    sDto.DataTypeId         = sub.DataTypeId;
                    sDto.SourceId           = sub.SourceId;
                    sDto.Country            = sub.country.Name;
                    sDto.Service            = sub.service.Name;
                    sDto.Data               = sub.dataType.Name;
                    sDto.Source             = sub.source.Name;
                    sDto.StartDate          = sub.StartDate;
                    sDto.EndDate            = sub.EndDate;
                    sDto.ServiceTerritoryId = sub.ServiceTerritoryId;
                    sDto.Active             = sub.Active;
                    sDto.LastModified       = sub.LastModified;
                    sDto.ModifiedBy         = sub.ModifiedBy;
                    sDto.serviceTerritory   = sub.serviceTerritory;
                    dto.subscription        = sDto;
                    var submket = dbContext.subscriptionMarket.Where(p => p.SubscriptionId == sub.SubscriptionId).ToList();
                    if (submket != null && submket.Count() > 0)
                    {
                        dto.MarketBase = submket.Select(a => a.marketBase).OrderBy(p => p.Name).ThenBy(q => q.Suffix).ToList();
                    }
                    //dto.subscription.client.MarketDefinitions = new List<MarketDefinition>();
                    sublist.Add(dto);
                    ////subdcriptionDT = ListToDataTable(sublist);
                    //string xmlString = SerializeXml(sublist);

                    //DataSet ds = new DataSet("New_DataSet");
                    //using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(new StringReader(xmlString)))
                    //{
                    //    ds.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;
                    //    ds.ReadXml(reader);
                    //    subdcriptionDT = ds.Tables[0];
                    //}
                    subdcriptionDT = BuildsubscriptionDataTable(sublist);

                    //ClientSubscriptionDTO dto = new ClientSubscriptionDTO();
                    //dto.ClientId = sub.ClientId;
                    //sub.client.MarketDefinitions = new List<MarketDefinition>();
                    //dto.subscription = sub;
                    //var submket = dbContext.subscriptionMarket.Where(p => p.SubscriptionId == sub.SubscriptionId).ToList();
                    //if (submket != null && submket.Count() > 0)
                    //{
                    //    dto.MarketBase = submket.Select(a => a.marketBase).ToList();
                    //}
                    //dto.subscription.client.MarketDefinitions = new List<MarketDefinition>();
                    //sublist.Add(dto);
                }
            }

            //foreach (var xx in sublist)
            //{

            //    xx.subscription.client.MarketDefinitions.RemoveRange(0, xx.subscription.client.MarketDefinitions.Count);
            HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
            MemoryStream        stream = new MemoryStream();

            stream = GetExcelStream(subdcriptionDT);
            // Reset Stream Position
            stream.Position = 0;
            result.Content  = new StreamContent(stream);

            // Generic Content Header
            result.Content.Headers.ContentType        = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
            return(result);
        }