From: Vincent Vanwaelscappel Date: Thu, 26 Nov 2020 18:08:30 +0000 (+0100) Subject: wip #3753 @1 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=7fdaccc04b6feecd1d999750d0f8d1695aa2c440;p=fluidbook-toolbox.git wip #3753 @1 --- diff --git a/app/Http/Controllers/Admin/FluidbookQuoteCrudController.php b/app/Http/Controllers/Admin/FluidbookQuoteCrudController.php index 5816c71dd..90f63b8ac 100644 --- a/app/Http/Controllers/Admin/FluidbookQuoteCrudController.php +++ b/app/Http/Controllers/Admin/FluidbookQuoteCrudController.php @@ -6,7 +6,6 @@ class FluidbookQuoteCrudController extends \Cubist\Backpack\app\Magic\Controller { use \App\Http\Controllers\Admin\Operations\FluidbookQuote\AssignOperation; use \App\Http\Controllers\Admin\Operations\FluidbookQuote\CreateFromWebsite; - use \Backpack\CRUD\app\Http\Controllers\Operations\CreateOperation; use \Backpack\CRUD\app\Http\Controllers\Operations\UpdateOperation; use \Cubist\Backpack\app\Http\Controllers\Operations\BulkPublishOperation; use \Backpack\ReviseOperation\ReviseOperation; diff --git a/app/Http/Controllers/Admin/Operations/FluidbookQuote/AssignOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookQuote/AssignOperation.php index dc747147b..517a6cec4 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookQuote/AssignOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookQuote/AssignOperation.php @@ -2,13 +2,18 @@ namespace App\Http\Controllers\Admin\Operations\FluidbookQuote; +use App\Mail\FluidbookQuoteAssign; +use App\Mail\FluidbookQuoteReceived; +use App\Models\FluidbookQuote; +use App\Models\User; +use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Route; trait AssignOperation { protected function setupAssignRoutes($segment, $routeName, $controller) { - Route::match(['get'], $segment . '/{id}/assign', $controller . '@assign'); + Route::match(['post'], $segment . '/{id}/assign', $controller . '@assign'); } protected function setupAssignDefaults() @@ -18,6 +23,16 @@ trait AssignOperation protected function assign($id) { + $quote = FluidbookQuote::where('id', $id)->first(); + $quote->reseller = request()->get('reseller'); + $quote->status = 1; + $quote->admin = backpack_user()->id; + $quote->save(); + if ($quote->reseller != $quote->admin) { + $quoteMail = new FluidbookQuoteAssign(); + $quoteMail->setQuote($quote); + Mail::send($quoteMail); + } } } diff --git a/app/Http/Controllers/Admin/Operations/FluidbookQuote/ConfirmAssignmentOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookQuote/ConfirmAssignmentOperation.php new file mode 100644 index 000000000..4af77b68e --- /dev/null +++ b/app/Http/Controllers/Admin/Operations/FluidbookQuote/ConfirmAssignmentOperation.php @@ -0,0 +1,38 @@ +crud->addButtonFromView('line', 'confirm_assignment', 'fluidbook_quote.confirm_assignment', 'end'); + } + + protected function confirmAssignment($id, $resseler) + { + $quote = FluidbookQuote::where('id', $id)->first(); + if ($quote->status == 1 && $quote->reseller === $resseler && $resseler === backpack_user()->id) { + $quote->status = 2; + $quote->save(); + Alert::add('success', 'La prise en charge de la demande de devis a été prise en compte')->flash(); + } else { + Alert::add('error', 'Une erreur s\'est produite.')->flash(); + } + return Redirect::to('/'); + } +} diff --git a/app/Mail/FluidbookQuoteAssign.php b/app/Mail/FluidbookQuoteAssign.php new file mode 100644 index 000000000..7402a1608 --- /dev/null +++ b/app/Mail/FluidbookQuoteAssign.php @@ -0,0 +1,66 @@ +from('tech@fluidbook.com'); + $reseller = User::where('id', $quote->reseller)->first(); + $user = User::where('id', $quote->user)->first(); + //$this->to($reseller->email); + $this->to('vincent+' . $quote->reseller . '@fluidbook.com'); + $this->bcc('tech@fluidbook.com'); + $this->subject('[Fluidbook Workshop] Demande de devis'); + + $confirmURL = 'http://toolbox.fluidbook.com/fluidbook-quote/' . $quote->id . '/confirm-assignment/' . $quote->reseller; + + $this->html('

---- Demande ----

+

' . nl2br($quote->message) . '

+

---- Coordonnées ----

+ +

+Afin de nous confirmer que vous prenez en compte cette demande, veuillez cliquer sur le lien ci-dessous : +' . $confirmURL . ' + +

+

Si dans un délai de deux jours ouvrés, vous n\'avez pas accepté cette demande, nous nous réservons le droit de la prendre en charge.

'); + } +} diff --git a/app/Models/FluidbookQuote.php b/app/Models/FluidbookQuote.php index b0bbeae86..65bac0462 100644 --- a/app/Models/FluidbookQuote.php +++ b/app/Models/FluidbookQuote.php @@ -3,9 +3,8 @@ namespace App\Models; - -use App\Http\Controllers\Admin\Base\FluidbookQuoteController; use App\Http\Controllers\Admin\Operations\FluidbookQuote\AssignOperation; +use App\Http\Controllers\Admin\Operations\FluidbookQuote\ConfirmAssignmentOperation; use App\Http\Controllers\Admin\Operations\FluidbookQuote\CreateFromWebsite; use Cubedesigners\UserDatabase\User; use Cubist\Backpack\app\Magic\Models\CubistMagicAbstractModel; @@ -17,9 +16,10 @@ class FluidbookQuote extends CubistMagicAbstractModel 'singular' => 'demande de devis', 'plural' => 'demandes de devis']; - protected $_operations = [AssignOperation::class, CreateFromWebsite::class]; + protected $_operations = [AssignOperation::class, CreateFromWebsite::class, ConfirmAssignmentOperation::class]; protected $_enableClone = false; protected $_enableDeletion = false; + protected $_enableCreation = false; public function setFields() { @@ -30,7 +30,7 @@ class FluidbookQuote extends CubistMagicAbstractModel $this->addField('links', 'Hidden'); $this->addField('langs', 'Hidden'); - $this->addField('user', 'SelectFromModel', 'Utilisateur', ['optionsmodel' => User::class, 'attribute' => 'nameWithCompany', 'column' => true]); + $this->addField('user', 'SelectFromModel', 'Utilisateur', ['optionsmodel' => User::class, 'attribute' => 'nameWithCompany', 'column' => true,]); $this->addField(['name' => 'created_at', 'label' => 'Date', @@ -39,22 +39,18 @@ class FluidbookQuote extends CubistMagicAbstractModel 'column_type' => 'date', 'column_format' => null]); - $this->addField(['name' => 'updated_at', - 'label' => 'Mise à jour', - 'type' => 'Hidden', - 'column' => true, - 'column_type' => 'date', - 'column_format' => null]); - $this->addField('message', 'Textarea', 'Message'); $this->addField('gclid', 'Text', 'Google Adwords ID (gclid)'); $this->addField('coupon', 'Text', 'Coupon'); - $this->addField('admin', 'SelectFromModel', 'Administrateur', ['optionsmodel' => User::class, 'attribute' => 'firstname', 'column' => true]); + $this->addField('admin', 'SelectFromModel', 'Administrateur', + ['optionsmodel' => User::class, 'allows_null' => true, 'attribute' => 'nameWithCompany', 'column_attribute' => 'firstname', 'column' => true] + ); - $this->addField('reseller', 'SelectFromModel', 'Revendeur', ['optionsmodel' => User::class, 'attribute' => 'companyName', 'column' => true]); + $this->addField('reseller', 'SelectFromModel', 'Confiée à', + ['optionsmodel' => User::class, 'allows_null' => true, 'attribute' => 'nameWithCompany', 'column_attribute' => 'companyName', 'column' => true]); $this->addField('status', 'SelectFromArray', 'Status', ['options' => [ 0 => 'Non traitée', @@ -71,7 +67,7 @@ class FluidbookQuote extends CubistMagicAbstractModel ], 'column' => true]); $this->addField('origin_column', 'ModelAttribute', 'Origine', ['column' => true, 'attribute' => 'origin']); - $this->addField('fluidbooks', 'ModelAttribute', 'Fluidbooks', ['column' => true, 'attribute' => 'user.e1_ws_count']); + $this->addField('fluidbooks', 'ModelAttribute', 'Fluidbooks', ['column' => true, 'column_label' => '', 'attribute' => 'user.e1_ws_count']); } public function getOriginAttribute() diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_quote/assign.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_quote/assign.blade.php index 9777e7668..45e21cc97 100644 --- a/resources/views/vendor/backpack/crud/buttons/fluidbook_quote/assign.blade.php +++ b/resources/views/vendor/backpack/crud/buttons/fluidbook_quote/assign.blade.php @@ -1,2 +1,83 @@ - Confier +@once + @php + $showjs=false; + if($crud->getValue('seenAssignJS')===null){ + $showjs =true; + $crud->setValue('seenAssignJS',true); + } + @endphp + @if($showjs) + + + @endif +@endonce + +@if($entry->status==0) + Confier + + + +@endif diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_quote/confirm_assignment.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_quote/confirm_assignment.blade.php new file mode 100644 index 000000000..767797443 --- /dev/null +++ b/resources/views/vendor/backpack/crud/buttons/fluidbook_quote/confirm_assignment.blade.php @@ -0,0 +1,7 @@ +@if($entry->status==1 && $entry->reseller==backpack_user()->id) + Demande traitée + + +@endif