listini_dao.dart 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import 'package:drift/drift.dart';
  2. import '../database.dart';
  3. class ListiniDao {
  4. final AppDatabase db;
  5. ListiniDao(this.db);
  6. Future<List<Listino>> list() {
  7. return (db.select(db.listini)
  8. ..where(
  9. (t) =>
  10. t.codListino.like('OF2').not() &
  11. t.codListino.like('OF4').not() &
  12. t.codListino.like('I0').not() &
  13. t.codListino.like('A0').not(),
  14. )
  15. ..orderBy([(t) => OrderingTerm(expression: t.codListino)]))
  16. .get();
  17. }
  18. Future<List<Listino>> listSenzaFiltro() {
  19. return (db.select(
  20. db.listini,
  21. )..orderBy([(t) => OrderingTerm(expression: t.descrizione)])).get();
  22. }
  23. Future<Listino?> findByCod(String code) {
  24. return (db.select(
  25. db.listini,
  26. )..where((t) => t.codListino.equals(code))).getSingleOrNull();
  27. }
  28. Future<ListinoArticolo?> findListinoArticolo(int idListino, int idArticolo) {
  29. return (db.select(db.listiniArticolo)..where(
  30. (t) =>
  31. t.idListino.equals(idListino) & t.idArticolo.equals(idArticolo),
  32. ))
  33. .getSingleOrNull();
  34. }
  35. Future<ListinoCliente?> getListinoCliente(
  36. int idCliente,
  37. int idArticolo,
  38. String date,
  39. ) {
  40. return (db.select(db.listiniCliente)
  41. ..where(
  42. (t) =>
  43. t.idCliente.equals(idCliente) &
  44. t.idArticolo.equals(idArticolo) &
  45. (t.attivo.equals(1)) &
  46. (t.annullato.equals('N')),
  47. )
  48. ..orderBy([
  49. (t) =>
  50. OrderingTerm(expression: t.validoDa, mode: OrderingMode.desc),
  51. ])
  52. ..limit(1))
  53. .getSingleOrNull();
  54. }
  55. Future<List<Listino>> getListiniPerArticolo(
  56. int idArticolo,
  57. String dataOrdine,
  58. ) {
  59. return (db.select(db.listini).join([
  60. innerJoin(
  61. db.listiniArticolo,
  62. db.listiniArticolo.idListino.equalsExp(db.listini.idListino) &
  63. db.listiniArticolo.idArticolo.equals(idArticolo),
  64. ),
  65. ])
  66. ..where(
  67. db.listiniArticolo.attivo.equals(1) &
  68. db.listiniArticolo.validoDa.isSmallerOrEqualValue(dataOrdine) &
  69. db.listiniArticolo.validoA.isBiggerOrEqualValue(dataOrdine) &
  70. db.listini.codListino.isNotNull() &
  71. db.listini.codListino.like('OF2').not() &
  72. db.listini.codListino.like('OF4').not() &
  73. db.listini.codListino.like('I0').not(),
  74. ))
  75. .map((row) => row.readTable(db.listini))
  76. .get();
  77. }
  78. }