ldc-legaulois/app/Http/Controllers/ForumController.php
2021-03-05 15:43:56 +01:00

108 lines
3.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Customers;
use App\Models\Forum;
use App\Models\ForumAnswers;
use App\Models\ForumThemes;
use App\Models\ShareAddress;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class ForumController extends Controller
{
public function index() {
Forum::orderBy('created_at', 'DESC')->limit(10)->get();
// TODO : Return la view
}
public function show($id) {
$forum = Forum::find($id);
// TODO : Return la view
}
public function create(Request $request) {
$request->validate([
'title' => 'required|string|max:255',
'content' => 'required'
]);
$customerId = Auth::guard('customer')->user()->id;
$themeId = filter_var($request->theme_id, FILTER_SANITIZE_NUMBER_INT);
if (!ForumThemes::find($themeId))
return back()->withErrors("Les données envoyées sont incorrects, merci de réessayer.");
$title = filter_var($request->title, FILTER_SANITIZE_STRING);
$content = filter_var($request->content, FILTER_SANITIZE_STRING);
$forum = new Forum();
$forum->customer_id = $customerId;
$forum->theme_id = $themeId;
$forum->title = $title;
$forum->content = $content;
$forum->save();
return back()->with('success', 'Votre post a bien été créer, il est désormais visible.');
}
public function answer(Request $request) {
$request->validate([
'content' => 'required',
]);
$customerId = Auth::guard('customer')->user()->id;
$forumId = filter_var($request->forum_id, FILTER_SANITIZE_NUMBER_INT);
if (!Forum::find($forumId))
return back()->withErrors("Les données envoyées sont incorrects, merci de réessayer.");
$content = filter_var($request->content, FILTER_SANITIZE_STRING);
$answer = new ForumAnswers();
$answer->customer_id = $customerId;
$answer->forum_id = $forumId;
$answer->content = $content;
$answer->save();
return back()->with('success', 'Votre réponse a bien été envoyée, elle est désormais visible.');
}
// Supprimer un forum et toutes ses réponses
public function delete($forumId) {
// Sécurité admin
if (!Auth::check())
return back();
$forum = Forum::findOrFail($forumId);
$forum->answers()->delete();
$forum->delete();
return back()->with('success', 'Le forum a bien été supprimer');
}
public function shareAddress($customerId) {
$sender = Customers::findOrFail(Auth::guard('customer')->user()->id);
$receiver = Customers::findOrFail($customerId);
/** @var \App\Lib\LDCCRM\ApiV1 */
$crm = app('crmApi');
$crmCustomer = $crm->getCustomer($sender->crm_id);
if ($crmCustomer->status === "OK") {
if ($crmCustomer->address === null || $crmCustomer->postcode === null || $crmCustomer->city === null) {
// TODO : Renvoyer vers le profil pour compléter les infos manquantes avec un message (complété vos infos)
}
} else {
switch ($crmCustomer->code) {
case 101:
return back()->withErrors("Une erreur est survenue, veuillez réessayer.");
default:
return back()->withErrors("Une erreur est survenue, veuillez réessayer.");
}
}
$shareAddress = new ShareAddress();
$shareAddress->sender_id = $sender->id;
$shareAddress->receiver_id = $receiver->id;
$shareAddress->save();
return back()->with('success', "Votre adresse a bien été partagé.");
}
}