File: /home/xedaptot/be.naniguide.com/app/Http/Controllers/Refactor/Admin/BounceHandlerController.php
<?php
namespace App\Http\Controllers\Refactor\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Model\BounceHandler;
class BounceHandlerController extends Controller
{
public function index(Request $request)
{
if (\Gate::denies('read', new BounceHandler())) {
return $this->notAuthorized();
}
$stats = [
'total' => BounceHandler::count(),
'active' => BounceHandler::where('status', 'active')->count(),
];
return view('refactor.pages.admin.bounce-handlers.index', compact('stats'));
}
public function listing(Request $request)
{
if (\Gate::denies('read', new BounceHandler())) {
return $this->notAuthorized();
}
if (!$request->user()->admin->can('readAll', new BounceHandler())) {
$request->merge(['admin_id' => $request->user()->admin->id]);
}
$query = BounceHandler::search($request);
if ($request->status && $request->status !== 'all') {
$query = $query->where('status', $request->status);
}
$items = $query->paginate($request->per_page ?? 25);
return view('refactor.pages.admin.bounce-handlers._list', compact('items'));
}
public function create(Request $request)
{
if (\Gate::denies('create', new BounceHandler())) {
return $this->notAuthorized();
}
$handler = new BounceHandler();
$handler->status = 'active';
$handler->port = '993';
$handler->protocol = 'imap';
$handler->encryption = 'ssl';
return view('refactor.pages.admin.bounce-handlers.create', compact('handler'));
}
public function store(Request $request)
{
if (\Gate::denies('create', new BounceHandler())) {
return response()->json(['status' => 'error', 'message' => 'Not authorized'], 403);
}
$handler = new BounceHandler();
$rules = $handler->rules();
$validator = \Validator::make($request->all(), $rules);
if ($validator->fails()) {
return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422);
}
$handler->admin_id = $request->user()->admin->id;
$handler->fill($request->all());
$handler->status = 'active';
$handler->save();
return response()->json([
'status' => 'success',
'message' => trans('refactor/admin_bounce_handlers.flash.created'),
]);
}
public function edit(Request $request, $uid)
{
$handler = BounceHandler::findByUid($uid);
if (!$handler) {
return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
}
if (\Gate::denies('update', $handler)) {
return $this->notAuthorized();
}
return view('refactor.pages.admin.bounce-handlers.edit', compact('handler'));
}
public function update(Request $request, $uid)
{
$handler = BounceHandler::findByUid($uid);
if (!$handler) {
return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
}
if (\Gate::denies('update', $handler)) {
return response()->json(['status' => 'error', 'message' => 'Not authorized'], 403);
}
$rules = $handler->rules();
$validator = \Validator::make($request->all(), $rules);
if ($validator->fails()) {
return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422);
}
$handler->fill($request->all());
$handler->save();
return response()->json([
'status' => 'success',
'message' => trans('refactor/admin_bounce_handlers.flash.updated'),
]);
}
public function delete(Request $request)
{
$items = BounceHandler::whereIn('uid', is_array($request->uids) ? $request->uids : explode(',', $request->uids));
foreach ($items->get() as $item) {
if ($request->user()->admin->can('delete', $item)) {
$item->delete();
}
}
return response()->json(['status' => 'success', 'message' => trans('refactor/admin_bounce_handlers.flash.deleted')]);
}
public function test(Request $request, $uid)
{
$handler = BounceHandler::findByUid($uid);
if (!$handler) {
return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
}
if (\Gate::denies('test', $handler)) {
return response()->json(['status' => 'error', 'message' => 'Not authorized'], 403);
}
try {
$handler->test();
return response()->json(['status' => 'success', 'message' => trans('refactor/admin_bounce_handlers.flash.test_success')]);
} catch (\Exception $e) {
return response()->json(['status' => 'error', 'message' => $e->getMessage()], 400);
}
}
public function run(Request $request, $uid)
{
$handler = BounceHandler::findByUid($uid);
if (!$handler) {
return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
}
if (\Gate::denies('update', $handler)) {
return response()->json(['status' => 'error', 'message' => 'Not authorized'], 403);
}
try {
$handler->start();
return response()->json(['status' => 'success', 'message' => trans('refactor/admin_bounce_handlers.flash.run_success')]);
} catch (\Exception $e) {
return response()->json(['status' => 'error', 'message' => $e->getMessage()], 400);
}
}
}