--- /dev/null
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\FluidbookPublication;
+
+use App\Models\FluidbookPublication;
+use App\Models\YSLSurvey;
+use Cubist\Excel\Excel;
+use Cubist\Util\Files\Files;
+use Cubist\Util\Text;
+use GuzzleHttp\Client;
+use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Route;
+use PhpOffice\PhpSpreadsheet\Exception;
+
+trait YSLOperation
+{
+ protected function setupYSLRoutes($segment, $routeName, $controller)
+ {
+ Route::get($segment . '/{id}/yslreport', [
+ 'uses' => $controller . '@yslreport',
+ ]);
+
+ Route::post($segment . '/postyslreport', [
+ 'uses' => $controller . '@postyslreport',
+ ]);
+ }
+
+ protected function setupYSLDefaults()
+ {
+
+ if (config('app.env') !== 'ysl') {
+ return;
+ }
+
+ if (!can('fluidbook-publication:write')) {
+ $this->crud->removeButtonFromStack('preview', 'line');
+ $this->crud->removeButtonFromStack('edit', 'line');
+ $this->crud->removeButtonFromStack('download', 'line');
+ $this->crud->removeButtonFromStack('clone', 'line');
+ $this->crud->removeButtonFromStack('upgrade', 'line');
+ $this->crud->removeButtonFromStack('deletefb', 'line');
+ }
+ $this->crud->addButtonFromView('line', 'yslreport', 'fluidbook_publication.yslreport', 'end');
+ }
+
+ /**
+ * @throws Exception
+ */
+ protected function yslreport($id)
+ {
+ if (!FluidbookPublication::hasPermission($id)) {
+ abort(401);
+ }
+
+ $tmp = Files::tempnam() . '.xls';
+
+ $fluidbook = FluidbookPublication::withoutGlobalScopes()->find($id);
+
+ $head = ['Date', 'Page', 'Rating', 'Country', 'Function', 'Suggestions'];
+ // $sql = "SELECT * FROM ysl_survey WHERE fluidbook_id='" . $core->con->escape($bid) . "' ORDER BY date ASC";
+
+ //$r = $core->con->select($sql);
+ $data = [];
+// while ($r->fetch()) {
+// $data[] = [date('Y-m-d H:i:s', $r->date), $r->page, $r->rating, $r->country, $r->function, $r->suggestions];
+// }
+
+ Excel::fromArray('Survey data #' . $id, $data, $head, $tmp, 100);
+
+ return response()->download($tmp, 'report-' . $id . '-' . Text::str2URL($fluidbook->title) . '.xlsx', ['content-type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']);
+ }
+
+ protected function postyslreport()
+ {
+ $i = new YSLSurvey();
+ $i->fluidbook_id = $_POST['Fluidbook_ID'];
+ $i->page = $_POST['page'];
+ $i->rating = $_POST['rating'];
+ $i->suggestions = $_POST['suggestions'];
+ $i->country = $_POST['country'];
+ $i->function = $_POST['function'];
+ $i->title = $_POST['title'];
+ $i->date = time();
+ $i->save();
+
+ try {
+ $client = new Client(['timeout' => 10.0]);
+ $client->request('post', 'https://suivi.ysl-retailhandbook.com/importCSV.php', ['form_params' => [
+ 'Fluidbook_ID' => $_POST['Fluidbook_ID'],
+ 'page' => $_POST['page'],
+ 'rating' => $_POST['rating'],
+ 'feedback' => $_POST['feedback'],
+ 'country' => $_POST['country'],
+ 'function' => $_POST['function'],
+ 'title' => $_POST['title'],
+ ]]);
+ } catch (Exception $e1) {
+ Log::error($e1->getMessage());
+ }
+ }
+}
--- /dev/null
+<?php
+
+namespace App\Models;
+
+use App\Fields\FluidbookID;
+use Cubist\Backpack\Magic\Fields\Country;
+use Cubist\Backpack\Magic\Fields\Integer;
+use Cubist\Backpack\Magic\Fields\Text;
+use Cubist\Backpack\Magic\Fields\Textarea;
+use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
+
+class YSLSurvey extends CubistMagicAbstractModel
+{
+ protected $table = 'ysl_survey';
+ protected $_options = ['name' => 'ysl-survey',
+ 'singular' => 'feeback',
+ 'plural' => 'feedbacks'];
+
+
+ protected static $_permissionBase = 'ysl-survey';
+
+ public function setFields()
+ {
+ parent::setFields();
+
+ $this->addField('fluidbook_id', FluidbookID::class, __('Fluidbook'));
+ $this->addField('page', Text::class, __('Page'));
+ $this->addField('rating', Integer::class, __('Note'));
+ $this->addField('suggestions', Textarea::class, __('Message'));
+ $this->addField('title', Text::class, __('Titre'));
+ $this->addField('function', Text::class, __('Fonction'));
+ $this->addField('country', Country::class, __('Pays'));
+ $this->addField('date', Integer::class, __('Date'));
+ }
+}