public List<TpTreaty> GetTpTreaty(string hostCountryCode, string searchQuery)
        {
            if (!string.IsNullOrEmpty(searchQuery))
            {
                return GetTpTreatyByArticleContentSearch(hostCountryCode, searchQuery.Trim());
            }
            using (var work = new UnitOfWork())
            {

                var allTpTreaties = new List<TpTreaty>();
                var tpTreaties = new TpTreatyRepository(work).GetTpTreaty(hostCountryCode, searchQuery).ToList();
                var distinctConceptIds = tpTreaties.Select(b => b.OcdeArt1_ConceptId).Distinct()
                                                   .Union(tpTreaties.Select(b => b.OcdeArt2_ConceptId).Distinct())
                                                   .Union(tpTreaties.Select(b => b.OcdeArt3_ConceptId).Distinct())
                                                   .Union(tpTreaties.Select(b => b.CompetentAuthority_ConceptId).Distinct())
                                                   .Union(tpTreaties.Select(b => b.ReliefFromDouble_ConceptId).Distinct())
                                                   .Where(b => b!= null).Select(b => b);

                var conceptIds = string.Join(",", distinctConceptIds);
                var partnerCountryCodes = string.Join(",", tpTreaties.Select(b => b.Country1.Code).ToList());
                var articles = new TreetyBusiness().GetArticlesByHostCountry(hostCountryCode, partnerCountryCodes, conceptIds);
                var treatyBusiness = new TreetyBusiness();
                foreach (var treaty in tpTreaties)
                {
                    var countryPair = treatyBusiness.GetPairCountryCode(hostCountryCode, treaty.Country1.Code);
                    allTpTreaties.Add(new TpTreaty()
                                          {
                                                Id = treaty.Id,
                                                OcdeArt1 = !string.IsNullOrEmpty(treaty.OcdeArt1) ? treaty.OcdeArt1 : string.Empty,
                                                OcdeArt2 = !string.IsNullOrEmpty(treaty.OcdeArt2) ? treaty.OcdeArt2 : string.Empty,
                                                TreatyPartnerCountry = treaty.Country1.Name,
                                                TreatyPartnerCountryCode = treaty.Country1.Code,
                                                CompetentAuthority = !string.IsNullOrEmpty(treaty.CompetentAuthority) ? treaty.CompetentAuthority : string.Empty,
                                                ReliefFromDouble = !string.IsNullOrEmpty(treaty.ReliefFromDouble) ? treaty.ReliefFromDouble : string.Empty,
                                                OcdeArt1ConceptId = treaty.OcdeArt1_ConceptId,
                                                OcdeArt2ConceptId = treaty.OcdeArt2_ConceptId,
                                                ReliefFromDoubleConceptId = treaty.ReliefFromDouble_ConceptId,
                                                CompetentAuthorityConceptId = treaty.CompetentAuthority_ConceptId,
                                                OcdeArt3 = treaty.OcdeArt3,
                                                OcdeArt3ConceptId = treaty.OcdeArt3_ConceptId,
                                                IsContentAvailbleForCompetentAuthority = articles.Count(b => (b.HostCountryCode == countryPair[0] && b.PartnerCountryCode == countryPair[1])
                                                                                                              && b.ConceptId == treaty.CompetentAuthority_ConceptId && b.ArticleContent.Length > 0) > 0,
                                                IsContentAvailbleForReliefFromDouble = articles.Count(b => (b.HostCountryCode == countryPair[0] && b.PartnerCountryCode == countryPair[1])
                                                                                                              && b.ConceptId == treaty.ReliefFromDouble_ConceptId && b.ArticleContent.Length > 0) > 0,
                                                IsContentAvailbleForOcdeArt3 = articles.Count(b => (b.HostCountryCode == countryPair[0] && b.PartnerCountryCode == countryPair[1])
                                                                                                              && b.ConceptId == treaty.OcdeArt3_ConceptId && b.ArticleContent.Length > 0) > 0,
                                                IsContentAvailbleForOcdeArt2 = articles.Count(b => (b.HostCountryCode == countryPair[0] && b.PartnerCountryCode == countryPair[1])
                                                                                                              && b.ConceptId == treaty.OcdeArt2_ConceptId && b.ArticleContent.Length > 0) > 0,
                                                IsContentAvailbleForOcdeArt1 = articles.Count(b => (b.HostCountryCode == countryPair[0] && b.PartnerCountryCode == countryPair[1])
                                                                                                              && b.ConceptId == treaty.OcdeArt1_ConceptId && b.ArticleContent.Length > 0) > 0
                                          });

                }

                allTpTreaties = allTpTreaties.OrderBy(a => a.TreatyPartnerCountry).ToList();
                return allTpTreaties;
            }
        }
 public List<TreatyArticleMetadata> Get(int hostCountryId, int partnerCountryId, string concept)
 {
     var response = new TreetyBusiness().GetArticles(hostCountryId, partnerCountryId, concept);
     if (response.Success)
     {
         return response.Data;
     }
     throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
 }
        public void ProcessRequest(HttpContext context)
        {
            byte[] data = null;
            string fileName = string.Empty;
            if (IsTreaty)
            {
                data = new TreetyBusiness().GetTreatyContent(TreatyId,out fileName);
            }

            fileName = Regex.Replace(fileName, @"[\W]", "_");
            if (data != null)
                WriteFileAsByteResponse(context, data, "pdf", "application/pdf", fileName);
        }
 public List<TreatyArticleMetadata> Get(string hostCountryCode, string partnerCountryCode, string concept)
 {
     try
     {
         var response = new TreetyBusiness().GetArticlesByHostAndPartnerCountryCode(hostCountryCode, partnerCountryCode, concept);
         if (response.Success)
         {
             return response.Data;
         }
     }
     catch (Exception ex)
     {
         throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
     }
     return new List<TreatyArticleMetadata>();
 }
 public string GetArticleData(string hostCountryCode, string partnerCountryCode, string conceptId)
 {
     using (var work = new UnitOfWork())
     {
         var repository = RepositoryContainer.GetArticleRepository(work);
         var countryList = new TreetyBusiness().GetPairCountryCode(hostCountryCode, partnerCountryCode);
         var reportContent = repository.GetArticlesByHostAndPartnerCountryCode(countryList[0], countryList[1], conceptId).FirstOrDefault();
         if(reportContent != null)
         {
             return reportContent.ArticleContent;
         }
         else
         {
             return string.Empty;
         }
     }
 }
 public Response<List<TreatyWithWTRRates>> GetTreatyWithWTRRates(string hostCountryCode)
 {
     try
     {
         var treaty = new TreetyBusiness().GetTreatyWithWTRRates(hostCountryCode);
         return new Response<List<TreatyWithWTRRates>>()
             {
                Data = treaty,
                 Success = true
             };
     }
     catch (Exception)
     {
         throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
     }
 }
 public string GetTreatyExcelFile(string hostCountryCode, string fileType,string columnHeaderList)
 {
     var response = new Response<string>();
     try
     {
         var reportGenerator = new DocumentManagerExcelReportGenerator();
         List<TreatyWithWTRRates> treaty = new TreetyBusiness().GetTreatyWithWTRRates(hostCountryCode);
        return reportGenerator.GetnewExcelReport(AppSettings.ReportLocation, treaty,columnHeaderList);
     }
     catch (Exception ex)
     {
         return string.Empty;
     }
 }
 public List<Treaty> GetTreaty(string hostCountryCode, string searchInput)
 {
     var treaty = new TreetyBusiness().GetTreaty(hostCountryCode, searchInput);
     var response = treaty;
     if (response.Success)
     {
         return response.Data;
     }
     throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
 }
        public List<TreatyWithWTRRates> GetTreatyWithWTRRates(string hostCountryCode)
        {
            using (var work = new UnitOfWork())
            {
                var treatyMetadata = new TreatyRepository(work).GetTreaty(hostCountryCode, "").ToList();
                var treatyBusiness = new TreetyBusiness();
                var conceptIds = "DIV_10" + "," + "INT_11" + "," + "ROY_12";
                var partnerCountryCodes = string.Join(",", treatyMetadata.Select(b => b.Country1.Code).ToList());
                var partnerCountryCodes2 = string.Join(",", treatyMetadata.Select(b => b.Country.Code).ToList());
                partnerCountryCodes = partnerCountryCodes + "," + partnerCountryCodes2;
                var articles = new TreetyBusiness().GetArticlesByHostCountry(hostCountryCode, partnerCountryCodes, conceptIds);
                List<TreatyWithWTRRates> listWTRRates = new List<TreatyWithWTRRates>();
                foreach (var treetyMD in treatyMetadata)
                {
                    var list = new WTRateRepository(work).GetAllWTRatesValue(treetyMD.HostCountryId, treetyMD.PartnerCountryId);
                    if (list.Count == 0) list = new WTRateRepository(work).GetAllWTRatesValue(treetyMD.PartnerCountryId, treetyMD.HostCountryId);
                    var divStreamId = ConfigurationManager.AppSettings["DivSubstantialHoldingRateStreamId"].Trim();
                    var divportfolioStreamId = ConfigurationManager.AppSettings["DIVPortfolioStreamId"].Trim();
                    var intGeneralStreamId = ConfigurationManager.AppSettings["IntGeneralStreamId"].Trim();
                    var intCbStreamId = ConfigurationManager.AppSettings["InterestCBRateStreamId"].Trim();
                    var intBankStreamId = ConfigurationManager.AppSettings["InterestBankRateStreamId"].Trim();
                    var royPatentStreamId = ConfigurationManager.AppSettings["RoyalityPatentRateStreamId"].Trim();
                    var royTmStreamId = ConfigurationManager.AppSettings["RoyalityTmRateStreamId"].Trim();
                    var royCrStreamId = ConfigurationManager.AppSettings["RoyalityCrRateStreamId"].Trim();
                    var royLpStreamId = ConfigurationManager.AppSettings["RoyalityLpRateStreamId"].Trim();

                    var divValue = list.Where(b => b.StreamId.Equals(divStreamId)).FirstOrDefault();
                    var divportfolioRatevalue = list.Where(b => b.StreamId.Equals(divportfolioStreamId)).FirstOrDefault();
                    var intGeneralValue = list.Where(b => b.StreamId.Equals(intGeneralStreamId)).FirstOrDefault();
                    var intCbValue = list.Where(b => b.StreamId.Equals(intCbStreamId)).FirstOrDefault();
                    var intBankValue = list.Where(b => b.StreamId.Equals(intBankStreamId)).FirstOrDefault();
                    var royPatentValue = list.Where(b => b.StreamId.Equals(royPatentStreamId)).FirstOrDefault();
                    var royTmValue = list.Where(b => b.StreamId.Equals(royTmStreamId)).FirstOrDefault();
                    var royLpValue = list.Where(b => b.StreamId.Equals(royLpStreamId)).FirstOrDefault();
                    var royCrValue = list.Where(b => b.StreamId.Equals(royCrStreamId)).FirstOrDefault();

                    var countryPair = treatyBusiness.GetPairCountryCode(treetyMD.Country.Code, treetyMD.Country1.Code);
                    var partnerCountryName = treetyMD.Country1.Code == hostCountryCode ? treetyMD.Country.Name : treetyMD.Country1.Name;
                    var partnerCountryId = treetyMD.Country1.Code == hostCountryCode ? treetyMD.Country.Id : treetyMD.Country1.Id;
                    TreatyWithWTRRates trWithWTR = new TreatyWithWTRRates()
                          {
                              DivSubstantialHoldingRate = divValue == null ? "" : divValue.Rate,
                              DivPortfolioRate = divportfolioRatevalue == null ? "" : divportfolioRatevalue.Rate,
                              InterestGeneralRate = intGeneralValue == null ? "" : intGeneralValue.Rate,
                              InterestCbRate = intCbValue == null ? "" : intCbValue.Rate,
                              InterestBankRate = intBankValue == null ? "" : intBankValue.Rate,
                              RoyaltyPatentRate = royPatentValue == null ? "" : royPatentValue.Rate,
                              RoyaltyCrRate = royCrValue == null ? "" : royCrValue.Rate,
                              RoyaltyLpRate = royLpValue == null ? "" : royLpValue.Rate,
                              RoyaltyTmRate = royTmValue == null ? "" : royTmValue.Rate,
                              DivSubstantialHoldingRateArticleLine = divValue == null ? "" : divValue.ArticleLine,
                              DivportfolioRateArticleLine = divportfolioRatevalue == null ? "" : divportfolioRatevalue.ArticleLine,
                              InterestGeneralRateArticleLine = intGeneralValue == null ? "" : intGeneralValue.ArticleLine,
                              InterestBankRateArticleLine = intBankValue == null ? "" : intBankValue.ArticleLine,
                              InterestCbRateArticleLine = intCbValue == null ? "" : intCbValue.ArticleLine,
                              RoyaltyPatentRateArticleLine = royPatentValue == null ? "" : royPatentValue.ArticleLine,
                              RoyaltyCrRateArticleLine = royCrValue == null ? "" : royCrValue.ArticleLine,
                              RoyaltyLpRateArticleLine = royLpValue == null ? "" : royLpValue.ArticleLine,
                              RoyaltyTmRateArticleLine = royTmValue == null ? "" : royTmValue.ArticleLine,
                              Country = partnerCountryName,
                              CountryId = partnerCountryId,
                              CountryCode = countryPair[0].Equals(hostCountryCode) ? countryPair[1] : countryPair[0],
                              EffectiveDate = treetyMD.EffectiveDate,
                              EntryIntoForce = treetyMD.EntryIntoForce,
                              Id = treetyMD.Id,
                              IsContentAvailable = (treetyMD.TreatyPdf != null && treetyMD.TreatyPdf.Length > 0),
                              Status = treetyMD.Status,
                              Title = treetyMD.Title,
                              IsContentAvailableForDividendRate = articles.Count(b => (b.HostCountryCode == countryPair[0] && b.PartnerCountryCode == countryPair[1])
                                                                                                            && b.ConceptId == "DIV_10" && b.ArticleContent.Length > 0) > 0,
                              IsContentAvailableForInterestRate = articles.Count(b => (b.HostCountryCode == countryPair[0] && b.PartnerCountryCode == countryPair[1])
                                                                                                            && b.ConceptId == "INT_11" && b.ArticleContent.Length > 0) > 0,
                              IsContentAvailableForRoyaltyRate = articles.Count(b => (b.HostCountryCode == countryPair[0] && b.PartnerCountryCode == countryPair[1])
                                                                                                            && b.ConceptId == "ROY_12" && b.ArticleContent.Length > 0) > 0,
                          };
                    listWTRRates.Add(trWithWTR);
                }
                listWTRRates = listWTRRates.OrderBy(b => b.Country).ToList();
                var singleDomesticItem = GetsingleDomesticRate(hostCountryCode);
                listWTRRates.Insert(0, singleDomesticItem);
                return listWTRRates;
            }
        }