Ana içeriğe geç

AlpataReports (.NET Version)

  • .NET uygulamasında rapor kullanabilmek için

Adres: https://reports.alpatateknoloji.com

Adresine istek atılması gerekmektedir.

Swagger UI: https://reports.alpatateknoloji.com/swagger/ui/index

  • Gönderilmesi Gerekenler:
  • Headers:

    ParametreModel - List<ParametreModel>
    SubReportModel - List<SubReportModel>
    RaporBaslik - string
    RaporKodu - string
    RaporAdi - string
    Klasor - string
    

  • Content:

    DataSet - XML
    

  • Api tarafında yazılması gereken örnek istek:

Pdf İçin:

/// <summary>
/// Tescil Stok Hareket Dokumu Gunluk
/// </summary>
/// <returns></returns>
[HttpPost("GetTescilStokHareketDokumuGunluk")]
public async Task<IActionResult> GetTescilStokHareketDokumuGunluk([FromBody] RaporFilterTescilStokHareketDokumuGunluk model)
{
    try
    {
        var baglantiAdresi = await NoSqlService.GetString($"DbInfo:{tokenInfo.IsletmeKodu}", collection: "main") + configuration["Alpata.Data:DbSecurity"];

        SqlConnection Baglanti = new SqlConnection();
        Baglanti.ConnectionString = baglantiAdresi;
        Baglanti.Open();
        StringBuilder sb = new StringBuilder();

        string query = @" Select     top 1  dbo.TblUyeUyeTanim.UyeSicilNo, dbo.TblUyeUyeTanim.Id as UyeId, TblStockMaster3.Kod AS UrunKodu, TblStockMaster3.Adi AS UrunAdi, dbo.TblUyeUyeTanim.FirmaUnvani, 
                 CASE WHEN dbo.TblBBSStockHareket.Tip = 'G' THEN dbo.TblBBSStockHareket.Miktar ELSE 0 END AS Giris, 
                 CASE WHEN dbo.TblBBSStockHareket.Tip = 'C' THEN dbo.TblBBSStockHareket.Miktar ELSE 0 END AS Cikis, dbo.TblBBSStockHareket.IslemNo as HareketNo,  0 as Bagli, dbo.TblBBSStockHareket.TescilTarih as  Tarih, 
                 dbo.TblTescilHareketAyTanim.kod as  AyDonem, dbo.TblTescilHareketYilTanim.Kod as YilDonem, dbo.TblBBSStockHareket.Aciklama, dbo.TblBBSStockHareket.IslemNo, '' as GrupNo,

                 ROW_NUMBER() OVER(ORDER BY TblBBSStockHareket.Id ASC) AS   Sira, 
                 dbo.TblTescilHareketAyTanim.Adi as AyIsmi 
                 ,TblStockMaster2.Kod AS UstUrunKodu, TblStockMaster2.Adi AS UstUrunAdi                      
                 ,TblStockMaster3.Kod AS Ust2UrunKodu, TblStockMaster2.Adi AS Ust2UrunAdi

                 from TblBBSStockHareket INNER JOIN
TblUyeUyeTanim ON TblBBSStockHareket.UyeId = TblUyeUyeTanim.Id INNER JOIN
TblStockTipGrup ON TblBBSStockHareket.StockTipGrupId = TblStockTipGrup.Id INNER JOIN
TblTescilHareketAyTanim ON TblBBSStockHareket.AyDonem = TblTescilHareketAyTanim.Id  INNER JOIN
TblTescilHareketYilTanim ON TblBBSStockHareket.YilDonem = TblTescilHareketYilTanim.Id LEFT OUTER JOIN
TblStockMaster ON TblBBSStockHareket.StockId  = TblStockMaster.Id LEFT OUTER JOIN
TblStockMaster as TblStockMaster2 ON TblStockMaster.UstStockId  = TblStockMaster2.Id LEFT OUTER JOIN
TblStockMaster as TblStockMaster3 ON TblStockMaster2.UstStockId  = TblStockMaster3.Id
WHERE        (NOT (dbo.TblBBSStockHareket.IslemNo LIKE N'-%'))

 "; ;
        string sqlKisit = "";

        if (model.Tarih != "")
        {
            query += "and dbo.TblBBSStockHareket.TescilTarih >= CONVERT(DATETIME, '" + model.Tarih + @"', 103)";
        }
        if (model.Tarih2 != "")
        {
            query += "and dbo.TblBBSStockHareket.TescilTarih <= CONVERT(DATETIME, '" + model.Tarih2 + @"', 103)";
        }
        if (model.UyeId != null)
        {
            query += "and UyeId =   " + model.UyeId + @" ";
        }

        sb.Append(query + sqlKisit);

        DataSet Ds = new DataSet();

        SqlDataAdapter dataAdapt = new SqlDataAdapter(sb.ToString(), Baglanti);
        DataTable Dt = new DataTable();
        dataAdapt.Fill(Dt);
        Ds.Tables.Add(Dt);

        Ds.Tables[0].TableName = "GrnStokHareketDokumu";

        List<ParametreModel> parametreModels = new List<ParametreModel>();
        List<SubReportModel> subReportModels = new List<SubReportModel>();

        // API'nin base URL'sini belirtin 
        using (var httpClient = new HttpClient
        {
            BaseAddress = new Uri(configuration["NETReportURL"]) //https://reports.alpatateknoloji.com
        })
        {
            // XML verisini hazırlayın (örneğin)
            string xmlData = Ds.GetXml();

            // XML verisini sıkıştırın
            byte[] xmlBytes = Encoding.UTF8.GetBytes(xmlData);
            byte[] compressedData;
            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (DeflateStream deflateStream = new DeflateStream(memoryStream, CompressionLevel.Optimal))
                {
                    deflateStream.Write(xmlBytes, 0, xmlBytes.Length);
                }
                compressedData = memoryStream.ToArray();
            }

            // Sıkıştırılmış veriyi base64 kodlayın (isteğe bağlı)
            string compressedXml = Convert.ToBase64String(compressedData);

            // Sıkıştırılmış XML verisini API'ye gönderin
            var content = new StringContent(compressedXml, Encoding.UTF8, "application/xml");
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            httpClient.DefaultRequestHeaders.Add("RaporKodu", "Rapor");
            httpClient.DefaultRequestHeaders.Add("Klasor", base.tokenInfo.IsletmeKodu.ToString());
            httpClient.DefaultRequestHeaders.Add("RaporAdi", "RptTescilStokHareketDokumu");
            httpClient.DefaultRequestHeaders.Add("RaporBaslik", "Rapor");
            httpClient.DefaultRequestHeaders.Add("ParametreModel", Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(parametreModels))));
            httpClient.DefaultRequestHeaders.Add("SubReportModel", Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(subReportModels))));

            HttpResponseMessage response = await httpClient.PostAsync("PostCreateReport", content);

            // Yanıtı işleyin
            if (response.IsSuccessStatusCode)
            {
                var contentStream = await response.Content.ReadAsStreamAsync(); // get the actual content stream

                var dstFilename = "RptTescilStokHareketDokumu.pdf";
                if (System.IO.File.Exists(dstFilename)) System.IO.File.Delete(dstFilename);
                using var sw = new System.IO.FileStream(dstFilename, System.IO.FileMode.Create);
                await contentStream.CopyToAsync(sw);
                sw.Close();

                var file = System.IO.File.ReadAllBytes(dstFilename);

                HttpContext.Response.Headers.ContentDisposition = "inline;filename=" + dstFilename;
                return File(file, "application/pdf", dstFilename);
            }
            else
                return BadRequest(response);
        }
    }
    catch (Exception ex)
    {
        return BadRequest(ex.Message);
    }
}

Excel İçin:

/// <summary>
/// Tescil Stok Hareket Dokumu Gunluk
/// </summary>
/// <returns></returns>
[HttpPost("GetTescilStokHareketDokumuGunluk")]
public async Task<IActionResult> GetTescilStokHareketDokumuGunluk([FromBody] RaporFilterTescilStokHareketDokumuGunluk model)
{
    try
    {
        var baglantiAdresi = await NoSqlService.GetString($"DbInfo:{tokenInfo.IsletmeKodu}", collection: "main") + configuration["Alpata.Data:DbSecurity"];

        SqlConnection Baglanti = new SqlConnection();
        Baglanti.ConnectionString = baglantiAdresi;
        Baglanti.Open();
        StringBuilder sb = new StringBuilder();

        string query = @" Select     top 1  dbo.TblUyeUyeTanim.UyeSicilNo, dbo.TblUyeUyeTanim.Id as UyeId, TblStockMaster3.Kod AS UrunKodu, TblStockMaster3.Adi AS UrunAdi, dbo.TblUyeUyeTanim.FirmaUnvani, 
                 CASE WHEN dbo.TblBBSStockHareket.Tip = 'G' THEN dbo.TblBBSStockHareket.Miktar ELSE 0 END AS Giris, 
                 CASE WHEN dbo.TblBBSStockHareket.Tip = 'C' THEN dbo.TblBBSStockHareket.Miktar ELSE 0 END AS Cikis, dbo.TblBBSStockHareket.IslemNo as HareketNo,  0 as Bagli, dbo.TblBBSStockHareket.TescilTarih as  Tarih, 
                 dbo.TblTescilHareketAyTanim.kod as  AyDonem, dbo.TblTescilHareketYilTanim.Kod as YilDonem, dbo.TblBBSStockHareket.Aciklama, dbo.TblBBSStockHareket.IslemNo, '' as GrupNo,

                 ROW_NUMBER() OVER(ORDER BY TblBBSStockHareket.Id ASC) AS   Sira, 
                 dbo.TblTescilHareketAyTanim.Adi as AyIsmi 
                 ,TblStockMaster2.Kod AS UstUrunKodu, TblStockMaster2.Adi AS UstUrunAdi                      
                 ,TblStockMaster3.Kod AS Ust2UrunKodu, TblStockMaster2.Adi AS Ust2UrunAdi

                 from TblBBSStockHareket INNER JOIN
TblUyeUyeTanim ON TblBBSStockHareket.UyeId = TblUyeUyeTanim.Id INNER JOIN
TblStockTipGrup ON TblBBSStockHareket.StockTipGrupId = TblStockTipGrup.Id INNER JOIN
TblTescilHareketAyTanim ON TblBBSStockHareket.AyDonem = TblTescilHareketAyTanim.Id  INNER JOIN
TblTescilHareketYilTanim ON TblBBSStockHareket.YilDonem = TblTescilHareketYilTanim.Id LEFT OUTER JOIN
TblStockMaster ON TblBBSStockHareket.StockId  = TblStockMaster.Id LEFT OUTER JOIN
TblStockMaster as TblStockMaster2 ON TblStockMaster.UstStockId  = TblStockMaster2.Id LEFT OUTER JOIN
TblStockMaster as TblStockMaster3 ON TblStockMaster2.UstStockId  = TblStockMaster3.Id
WHERE        (NOT (dbo.TblBBSStockHareket.IslemNo LIKE N'-%'))

 "; ;
        string sqlKisit = "";

        if (model.Tarih != "")
        {
            query += "and dbo.TblBBSStockHareket.TescilTarih >= CONVERT(DATETIME, '" + model.Tarih + @"', 103)";
        }
        if (model.Tarih2 != "")
        {
            query += "and dbo.TblBBSStockHareket.TescilTarih <= CONVERT(DATETIME, '" + model.Tarih2 + @"', 103)";
        }
        if (model.UyeId != null)
        {
            query += "and UyeId =   " + model.UyeId + @" ";
        }

        sb.Append(query + sqlKisit);

        DataSet Ds = new DataSet();

        SqlDataAdapter dataAdapt = new SqlDataAdapter(sb.ToString(), Baglanti);
        DataTable Dt = new DataTable();
        dataAdapt.Fill(Dt);
        Ds.Tables.Add(Dt);

        Ds.Tables[0].TableName = "GrnStokHareketDokumu";

        List<ParametreModel> parametreModels = new List<ParametreModel>();
        List<SubReportModel> subReportModels = new List<SubReportModel>();

        // API'nin base URL'sini belirtin 
        using (var httpClient = new HttpClient
        {
            BaseAddress = new Uri(configuration["NETReportURL"]) //https://reports.alpatateknoloji.com
        })
        {
            // XML verisini hazırlayın (örneğin)
            string xmlData = Ds.GetXml();

            // XML verisini sıkıştırın
            byte[] xmlBytes = Encoding.UTF8.GetBytes(xmlData);
            byte[] compressedData;
            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (DeflateStream deflateStream = new DeflateStream(memoryStream, CompressionLevel.Optimal))
                {
                    deflateStream.Write(xmlBytes, 0, xmlBytes.Length);
                }
                compressedData = memoryStream.ToArray();
            }

            // Sıkıştırılmış veriyi base64 kodlayın (isteğe bağlı)
            string compressedXml = Convert.ToBase64String(compressedData);

            // Sıkıştırılmış XML verisini API'ye gönderin
            var content = new StringContent(compressedXml, Encoding.UTF8, "application/xml");
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            httpClient.DefaultRequestHeaders.Add("RaporKodu", "Rapor");
            httpClient.DefaultRequestHeaders.Add("Klasor", base.tokenInfo.IsletmeKodu.ToString());
            httpClient.DefaultRequestHeaders.Add("RaporAdi", "RptTescilStokHareketDokumu");
            httpClient.DefaultRequestHeaders.Add("RaporBaslik", "Rapor");
            httpClient.DefaultRequestHeaders.Add("ParametreModel", Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(parametreModels))));
            httpClient.DefaultRequestHeaders.Add("SubReportModel", Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(subReportModels))));

            HttpResponseMessage response = await httpClient.PostAsync("PostCreateReport", content);

            // Yanıtı işleyin
            if (response.IsSuccessStatusCode)
            {
                var contentStream = await response.Content.ReadAsStreamAsync(); // get the actual content stream

                var dstFilename = "RptMuhYevmiyeDefteri.xls";
                if (System.IO.File.Exists(dstFilename)) System.IO.File.Delete(dstFilename);
                using var sw = new System.IO.FileStream(dstFilename, System.IO.FileMode.Create);
                await contentStream.CopyToAsync(sw);
                sw.Close();

                var file = System.IO.File.ReadAllBytes(dstFilename);

                HttpContext.Response.Headers.ContentDisposition = "inline;filename=" + dstFilename;
                return File(file, "application/vnd.ms-excel", dstFilename);
            }
            else
                return BadRequest(response);
        }
    }
    catch (Exception ex)
    {
        return BadRequest(ex.Message);
    }
}

  • ParametreModel class:

    /// <summary>
    /// ParametreModel
    /// </summary>
    public class ParametreModel
    {
        /// <summary>
        /// ParametreAdi
        /// </summary>
        public string ParametreAdi { get; set; }
        /// <summary>
        /// Deger
        /// </summary>
        public string Deger { get; set; }
    }
    

  • SubReportModel class:

    /// <summary>
    /// SubReportModel
    /// </summary>
    public class SubReportModel
    {
        /// <summary>
        /// RaporAdi
        /// </summary>
        public string RaporAdi { get; set; }
    }
    

Mongo Db Aktif Connection Getirmek İçin:

var baglantiAdresi = await NoSqlService.GetString($"DbInfo:{tokenInfo.IsletmeKodu}", collection: "main") + configuration["Alpata.Data:DbSecurity"];