import 'package:drift/drift.dart'; import '../database.dart'; class ListiniDao { final AppDatabase db; ListiniDao(this.db); Future> list() { return (db.select(db.listini) ..where( (t) => t.codListino.like('OF2').not() & t.codListino.like('OF4').not() & t.codListino.like('I0').not() & t.codListino.like('A0').not(), ) ..orderBy([(t) => OrderingTerm(expression: t.codListino)])) .get(); } Future> listSenzaFiltro() { return (db.select( db.listini, )..orderBy([(t) => OrderingTerm(expression: t.descrizione)])).get(); } Future findByCod(String code) { return (db.select( db.listini, )..where((t) => t.codListino.equals(code))).getSingleOrNull(); } Future findListinoArticolo(int idListino, int idArticolo) { return (db.select(db.listiniArticolo)..where( (t) => t.idListino.equals(idListino) & t.idArticolo.equals(idArticolo), )) .getSingleOrNull(); } Future getListinoCliente( int idCliente, int idArticolo, String date, ) { return (db.select(db.listiniCliente) ..where( (t) => t.idCliente.equals(idCliente) & t.idArticolo.equals(idArticolo) & (t.attivo.equals(1)) & (t.annullato.equals('N')), ) ..orderBy([ (t) => OrderingTerm(expression: t.validoDa, mode: OrderingMode.desc), ]) ..limit(1)) .getSingleOrNull(); } Future> getListiniPerArticolo( int idArticolo, String dataOrdine, ) { return (db.select(db.listini) ..join([ innerJoin( db.listiniArticolo, db.listiniArticolo.idListino.equalsExp(db.listini.idListino) & db.listiniArticolo.idArticolo.equals(idArticolo), ), ]) ..where( (t) => db.listiniArticolo.attivo.equals(1) & db.listiniArticolo.validoDa.isSmallerOrEqualValue(dataOrdine) & db.listiniArticolo.validoA.isBiggerOrEqualValue(dataOrdine) & t.codListino.isNotNull() & t.codListino.like('OF2').not() & t.codListino.like('OF4').not() & t.codListino.like('I0').not(), )) .get(); } }