HEX
Server: nginx/1.24.0
System: Linux DGT-WORDPRESS-VM-SERVER 6.14.0-1014-azure #14~24.04.1-Ubuntu SMP Fri Oct 3 20:52:11 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.4.12
Disabled: NONE
Upload Files
File: /mnt/data/ghayatcom/ghayatcom-api/app/Library/TwilioLibrary.php
<?php

namespace App\Library;

use Config;
use DB;
use Twilio\Exceptions\TwilioException;
use Twilio\Rest\Client;
use Exception;
use Throwable;
use App\AdminSettings;

class TwilioLibrary
{
    public function __construct() {

        $settings = AdminSettings::firstOrFail();
        $this->status = $settings->twilio_status;
        $this->account_sid = $settings->twilio_sid;
        $this->auth_token = $settings->twilio_auth_token;
        $this->twilio_verify_sid = $settings->twilio_verify_sid;
        $this->twilio_number = $settings->twilio_number;

    }

    public function sendOtpSMS($mobile_number)
    {
        try{
            if($this->status == 'enabled') {
                $twilio = new Client($this->account_sid, $this->auth_token);
                $twilio->verify->v2->services($this->twilio_verify_sid)->verifications->create($mobile_number, "sms");
            }
            return 1;
        }catch(Exception | TwilioException | Throwable $e){
            return $e->getMessage();
        }
    }

    public function verifyOtpSMS($mobile_number, $verification_code)
    {
        try{
            if($this->status == 'enabled') {
                $twilio = new Client($this->account_sid, $this->auth_token);
                $verification = $twilio->verify->v2->services($this->twilio_verify_sid)
                ->verificationChecks
                ->create(array('to' => $mobile_number, 'code' => trim($verification_code)));
                if ($verification->valid) {
                    return 1;
                }else{
                    return 'Invalid Mobile Number verification code.';
                }
            } else {
                return 1;
            }
        }catch(Exception | TwilioException | Throwable $e){
            return $e->getMessage();
        }
    }

    public function sendSMS($mobile_number,$message) {
        try {
            if($this->status == 'enabled') {
                $twilio = new Client($this->account_sid, $this->auth_token);
                $twilio->messages->create($mobile_number, [
                    'from' => $this->twilio_number, 
                    'body' => $message]
                );
            }
            return 1;
        }catch(Exception | TwilioException | Throwable $e){
            return $e->getMessage();
        }
    }
}