HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: /var/www/admin.javaapp.co.uk/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();
    }
}