<?php
namespace PEZESHKYAR\SMS;

use PEZESHKYAR\SMS\Drivers\Ippanel;
use PEZESHKYAR\SMS\Drivers\FarazSMS;
use PEZESHKYAR\SMS\Drivers\Melipayamak;

Class Send{

    public static function Send($driver,$text,$to){
        $pzy_options = get_option('pzy_options');
        switch($driver){
            case 'farazsms';
                $farazsms_activate = (isset($pzy_options['farazsms_activate']) && $pzy_options['farazsms_activate'])?true:false;
                $farazsms_access = $pzy_options['farazsms_access']??null;
                $from = $pzy_options['farazsms_from']??null;
    
                if(!$farazsms_activate || !$from || !$farazsms_access){
                    throw new \Exception(esc_html__('ارسال پیامک از درگاه فراز ناموفق بود.','pezeshkyar-core'));
                }
    
                $username = $farazsms_access['username']??'';
                $password = $farazsms_access['password']??'';
                $faraz = new FarazSMS($username,$password);
                $send_response = $faraz->sendSms($to,$from,$text);
    
                $decode_response = json_decode($send_response);
                $res_code = $decode_response[0];
    
                if($res_code !== 0){
                    throw new \Exception(esc_html__('ارسال پیامک از درگاه فراز ناموفق بود.','pezeshkyar-core'));
                }
                break;
            case 'ippanel';
                $ippanel_activate = (isset($pzy_options['ippanel_activate']) && $pzy_options['ippanel_activate'])?true:false;
                $ippanel_access = $pzy_options['ippanel_access']??null;
                $from = $pzy_options['ippanel_from']??null;
    
                if(!$ippanel_activate || !$from || !$ippanel_access){
                    throw new \Exception(esc_html__('ارسال پیامک از درگاه آی پی پنل ناموفق بود.','pezeshkyar-core'));
                }
    
                $username = $ippanel_access['username']??'';
                $password = $ippanel_access['password']??'';
                $ippanel = new Ippanel($username,$password);
                $send_response = $ippanel->sendSms($to,$from,$text);
    
                $decode_response = json_decode($send_response);
                $res_code = $decode_response[0];
    
                if($res_code !== 0){
                    error_log($send_response);
                    throw new \Exception(esc_html__('ارسال پیامک از درگاه آی پی پنل ناموفق بود.','pezeshkyar-core'));
                }
                break;
            case 'melipayamak':
                $melipayamak_activate = (isset($pzy_options['melipayamak_activate']) && $pzy_options['melipayamak_activate'])?true:false;
                $melipayamak_access = $pzy_options['melipayamak_access']??null;
                $from = $pzy_options['melipayamak_from']??null;
    
                if(!$melipayamak_activate || !$from || !$melipayamak_access){
                    throw new \Exception(esc_html__('ارسال پیامک از درگاه ملی پیامک ناموفق بود.','pezeshkyar-core'));
                }

                $username = $melipayamak_access['username']??'';
                $password = $melipayamak_access['password']??'';
                $melipayamak = new Melipayamak($username,$password);
                $send_response = $melipayamak->send($to,$from,$text);
                
                $decode_response = json_decode($send_response,true);
                if(!isset($decode_response['RetStatus']) || $decode_response['RetStatus']!==1){
                    throw new \Exception(esc_html__('ارسال پیامک از درگاه ملی پیامک ناموفق بود.','pezeshkyar-core'));
                }
                
                break;
            default:
                throw new \Exception(esc_html__('درگاه پیامکی نامعتبر است','pezeshkyar-core'));
        }
    }

    public static function SendByPattern($driver,$pattern_code,$parameters,$to){
        $pzy_options = get_option('pzy_options');
        switch($driver){
            case 'farazsms';
                $farazsms_activate = (isset($pzy_options['farazsms_activate']) && $pzy_options['farazsms_activate'])?true:false;
                $farazsms_access = $pzy_options['farazsms_access']??null;
                $from = $pzy_options['farazsms_from']??null;

                if(!$farazsms_activate || !$from || !$farazsms_access){
                    throw new \Exception(esc_html__('ارسال پیامک از درگاه فراز ناموفق بود.','pezeshkyar-core'));
                }

                $username = $farazsms_access['username']??'';
                $password = $farazsms_access['password']??'';
                $faraz = new FarazSMS($username,$password);
                $response = $faraz->sendPatterns($to,$from,$pattern_code,$parameters);
                break;
            case 'ippanel':
                $ippanel_activate = (isset($pzy_options['ippanel_activate']) && $pzy_options['ippanel_activate'])?true:false;
                $ippanel_access = $pzy_options['ippanel_access']??null;
                $from = $pzy_options['ippanel_from']??null;

                if(!$ippanel_activate || !$from || !$ippanel_access){
                    throw new \Exception(esc_html__('ارسال پیامک از درگاه آی پی پنل ناموفق بود.','pezeshkyar-core'));
                }

                $username = $ippanel_access['username']??'';
                $password = $ippanel_access['password']??'';
                $ippanel = new Ippanel($username,$password);
                $response = $ippanel->sendPatterns($to,$from,$pattern_code,$parameters);
                break;
            case 'melipayamak':
                $melipayamak_activate = (isset($pzy_options['melipayamak_activate']) && $pzy_options['melipayamak_activate'])?true:false;
                $melipayamak_access = $pzy_options['melipayamak_access']??null;
                $from = $pzy_options['melipayamak_from']??null;
    
                if(!$melipayamak_activate || !$from || !$melipayamak_access){
                    throw new \Exception(esc_html__('ارسال پیامک از درگاه ملی پیامک ناموفق بود.','pezeshkyar-core'));
                }


                $username = $melipayamak_access['username']??'';
                $password = $melipayamak_access['password']??'';
                $melipayamak = new Melipayamak($username,$password);
                $res = $melipayamak->sendByBaseNumber(array_values($parameters),$to,$pattern_code);
                break;
        }
    }

}

