<?php
/**
 * Created by PhpStorm.
 * User: sunil
 * Date: 16/11/18
 * Time: 11:04 AM
 */

namespace App;


use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;

class Reminders
{

    private $request;
    private $view;
    private $attachment = array();
    private $smsBody;
    private $phone;
    private $smsView;
    private $email = array();
    private $subject;
    private $cc = array();
    private $additionalData = array();

    public function __construct(Request $request){
        $this->request = $request;
    }

    public function setView($view){
        $this->view = $view;
        return $this;
    }

    public function setSubject($subject){
        $this->subject = $subject;
        return $this;
    }

    public function setSMSView($smsView){
        $this->smsView = $smsView;
        return $this;
    }

    public function setAttachment($attachment){
        $this->attachment = $attachment;
        return $this;
    }

    public function setCCEmails($cc = array()){
        $this->cc = $cc;
        array_push($this->cc,_env('NOTIFY_EMAIL', ''));
        return $this;
    }

    public function send(){
        $smsView = '';
        if($this->view && $this->email){
            Mail::send($this->view, [
                'data' => $this->request->attributes->all(),
            ], function ($message) {
                $message->to($this->email)->subject($this->subject);
                $message->cc($this->cc);

                if($this->attachment){
                    $message->attachData($this->attachment['file'], $this->attachment['name']);
                }
            });
        }

        if($this->smsView){
            $smsView  = view($this->smsView,['data' => $this->request->attributes->all()])->render();
        }else if($this->smsBody){
            $smsView = $this->smsBody;
        }

        if($smsView && $this->phone){
            $mobile_number = $this->phone;
            send_sms($mobile_number, ['message'=>$smsView,'id'=>isset($this->additionalData['id']) ? $this->additionalData['id'] : 0,'id_type'=> isset($this->additionalData['id_type']) ? $this->additionalData['id_type'] : 'application_id', 'templateId' => isset($this->additionalData['templateId']) ? $this->additionalData['templateId'] : '',  'args' => isset($this->additionalData['args']) ? $this->additionalData['args'] : '', 'templateDetails' => $this->template]);
        }
    }

    public function setSMSBody($smsBody, $template = array()){
        $this->smsBody = $smsBody;
        $this->template = $template;
        return $this;
    }

    public function setPhone($phone){
        $this->phone = $phone;
        return $this;
    }

    public function setAdditionalData($data = array()){
        $this->additionalData = $data;
        return $this;
    }

    public function setEmail($email){
        $this->email = $email;
        return $this;
    }
}
