File: /var/www/javago-portal-updates/app/Services/CafeListingRequestService.php
<?php
namespace App\Services;
use App\Mail\SendCafeRequestApprovalMail;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
use Yajra\DataTables\Facades\DataTables;
class CafeListingRequestService
{
private $model;
public function __construct($model)
{
$this->model = new $model();
}
public function show($id)
{
abort_if(!$id, 404);
$model = $this->model->find(decrypt($id));
abort_if(!$model, 404);
$data = [];
$data['name'] = $model->cafe_name;
$data['email'] = $model->email;
$data['phone'] = $model->phone;
$data['cafe_type'] = $model->cafe_type;
$data['address'] = $model->address;
$data['postcode'] = $model->postcode;
$data['website'] = $model->website;
$data['cafeListingRequestUrl'] = route('admin.cafe-listing-request.index');
return view('admin.cafe-listing-request.view', $data);
}
public function approve($id)
{
DB::beginTransaction();
try {
$model = $this->model->find(decrypt($id));
if (!$model) {
DB::rollback();
return response()->json([
'status' => 500,
'message' => __('common.somethingWentWrong'),
]);
}
$status = [];
$status['approved'] = 1;
$status['updated_at'] = Carbon::now()->timestamp;
$model->update($status);
// send cafe request approval mail
$subject = __('common.cafeRequestApprove');
$username = $model->cafe_name;
$view = 'emails.send-cafe-request-approval';
$reply_to = $model->email;
$data = [
'subject' => $subject,
'username' => $username,
'link' => route('cafe.signup', $id),
'view' => $view,
];
Mail::to($reply_to)->send(new SendCafeRequestApprovalMail($data));
DB::commit();
return response()->json([
'status' => 200,
'message' => __('common.cafeRequestApprovedSuccessfully'),
]);
} catch (\Throwable $th) {
DB::rollback();
return response()->json([
'status' => 500,
'message' => __('common.somethingWentWrong'),
]);
}
}
public function destroy($id, $modelName)
{
DB::beginTransaction();
try {
$model = $this->model->find(decrypt($id));
if (!$model) {
DB::rollback();
return response()->json([
'status' => 500,
'message' => __('common.somethingWentWrong'),
]);
}
// $delete = [];
// $delete['deleted_at'] = Carbon::now()->timestamp;
// $cafe->update($delete);
$model->delete();
DB::commit();
return response()->json([
'status' => 200,
'message' => __('common.DeletedSuccessfully', ['model' => $modelName]),
]);
} catch (\Throwable $th) {
DB::rollback();
return response()->json([
'status' => 500,
'message' => __('common.somethingWentWrong'),
]);
}
}
public function data()
{
$data = $this->model->query()->select('id', 'cafe_name', 'phone', 'email', 'address', 'approved');
return DataTables::eloquent($data)
->addIndexColumn()
->editColumn('cafe_name', function ($row) {
if (empty($row->cafe_name)) {
return '-';
} else {
if (strlen($row->cafe_name) > 30) {
return substr($row->cafe_name, 0, 50) . '...';
} else {
return $row->cafe_name;
}
}
})
->editColumn('phone', function ($row) {
if (empty($row->phone)) {
return '-';
} else {
return $row->phone;
}
})
->editColumn('email', function ($row) {
if (empty($row->email)) {
return '-';
} else {
if (strlen($row->email) > 50) {
return substr($row->email, 0, 50) . '...';
} else {
return $row->email;
}
}
})
->editColumn('address', function ($row) {
if (empty($row->address)) {
return '-';
} else {
if (strlen($row->address) > 50) {
return substr($row->address, 0, 50) . '...';
} else {
return $row->address;
}
}
})
->addColumn('status', function ($row) {
return view(
"partials.common",
[
'row' => $row,
'isApproved' => 1,
]
)->render();
})
->addColumn('action', function ($row) {
return view(
"partials.action",
[
'currentRoute' => 'admin.cafe-listing-request',
'row' => $row,
'isApproved' => 1,
'isDelete' => 1,
'isView' => 1,
]
)->render();
})
->rawColumns(['banner_image', 'action', 'status'])
->toJson();
}
}