promozioni_dao.dart 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import 'package:drift/drift.dart';
  2. import '../database.dart';
  3. import '../tables/promozioni.dart';
  4. import '../tables/promo_articoli.dart';
  5. import '../tables/promo_listini.dart';
  6. import '../tables/promo_omaggi.dart';
  7. class PromozioniDao {
  8. final AppDatabase db;
  9. PromozioniDao(this.db);
  10. Future<List<Promozione>> getActivePromos(String today) {
  11. return (db.select(db.promozioni)
  12. ..where((t) =>
  13. (t.dataInizio.isNull() | t.dataInizio.equals('').not()) &
  14. (t.stato.isNull() | t.stato.equals('A'))
  15. )
  16. ..orderBy([(t) => OrderingTerm(expression: t.priorita)])
  17. ).get();
  18. }
  19. Future<List<Promozione>> getPromosForItem(int idArticolo, String today) async {
  20. final allPromos = await getActivePromos(today);
  21. final result = <Promozione>[];
  22. for (final p in allPromos) {
  23. final articles = await getPromoArticoli(p.progressivo);
  24. final has = articles.any((a) => a.idArticolo == idArticolo);
  25. if (has) result.add(p);
  26. }
  27. return result;
  28. }
  29. Future<List<PromoArticolo>> getPromoArticoli(int progressivo) {
  30. return (db.select(db.promoArticoli)..where((t) => t.progressivo.equals(progressivo))).get();
  31. }
  32. Future<List<PromoListino>> getPromoListini(int progressivo) {
  33. return (db.select(db.promoListini)..where((t) => t.progressivo.equals(progressivo))).get();
  34. }
  35. Future<List<PromoOmaggio>> getPromoOmaggi(int progressivo) {
  36. return (db.select(db.promoOmaggi)..where((t) => t.progressivo.equals(progressivo))).get();
  37. }
  38. Future<void> zapAll() {
  39. return db.transaction(() async {
  40. await db.delete(db.promoOmaggi).go();
  41. await db.delete(db.promoListini).go();
  42. await db.delete(db.promoArticoli).go();
  43. await db.delete(db.promozioni).go();
  44. });
  45. }
  46. Future<int> insertPromozione(Promozione promo) {
  47. return db.into(db.promozioni).insert(promo);
  48. }
  49. Future<int> insertPromoArticolo(PromoArticolo art) {
  50. return db.into(db.promoArticoli).insert(art);
  51. }
  52. Future<int> insertPromoListino(PromoListino list) {
  53. return db.into(db.promoListini).insert(list);
  54. }
  55. Future<int> insertPromoOmaggio(PromoOmaggio om) {
  56. return db.into(db.promoOmaggi).insert(om);
  57. }
  58. }