setTableName(self::TABLE_NAME); $this->registerFilterParams([ 'tracking' => 'v.tracking %LIKE%', 'tracking_equals' => 'v.tracking LIKE', 'tracking_startswith' => 'v.tracking LIKE%', 'tracking_endswith' => 'v.tracking %LIKE', 'lieferschein' => 'l.belegnr %LIKE%', 'lieferschein_equals' => 'l.belegnr LIKE', 'lieferschein_startswith' => 'l.belegnr LIKE%', 'lieferschein_endswith' => 'l.belegnr %LIKE', 'auftrag' => 'au.belegnr %LIKE%', 'auftrag_equals' => 'au.belegnr LIKE', 'auftrag_startswith' => 'au.belegnr LIKE%', 'auftrag_endswith' => 'au.belegnr %LIKE', 'internet' => 'au.internet %LIKE%', 'internet_equals' => 'au.internet LIKE', 'internet_startswith' => 'au.internet LIKE%', 'internet_endswith' => 'au.internet %LIKE', 'versandart' => 'l.versandart LIKE', 'versendet_am' => 'v.versendet_am LIKE', 'versendet_am_gt' => 'v.versendet_am >', 'versendet_am_gte' => 'v.versendet_am >=', 'versendet_am_lt' => 'v.versendet_am <', 'versendet_am_lte' => 'v.versendet_am <=', 'abgeschlossen' => 'v.abgeschlossen =', 'adresse' => 'v.adresse =', 'projekt' => 'v.projekt =', 'land' => 'l.land =', ]); $this->registerSortingParams([ 'tracking' => 'v.tracking', 'auftrag' => 'au.belegnr', 'lieferschein' => 'l.belegnr', 'versandart' => 'l.versandart', 'versendet_am' => 'v.versendet_am', 'abgeschlossen' => 'v.abgeschlossen', ]); /** Minimale Validation-Rules; die eigentliche Prüfung findet im Controller statt */ /** @see TrackingNumberController */ $this->registerValidationRules([ 'tracking' => 'required', ]); $this->registerIncludes([ 'projekt' => [ 'key' => 'projekt', 'resource' => ProjectResource::class, 'columns' => [ 'p.id', 'p.name', 'p.abkuerzung', 'p.beschreibung', 'p.farbe', ], ], ]); } /** * @throws Exception * * @return SelectQuery */ protected function selectAllQuery() { return $this->db->select() ->cols([ 'v.id', 'v.tracking', 'v.adresse', //'v.auftrag', 'au.internet', 'au.belegnr AS auftrag', //'v.lieferschein', 'l.belegnr AS lieferschein', //'v.rechnung', //'r.belegnr AS rechnung', 'v.projekt', //'v.versandart', 'l.versandart', 'l.land', 'v.gewicht', //'v.freigegeben', //'v.bearbeiter', //'v.versender', 'v.abgeschlossen', 'v.versendet_am', //'v.versandunternehmen', //'v.download', //'v.firma', //'v.logdatei', //'v.keinetrackingmail', //'v.versendet_am_zeitstempel', //'v.weitererlieferschein', 'v.anzahlpakete', //'v.gelesen', //'v.paketmarkegedruckt', //'v.papieregedruckt', //'v.versandzweigeteilt', //'v.improzess', //'v.improzessuser', //'v.cronjob', //'v.adressvalidation', 'v.retoure', //'v.bundesstaat', 'v.klaergrund', ]) ->from(self::TABLE_NAME . ' AS v') ->leftJoin('lieferschein AS l', 'v.lieferschein = l.id') ->leftJoin('auftrag AS au', 'l.auftragid = au.id'); } /** * @throws Exception * * @return SelectQuery */ protected function selectOneQuery() { return $this->selectAllQuery()->where('v.id = :id'); } /** * @return false */ protected function selectIdsQuery() { return false; } /** * Insert-Action hat speziellen Controller * * @see TrackingNumberController::createAction() * * @return InsertQuery */ protected function insertQuery() { return $this->db->insert()->into(self::TABLE_NAME); } /** * Update-Action hat speziellen Controller * * @see TrackingNumberController::updateAction() * * @return UpdateQuery */ protected function updateQuery() { return $this->db->update()->table(self::TABLE_NAME)->where('id = :id'); } /** * @return false */ protected function deleteQuery() { return false; } }