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/Services/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/job-board.corals.io/Corals/modules/SMS/Services/MessageService.php
<?php

namespace Corals\Modules\SMS\Services;


use Corals\Foundation\Services\BaseServiceClass;
use Corals\Modules\SMS\Facades\SMS;
use Corals\Modules\SMS\Models\PhoneNumber;
use Corals\Modules\SMS\Models\Provider;
use Corals\Modules\SMS\Models\SMSList;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;

class MessageService extends BaseServiceClass
{
    use ValidatesRequests;

    /**
     * @param $request
     * @param $messageable
     * @param null $providerId
     * @return mixed
     * @throws \Illuminate\Validation\ValidationException
     */
    public function sendMessage($request, $messageable, $providerId = null)
    {
        $this->validate($request, ['provider' => 'required', 'body' => 'required']);

        if (is_null($providerId)) {
            $providers = Arr::wrap($request->get('provider'));
            $provider = Provider::find(Arr::random($providers));
        } else {
            $provider = Provider::find($providerId);
        }

        return SMS::send([
            'messageable_type' => $messageable,
            'messageable_id' => $messageable->id,
            'to' => $messageable->getPhoneNumber(),
            'from' => $provider->phone,
            'body' => $request->get('body'),
            'provider' => $provider
        ]);
    }

    /**
     * @param $messagable
     * @return mixed
     */
    public function getLatestUsedProviderId($messagable)
    {
        return optional($messagable->messages()
            ->where('type', 'outgoing')
            ->latest()
            ->first()
        )->provider_id;
    }

    /**
     * @param $messageable
     * @param $controller
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function messageableThread($messageable)
    {
        $latestUsedProviderId = $this->getLatestUsedProviderId($messageable);

        $smsBodyDescription = $messageable->getSMSBodyDescriptions();


        return view("SMS::messages.messageable_thread")
            ->with(compact('messageable', 'latestUsedProviderId', 'smsBodyDescription'));
    }

    /**
     * @param Request $request
     * @throws \Illuminate\Validation\ValidationException
     */
    public function sendQuickMessage(Request $request)
    {
        $cleanPhone = getCleanedPhoneNumber($request->get('phone'));

        $messageable = PhoneNumber::firstOrCreate([
            'phone' => $cleanPhone
        ], [
            'name' => $cleanPhone,
            'status' => 'active',
            'list_id' => SMSList::query()->first()->id
        ]);

        $this->sendMessage($request, $messageable);
    }
}

Spamworldpro Mini