]> _ Git - fluidbook-toolbox.git/commitdiff
wip #3753 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 7 Dec 2020 11:15:22 +0000 (12:15 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 7 Dec 2020 11:15:22 +0000 (12:15 +0100)
app/Fields/FluidbookQuoteOrigin.php [new file with mode: 0644]
app/Http/Controllers/Admin/Operations/FluidbookQuote/CreateFromWebsite.php
app/Http/Controllers/Admin/Operations/ReportOperation.php
app/Models/FluidbookQuote.php

diff --git a/app/Fields/FluidbookQuoteOrigin.php b/app/Fields/FluidbookQuoteOrigin.php
new file mode 100644 (file)
index 0000000..14f6ad5
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+
+namespace App\Fields;
+
+use Cubist\Backpack\CubistCrudPanel;
+use Cubist\Backpack\Magic\Fields\ModelAttribute;
+
+class FluidbookQuoteOrigin extends ModelAttribute
+{
+    protected $_attribute = 'origin';
+    protected $_filterValues = ['Organic', 'Paid'];
+    protected $_filterType = 'dropdown';
+
+    /**
+     * @param $crud CubistCrudPanel
+     */
+    public function filterLogic($crud, $value)
+    {
+        if ($value == 0) {
+            $crud->addClause('where', 'gclid', '=', '');
+        } else {
+            $crud->addClause('where', 'gclid', '!=', '');
+        }
+    }
+
+}
index b9a16cc4f2d24673cd31313b186cfd3eada703ce..b589584270dec3c64c326564852ae726f1d29514 100644 (file)
@@ -9,10 +9,11 @@ use App\Http\Middleware\VerifyCsrfToken;
 use App\Mail\FluidbookQuoteReceived;
 use App\Models\Company;
 use App\Models\FluidbookQuote;
-use App\Models\User;
+use App\Models\AuthUser;
 use Cubist\Util\ArrayUtil;
 use Illuminate\Support\Facades\Mail;
 use Illuminate\Support\Facades\Route;
+use Spatie\Permission\Models\Role;
 
 trait CreateFromWebsite
 {
@@ -31,7 +32,7 @@ trait CreateFromWebsite
             $post['spam'] = $spam ? 'Oui' : 'Non';
 
             if (!$spam) {
-                $r = User::where('email', $post['email']);
+                $r = AuthUser::where('email', $post['email']);
                 if ($r->count() == 1) {
                     $user = $r->first();
                 } else {
@@ -48,7 +49,7 @@ trait CreateFromWebsite
                     $company->save();
 
                     // Création de l'utilisateur
-                    $user = new User();
+                    $user = new AuthUser();
                     $user->company = $company->id;
                     $user->firstname = $post['prenom'];
                     $user->lastname = $post['nom'];
@@ -59,6 +60,7 @@ trait CreateFromWebsite
                     $user->enabled = true;
                     $user->e1_grade = 0;
                     $user->save();
+
                     $user->assignRole('fluidbook:client');
                 }
 
@@ -67,6 +69,7 @@ trait CreateFromWebsite
                 $quote->pages = $post['nombre_pages'];
                 $quote->links = $post['nombre_liens'];
                 $quote->langs = $post['nombre_langues'];
+                $quote->contact_type = $post['contact_type'];
                 $quote->message = $post['detail'];
                 $quote->coupon = $post['coupon'];
                 $quote->gclid = $post['gclid'];
@@ -108,6 +111,7 @@ trait CreateFromWebsite
             'ville' => '',
             'pays' => 'INT',
             'site' => '',
+            'contact_type'=>'',
             'telephone' => '',
             'produits' => '',
             'nombre_pages' => '',
index 8fe3e890622ace2dd5b51d71370b1c75155c0b9c..a23fbb84fdaa9c242d9b17afbf3cd1d13d04db83 100644 (file)
@@ -49,7 +49,12 @@ trait ReportOperation
             $email = null;
             $data = $attempt->getPageData();
             $a = [$data->get('id'), $data->get('created_at'), $data->get('score'), $data->get('passed') ? '1' : '0'];
-            foreach ($data->get('answers', []) as $aid => $answer) {
+            $answers = $data->get('answers', []);
+
+            if (null === $answers || !is_array($answers)) {
+                continue;
+            }
+            foreach ($answers as $aid => $answer) {
                 if (null === $answer) {
                     continue;
                 }
@@ -63,7 +68,6 @@ trait ReportOperation
                 }
             }
 
-
             if (null !== $email) {
                 if (!isset($users[$email])) {
                     $users[$email] = ['totalAttempts' => 0, 'attemptsBeforePassing' => 0, 'passed' => false, 'worstScore' => 100, 'bestScore' => 0];
index 3a2020464b847d9801b2cf167b5f93da271b17b8..948e0f464995187acfd7353fd4e1b45f8060d6cc 100644 (file)
@@ -3,6 +3,7 @@
 
 namespace App\Models;
 
+use App\Fields\FluidbookQuoteOrigin;
 use App\Http\Controllers\Admin\Operations\FluidbookQuote\AssignOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookQuote\ConfirmAssignmentOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookQuote\CreateFromWebsite;
@@ -26,6 +27,9 @@ class FluidbookQuote extends CubistMagicAbstractModel
 
     public static function addOwnerClause(Builder $builder)
     {
+        if (backpack_user()->hasPermissionTo('fluidbook-quote:admin')) {
+            return;
+        }
         $builder->where('reseller', backpack_user()->id);
     }
 
@@ -47,6 +51,13 @@ class FluidbookQuote extends CubistMagicAbstractModel
             'column_type' => 'date',
             'column_format' => null]);
 
+        $this->addField('contact_type', 'SelectFromArray', 'Type de client', ['options' => [
+            'agency' => 'Agence de communication',
+            'freelancer' => 'Freelance',
+            'company' => 'Société',
+            'other' => 'Autre',
+        ]]);
+
         $this->addField('message', 'Textarea', 'Message');
 
         $this->addField('gclid', 'Text', 'Google Adwords ID (gclid)');
@@ -64,7 +75,7 @@ class FluidbookQuote extends CubistMagicAbstractModel
             0 => 'Non traitée',
             1 => 'En attente de traitement',
             2 => 'Traitée',
-        ], 'column' => true]);
+        ], 'column' => true, 'filter' => true]);
 
         $this->addField('conversion', 'SelectFromArray', 'Conversion', ['options' => [
             0 => 'Pas de réponse',
@@ -72,9 +83,9 @@ class FluidbookQuote extends CubistMagicAbstractModel
             2 => 'Devis refusé',
             3 => 'Projet validé',
             4 => 'Déjà client',
-        ], 'column' => true, 'can' => 'fluidbook-quote:admin',]);
+        ], 'column' => true, 'can' => 'fluidbook-quote:admin', 'filter' => true]);
 
-        $this->addField('origin_column', 'ModelAttribute', 'Origine', ['column' => true, 'attribute' => 'origin']);
+        $this->addField('origin_column', FluidbookQuoteOrigin::class, 'Origine', ['column' => true,'filter'=>true]);
         $this->addField('fluidbooks', 'ModelAttribute', 'Fluidbooks', ['column' => true, 'column_label' => '<img width="20" src="/images/icons/icon-fluidbook.svg">', 'attribute' => 'user.e1_ws_count']);
     }