--- /dev/null
+<?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', '!=', '');
+ }
+ }
+
+}
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
{
$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 {
$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'];
$user->enabled = true;
$user->e1_grade = 0;
$user->save();
+
$user->assignRole('fluidbook:client');
}
$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'];
'ville' => '',
'pays' => 'INT',
'site' => '',
+ 'contact_type'=>'',
'telephone' => '',
'produits' => '',
'nombre_pages' => '',
$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;
}
}
}
-
if (null !== $email) {
if (!isset($users[$email])) {
$users[$email] = ['totalAttempts' => 0, 'attemptsBeforePassing' => 0, 'passed' => false, 'worstScore' => 100, 'bestScore' => 0];
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;
public static function addOwnerClause(Builder $builder)
{
+ if (backpack_user()->hasPermissionTo('fluidbook-quote:admin')) {
+ return;
+ }
$builder->where('reseller', backpack_user()->id);
}
'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)');
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',
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']);
}