import 'package:drift/drift.dart'; import '../database.dart'; import '../tables/promozioni.dart'; import '../tables/promo_articoli.dart'; import '../tables/promo_listini.dart'; import '../tables/promo_omaggi.dart'; class PromozioniDao { final AppDatabase db; PromozioniDao(this.db); Future> getActivePromos(String today) { return (db.select(db.promozioni) ..where((t) => (t.dataInizio.isNull() | t.dataInizio.equals('').not()) & (t.stato.isNull() | t.stato.equals('A')) ) ..orderBy([(t) => OrderingTerm(expression: t.priorita)]) ).get(); } Future> getPromosForItem(int idArticolo, String today) async { final allPromos = await getActivePromos(today); final result = []; for (final p in allPromos) { final articles = await getPromoArticoli(p.progressivo); final has = articles.any((a) => a.idArticolo == idArticolo); if (has) result.add(p); } return result; } Future> getPromoArticoli(int progressivo) { return (db.select(db.promoArticoli)..where((t) => t.progressivo.equals(progressivo))).get(); } Future> getPromoListini(int progressivo) { return (db.select(db.promoListini)..where((t) => t.progressivo.equals(progressivo))).get(); } Future> getPromoOmaggi(int progressivo) { return (db.select(db.promoOmaggi)..where((t) => t.progressivo.equals(progressivo))).get(); } Future zapAll() { return db.transaction(() async { await db.delete(db.promoOmaggi).go(); await db.delete(db.promoListini).go(); await db.delete(db.promoArticoli).go(); await db.delete(db.promozioni).go(); }); } Future insertPromozione(Promozione promo) { return db.into(db.promozioni).insert(promo); } Future insertPromoArticolo(PromoArticolo art) { return db.into(db.promoArticoli).insert(art); } Future insertPromoListino(PromoListino list) { return db.into(db.promoListini).insert(list); } Future insertPromoOmaggio(PromoOmaggio om) { return db.into(db.promoOmaggi).insert(om); } }