@page "/"
@using Blazor.IndexedDB
@using DBTest.DB
@using Microsoft.Data.SqlClient
@inject IIndexedDbFactory DbFactory
Home
Artikelliste
@if (artikelliste == null)
{
}
else
{
@foreach (var quote in artikelliste)
{
}
}
@code {
private List artikelliste;
protected override async Task OnInitializedAsync()
{
await LoadQuotesAsync();
}
private async Task LoadQuotesAsync()
{
using (var db = await DbFactory.Create())
{
// Load quotes from IndexedDB
artikelliste = db.ArtikelListe.ToList();
// If no quotes exist in IndexedDB, fetch from API
if (artikelliste == null || artikelliste.Count == 0)
{
await FetchAndStoreQuotesFromDBAsync();
}
}
}
private async Task FetchAndStoreQuotesFromDBAsync()
{
using (var db = await DbFactory.Create())
{
using (SqlConnection con = new SqlConnection("Data Source=APP03AC;Initial Catalog=KassenSystem;User Id=KassenManager;Password=ks;Max Pool Size=600;Connection Timeout=3000;encrypt=true;"))
{
con.Open();
// 0 1 2 3 4 5
string sql = "SELECT [ArtikelMA].[ArtikelId], [ArtikelNummer], [ArtikelMA].[Barcode], [Bontext], [Mengeneinheit], isnull([Farbe], '') FROM [Kassensystem].[KS].[ArtikelMA] left join [Kassensystem].[KS].[ArtikelVariantenMA] on [ArtikelMA].[ArtikelId] = [ArtikelVariantenMA].[ArtikelId] where [ArtikelMA].GeloeschtAm is null and istAusgeblendet = 0 and [ArtikelVariantenMA].GeloeschtAm is null order by ArtikelId, Farbe";
using(SqlCommand cmd = new SqlCommand(sql, con))
{
using(SqlDataReader reader = cmd.ExecuteReader())
{
while(reader.Read())
{
Artikel a1 = new Artikel();
a1.Key = reader.GetString(0);
a1.ArtikelNummer = reader.GetString(1);
a1.Variante = reader.GetString(5);
a1.Bezeichnung = reader.GetString(3);
db.ArtikelListe.Add(a1);
}
}
}
}
await db.SaveChanges(); // Save changes
}
}
private async Task ForceRefresh()
{
using (var db = await DbFactory.Create())
{
db.ArtikelListe.Clear(); // Clear existing data from IndexedDB
await db.SaveChanges();
}
await FetchAndStoreQuotesFromDBAsync(); // Fetch fresh data from API
}
}