Ana içeriğe geç

AlpataReport

  • .NET Core uygulamasında rapor kullanabilmek için

Adres: https://report.alpatateknoloji.com

Adresine istek atılması gerekmektedir.

Swagger UI: https://report.alpatateknoloji.com/swagger

  • Gönderilmesi Gerekenler:
  • Headers:

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

  • Content:

    DataSet - byte[]
    

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

Pdf İçin:

string BaglantiAdresi = "Server=192.168.1.38;Database=BBS2023;User Id=alpata;Password=master;";
SqlConnection Baglanti = new SqlConnection();
Baglanti.ConnectionString = BaglantiAdresi;
Baglanti.Open();
StringBuilder sb = new StringBuilder();
sb.Append("SELECT LEN(dbo.TblMizan.HesapKodu) AS HesKoduUzunlugu, dbo.TblMizan.Tarih, dbo.TblMizan.FisNo, dbo.TblMizan.FisSira,");
sb.Append(" dbo.TblFisSira.FisTurSira, dbo.TblMizan.FisTur, dbo.TblMizan.HesapKodu, dbo.TblMizan.Borc, dbo.TblMizan.Alacak, dbo.TblHesapPlan.UstHesap,");
sb.Append(" SUBSTRING(dbo.TblMizan.HesapKodu, 1, 3) AS AnaHesap, dbo.TblHesapPlan.HesAdi, TblHesapPlan_1.HesAdi AS AnaHesapAdi,");
sb.Append(" dbo.TblFisSira.FisTurAdi, MONTH(dbo.TblMizan.Tarih) AS Ay, dbo.TblFisMuhasebe.OzelKod1,dbo.TblFisDetay.Aciklama");
sb.Append(" FROM dbo.TblMizan INNER JOIN");
sb.Append(" dbo.TblFisSira ON dbo.TblMizan.FisTur = dbo.TblFisSira.FisTur INNER JOIN");
sb.Append(" dbo.TblHesapPlan ON dbo.TblMizan.HesapKodu = dbo.TblHesapPlan.HesKodu INNER JOIN");
sb.Append(" dbo.TblHesapPlan AS TblHesapPlan_1 ON SUBSTRING(dbo.TblMizan.HesapKodu, 1, 3) = TblHesapPlan_1.HesKodu INNER JOIN");
sb.Append(" dbo.TblFisMuhasebe ON dbo.TblMizan.FisNo = dbo.TblFisMuhasebe.FisNo AND dbo.TblMizan.FisTur = dbo.TblFisMuhasebe.FisTur INNER JOIN");
sb.Append(" dbo.TblFisDetay ON dbo.TblMizan.FisNo = dbo.TblFisDetay.FisNo AND dbo.TblMizan.FisSira = dbo.TblFisDetay.FisSira AND dbo.TblMizan.FisTur = dbo.TblFisDetay.FisTur");
sb.Append(" WHERE (LEN(dbo.TblMizan.HesapKodu) >= 9) AND (dbo.TblFisSira.FisTurSira IS NOT NULL)");
sb.Append(" ORDER BY dbo.TblMizan.Tarih, dbo.TblMizan.FisNo, dbo.TblFisSira.FisTurSira, dbo.TblMizan.FisSira");

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 = "GrnMYevmiye";

byte[] a = ConvertDataSetToByteArray(Ds);

List<ParametreModel> b = new List<ParametreModel>();
b.Add(new ParametreModel { Deger = "1234", ParametreAdi = "BorsaAdi" });

var client = new HttpClient
{
    BaseAddress = new Uri("https://report.alpatateknoloji.com/")
};

client.Timeout = TimeSpan.FromHours(90);
using (var content = new ByteArrayContent(a))
{
    content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.Add("RaporKodu", "Rapor");
    client.DefaultRequestHeaders.Add("Klasor", "123");
    client.DefaultRequestHeaders.Add("RaporAdi", "RptMuhYevmiyeDefteri");
    client.DefaultRequestHeaders.Add("RaporBaslik", "Rapor");
    client.DefaultRequestHeaders.Add("ParametreModel", Newtonsoft.Json.JsonConvert.SerializeObject(b));

    var result = await client.PostAsync("PostCreateReport", content);

    var contentStream = await result.Content.ReadAsStreamAsync(); // get the actual content stream

    var dstFilename = "RptMuhYevmiyeDefteri.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("RptMuhYevmiyeDefteri.pdf");

    HttpContext.Response.Headers.ContentDisposition = "inline;filename=RptMuhYevmiyeDefteri.pdf";

    return File(file, "application/pdf", "RptMuhYevmiyeDefteri.pdf");
}

Excel İçin:

string BaglantiAdresi = "Server=192.168.1.38;Database=BBS2023;User Id=alpata;Password=master;";
SqlConnection Baglanti = new SqlConnection();
Baglanti.ConnectionString = BaglantiAdresi;
Baglanti.Open();
StringBuilder sb = new StringBuilder();
sb.Append("SELECT LEN(dbo.TblMizan.HesapKodu) AS HesKoduUzunlugu, dbo.TblMizan.Tarih, dbo.TblMizan.FisNo, dbo.TblMizan.FisSira,");
sb.Append(" dbo.TblFisSira.FisTurSira, dbo.TblMizan.FisTur, dbo.TblMizan.HesapKodu, dbo.TblMizan.Borc, dbo.TblMizan.Alacak, dbo.TblHesapPlan.UstHesap,");
sb.Append(" SUBSTRING(dbo.TblMizan.HesapKodu, 1, 3) AS AnaHesap, dbo.TblHesapPlan.HesAdi, TblHesapPlan_1.HesAdi AS AnaHesapAdi,");
sb.Append(" dbo.TblFisSira.FisTurAdi, MONTH(dbo.TblMizan.Tarih) AS Ay, dbo.TblFisMuhasebe.OzelKod1,dbo.TblFisDetay.Aciklama");
sb.Append(" FROM dbo.TblMizan INNER JOIN");
sb.Append(" dbo.TblFisSira ON dbo.TblMizan.FisTur = dbo.TblFisSira.FisTur INNER JOIN");
sb.Append(" dbo.TblHesapPlan ON dbo.TblMizan.HesapKodu = dbo.TblHesapPlan.HesKodu INNER JOIN");
sb.Append(" dbo.TblHesapPlan AS TblHesapPlan_1 ON SUBSTRING(dbo.TblMizan.HesapKodu, 1, 3) = TblHesapPlan_1.HesKodu INNER JOIN");
sb.Append(" dbo.TblFisMuhasebe ON dbo.TblMizan.FisNo = dbo.TblFisMuhasebe.FisNo AND dbo.TblMizan.FisTur = dbo.TblFisMuhasebe.FisTur INNER JOIN");
sb.Append(" dbo.TblFisDetay ON dbo.TblMizan.FisNo = dbo.TblFisDetay.FisNo AND dbo.TblMizan.FisSira = dbo.TblFisDetay.FisSira AND dbo.TblMizan.FisTur = dbo.TblFisDetay.FisTur");
sb.Append(" WHERE (LEN(dbo.TblMizan.HesapKodu) >= 9) AND (dbo.TblFisSira.FisTurSira IS NOT NULL)");
sb.Append(" ORDER BY dbo.TblMizan.Tarih, dbo.TblMizan.FisNo, dbo.TblFisSira.FisTurSira, dbo.TblMizan.FisSira");

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 = "GrnMYevmiye";

byte[] a = ConvertDataSetToByteArray(Ds);

List<ParametreModel> b = new List<ParametreModel>();
b.Add(new ParametreModel { Deger = "1234", ParametreAdi = "BorsaAdi" });

var client = new HttpClient
{
    BaseAddress = new Uri("https://report.alpatateknoloji.com/")
};

client.Timeout = TimeSpan.FromHours(90);
using (var content = new ByteArrayContent(a))
{
    content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.Add("RaporKodu", "Rapor");
    client.DefaultRequestHeaders.Add("Klasor", "123");
    client.DefaultRequestHeaders.Add("RaporAdi", "RptMuhYevmiyeDefteri");
    client.DefaultRequestHeaders.Add("RaporBaslik", "Rapor");
    client.DefaultRequestHeaders.Add("ParametreModel", Newtonsoft.Json.JsonConvert.SerializeObject(b));

    var result = await client.PostAsync("PostCreateReportExcel", content);

    var contentStream = await result.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("RptMuhYevmiyeDefteri.xls");

    HttpContext.Response.Headers.ContentDisposition = "inline;filename=RptMuhYevmiyeDefteri.xls";

    return File(file, "application/vnd.ms-excel", "RptMuhYevmiyeDefteri.xls");
}

private byte[] ConvertDataSetToByteArray(DataSet dataSet)
{
    byte[] binaryDataResult = null;
    using (MemoryStream memStream = new MemoryStream())
    {
        BinaryFormatter brFormatter = new BinaryFormatter();
        dataSet.RemotingFormat = SerializationFormat.Binary;
        brFormatter.Serialize(memStream, dataSet);
        binaryDataResult = memStream.ToArray();
    }
    return binaryDataResult;
}     
  • ParametreModel class:
    /// <summary>
    /// ParametreModel
    /// </summary>
    public class ParametreModel
    {
        /// <summary>
        /// ParametreAdi
        /// </summary>
        public string ParametreAdi { get; set; }
        /// <summary>
        /// Deger
        /// </summary>
        public string Deger { get; set; }
    }
    

Proje Property aşağıdaki satır eklenir.

<PropertyGroup>
  <EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
</PropertyGroup>

Mongo Db Aktif Connection Getirmek İçin:

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