setTableName(self::TABLE_NAME); $this->registerFilterParams([ 'typ' => 'd.typ %LIKE%', 'typ_equals' => 'd.typ LIKE', 'typ_exakt' => 'd.typ LIKE', 'betreff' => 'd.betreff %LIKE%', 'betreff_equals' => 'd.betreff LIKE', 'betreff_exakt' => 'd.betreff LIKE', 'projekt' => 'd.projekt =', 'adresse_from' => 'd.adresse_from =', 'adresse_to' => 'd.adresse_to =', 'deleted' => 'd.deleted =', ]); $this->registerValidationRules([ 'id' => 'not_present', 'typ' => 'required|in:email,brief,telefon,notiz', 'betreff' => 'required', 'projekt' => 'numeric', 'adresse_from' => 'numeric', 'adresse_to' => 'numeric', 'signatur' => 'numeric', 'fax' => 'boolean', 'printer' => 'boolean', 'sent' => 'boolean', 'deleted' => 'boolean', ]); $this->registerIncludes([ 'projekt' => [ 'key' => 'projekt', 'resource' => ProjectResource::class, 'columns' => [ 'p.id', 'p.name', 'p.abkuerzung', 'p.beschreibung', 'p.farbe', ], ], 'adresse_to' => [ 'key' => 'adresse_to', 'resource' => AddressResource::class, 'columns' => [ 'a.id', 'a.name', 'a.email', 'a.strasse', 'a.plz', 'a.ort', 'a.land', 'a.ansprechpartner', ], ], 'adresse_from' => [ 'key' => 'adresse_from', 'resource' => AddressResource::class, 'columns' => [ 'a.id', 'a.name', 'a.email', 'a.strasse', 'a.plz', 'a.ort', 'a.land', 'a.ansprechpartner', ], ], ]); } /** * @return SelectQuery */ protected function selectAllQuery() { return $this->db->select() ->cols([ 'd.id', 'd.adresse_from', 'd.adresse_to', 'd.typ', 'd.von', 'd.an', 'd.email_an', 'd.send_as', 'd.email', 'd.email_cc', 'd.email_bcc', 'd.bearbeiter', 'd.email_an', 'd.firma_an', 'd.adresse', 'd.ansprechpartner', 'd.plz', 'd.ort', 'd.land', 'd.datum', 'd.uhrzeit', 'd.betreff', 'd.content', 'd.projekt', 'd.internebezeichnung', 'd.signatur', 'd.fax', 'd.sent', 'd.printer', 'd.deleted', ])->from(self::TABLE_NAME . ' AS d'); } /** * @return SelectQuery */ protected function selectOneQuery() { return $this->selectAllQuery()->where('d.id = :id'); } /** * @return SelectQuery */ protected function selectIdsQuery() { return $this->selectAllQuery()->where('d.id IN (:ids)'); } /** * @return InsertQuery */ protected function insertQuery() { return $this->db->insert()->into(self::TABLE_NAME); } /** * @return UpdateQuery */ protected function updateQuery() { return $this->db->update()->table(self::TABLE_NAME)->where('id = :id'); } /** * @return DeleteQuery */ protected function deleteQuery() { return $this->db->delete()->from(self::TABLE_NAME)->where('id = :id'); } }