Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/job-board.corals.io/Corals/modules/SMS/Http/Controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/job-board.corals.io/Corals/modules/SMS/Http/Controllers/PhoneNumbersController.php
<?php

namespace Corals\Modules\SMS\Http\Controllers;

use Corals\Foundation\Http\Controllers\BaseController;
use Corals\Foundation\Http\Requests\BulkRequest;
use Corals\Modules\SMS\DataTables\PhoneNumbersDataTable;
use Corals\Modules\SMS\Http\Requests\PhoneNumberRequest;
use Corals\Modules\SMS\Models\PhoneNumber;
use Corals\Modules\SMS\Services\MessageService;
use Corals\Modules\SMS\Services\PhoneNumberService;
use Illuminate\Http\Request;

class PhoneNumbersController extends BaseController
{
    protected $phoneNumberService;

    public function __construct(PhoneNumberService $phoneNumberService)
    {
        $this->phoneNumberService = $phoneNumberService;

        $this->resource_url = config('sms.models.phone_number.resource_url');

        $this->title = trans('SMS::module.phone_number.title');
        $this->title_singular = trans('SMS::module.phone_number.title_singular');

        parent::__construct();
    }

    /**
     * @param PhoneNumberRequest $request
     * @param PhoneNumbersDataTable $dataTable
     * @return mixed
     */
    public function index(PhoneNumberRequest $request, PhoneNumbersDataTable $dataTable)
    {
        return $dataTable->render('SMS::phone_numbers.index');
    }

    /**
     * @param PhoneNumberRequest $request
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function create(PhoneNumberRequest $request)
    {
        $phoneNumber = new PhoneNumber();

        $this->setViewSharedData(['title_singular' => trans('Corals::labels.create_title', ['title' => $this->title_singular])]);

        return view('SMS::phone_numbers.create_edit')->with(compact('phoneNumber'));
    }

    /**
     * @param PhoneNumberRequest $request
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function store(PhoneNumberRequest $request)
    {
        try {

            $phoneNumber = $this->phoneNumberService->store($request, PhoneNumber::class);

            flash(trans('Corals::messages.success.created', ['item' => $this->title_singular]))->success();
        } catch (\Exception $exception) {
            log_exception($exception, PhoneNumber::class, 'store');
        }

        return redirectTo($this->resource_url);
    }

    /**
     * @param PhoneNumberRequest $request
     * @param PhoneNumber $phoneNumber
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function show(PhoneNumberRequest $request, PhoneNumber $phoneNumber)
    {
        $this->setViewSharedData([
            'title_singular' => trans('Corals::labels.show_title', ['title' => $phoneNumber->getIdentifier()]),
            'showModel' => $phoneNumber,
        ]);

        return view('SMS::phone_numbers.show')->with(compact('phoneNumber'));
    }

    /**
     * @param PhoneNumberRequest $request
     * @param PhoneNumber $phoneNumber
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function edit(PhoneNumberRequest $request, PhoneNumber $phoneNumber)
    {
        $this->setViewSharedData(['title_singular' => trans('Corals::labels.update_title', ['title' => $phoneNumber->getIdentifier()])]);

        return view('SMS::phone_numbers.create_edit')->with(compact('phoneNumber'));
    }

    /**
     * @param PhoneNumberRequest $request
     * @param PhoneNumber $phoneNumber
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function update(PhoneNumberRequest $request, PhoneNumber $phoneNumber)
    {
        try {
            $this->phoneNumberService->update($request, $phoneNumber);

            flash(trans('Corals::messages.success.updated', ['item' => $this->title_singular]))->success();
        } catch (\Exception $exception) {
            log_exception($exception, PhoneNumber::class, 'update');
        }

        return redirectTo($this->resource_url);
    }

    /**
     * @param PhoneNumberRequest $request
     * @param PhoneNumber $phoneNumber
     * @return \Illuminate\Http\JsonResponse
     */
    public function destroy(PhoneNumberRequest $request, PhoneNumber $phoneNumber)
    {
        try {
            $this->phoneNumberService->destroy($request, $phoneNumber);

            $message = ['level' => 'success', 'message' => trans('Corals::messages.success.deleted', ['item' => $this->title_singular])];
        } catch (\Exception $exception) {
            log_exception($exception, PhoneNumber::class, 'destroy');
            $message = ['level' => 'error', 'message' => $exception->getMessage()];
        }

        return response()->json($message);
    }

    /**
     * @param Request $request
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function importCSVModal(Request $request)
    {
        abort_if(!$request->ajax(), 404);

        $headers = trans('SMS::labels.phone_number.phone-numbers-headers');

        return view("SMS::phone_numbers.partials.import_csv_modal")->with(compact('headers'));
    }

    /**
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     * @throws \Illuminate\Validation\ValidationException
     */
    public function importCSV(Request $request)
    {
        return $this->phoneNumberService->importCSV($request);
    }

    /**
     * @throws \League\Csv\CannotInsertRecord
     */
    public function downloadImportSample()
    {
        return $this->phoneNumberService->downloadImportSample();
    }


    /**
     * @param Request $request
     * @param PhoneNumber $phoneNumber
     * @param MessageService $messageService
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function messages(Request $request, PhoneNumber $phoneNumber, MessageService $messageService)
    {
        $this->setViewSharedData([
            'title_singular' => trans('SMS::labels.phone_number.send_message_to_title', [
                'to' => sprintf('%s [%s]', $phoneNumber->getIdentifier(), $phoneNumber->getPhoneNumber())
            ])
        ]);

        return $messageService->messageableThread($phoneNumber);
    }

    /**
     * @param Request $request
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function sendBulkMessageModal(Request $request)
    {
        abort_if(!$request->ajax(), 404);

        return view('SMS::phone_numbers.partials.bulk_message_modal')
            ->with(['smsBodyDescription' => PhoneNumber::getSMSBodyDescriptions()]);
    }

    /**
     * @param BulkRequest $request
     * @param MessageService $messageService
     * @return \Illuminate\Http\JsonResponse
     * @throws \Illuminate\Validation\ValidationException
     */
    public function bulkAction(BulkRequest $request, MessageService $messageService)
    {
        $action = $request->input('action');

        if ($action == 'send_messages') {
            $this->validate($request, ['provider' => 'required', 'body' => 'required']);
        }

        try {
            $selection = json_decode($request->input('selection'), true);

            $ids = array_map(function ($id) {
                return hashids_decode($id);
            }, $selection);


            if ($ids) {
                switch ($action) {
                    case 'send_messages':
                        foreach ($ids as $id) {
                            $messageService->sendMessage(
                                $request, PhoneNumber::query()->find($id)
                            );
                        }

                        $message = ['level' => 'success', 'message' => trans('SMS::labels.phone_number.message_sent_successfully')];

                        break;
                }
            }

        } catch (\Exception $exception) {
            log_exception($exception, PhoneNumbersController::class, 'bulkAction');
            $message = ['level' => 'error', 'message' => $exception->getMessage()];
        }

        return response()->json($message ?? ['level' => 'info', 'message' => trans('SMS::labels.phone_number.no_changes_done')]);
    }
}

Spamworldpro Mini