toArray(); $result = $this->wpdb->insert( $this->table, [ 'formId' => (int) $data['formId'], 'name' => $data['name'], 'sender' => $data['sender'], 'receiver' => $data['receiver'], 'status' => (int) $data['status'], 'subject' => $data['subject'], 'message' => $data['message'], 'smartLogic' => (int) $data['smartLogic'], ], ['%d', '%s', '%s', '%s', '%d', '%s', '%s', '%d'] ); if ($result === false) { throw new QueryExecutionException('Unable to add data in ' . __CLASS__); } return $this->wpdb->insert_id; } /** * Update form in the database * * @param int $id * @param Notification $entity * * @return bool * * @throws QueryExecutionException */ public function update(int $id, $entity): bool { $data = $entity->toArray(); $result = $this->wpdb->update( $this->table, [ 'formId' => (int) $data['formId'], 'name' => $data['name'], 'sender' => $data['sender'], 'receiver' => $data['receiver'], 'status' => (int) $data['status'], 'subject' => $data['subject'], 'message' => $data['message'], 'smartLogic' => (int) $data['smartLogic'], ], ['id' => $id], ['%d', '%s', '%s', '%s', '%d', '%s', '%s', '%d'], ['%d'] ); if ($result === false) { throw new QueryExecutionException('Unable to save data in ' . __CLASS__); } return $result; } /** * Get all notifications by form ID. * * @param int $id * * @return array */ public function getAllById(int $id): array { $rows = $this->wpdb->get_results( $this->wpdb->prepare( $this->selectQuery() . " WHERE $this->table.formId = %d", [$id] ), ARRAY_A ); if (empty($rows)) { return []; } return array_map(function ($row) { return call_user_func([static::FACTORY, 'create'], $row); }, $rows); } /** * Get all active notifications by form ID. * * @param int $id * * @return array */ public function getAllActiveById(int $id): array { $rows = $this->wpdb->get_results( $this->wpdb->prepare( $this->selectQuery() . " WHERE $this->table.formId = %d AND $this->table.status = 1", $id ), ARRAY_A ); if (empty($rows)) { return []; } return array_map(function ($row) { return call_user_func([static::FACTORY, 'create'], $row); }, $rows); } }