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"];