<?php

namespace backend\components;

use app\models\LogError;
use app\models\SmCp;
use app\models\SmCpOtp;
use Exception;
use Yii;
use yii\base\Component;

class Common extends Component
{
	public function send_sms($type, $contact)
	{
		$msg = "";
		if (!empty($contact)) {
			if ($type == 'otp') {
				$otp = rand(1111, 9999);
				//$msg = 'Please use OTP-' . $otp . ' for using services in salesprocpnetwork.com';

				/*
				http://sms.digimiles.in/bulksms/bulksms?username=di78-rajum&password=digimile&type=0&dlr=1&destination=8788093785&source=ADTYDP&message=Dear Customer, DON'T SHARE: 7776654 is the Password for your CpBroadcast Account. Keep this OTP to yourself.Regards,Adityaraj Builders&entityid=1501604490000038550&tempid=1107172441148528477
				*/

				$msg = "DON'T SHARE: " . $otp . " is the Password for your CPBroadcast Account." . PHP_EOL . "Keep this OTP to yourself." . PHP_EOL . "Regards," . PHP_EOL . "Adityaraj Builders";

				//save in db
				$ticket_model = new SmCpOtp();
				$ticket_model->contact = $contact;
				$ticket_model->otp = $otp;
				$ticket_model->created_on = date('Y-m-d H:i:s');
				$newtimestamp = strtotime($ticket_model->created_on . ' + 5 minute');
				$expiry_at = date('Y-m-d H:i:s', $newtimestamp);
				$ticket_model->expiry_at = $expiry_at;
				$ticket_model->save();
			}

			$msg_return = false;
			//send sms
			if (!empty($msg)) {

				//Make live is pending. Changes are done
				//$contact = "8788093785";
				Yii::$app->digiSms->DigiSmsFn("sms.digimiles.in", "", "di78-rajum", "digimile", "ADTYDP", $msg, $contact, "0", "1", "1107172586251458411", "1501604490000038550");

				$reportingArr = Yii::$app->digiSms->broadcast();
				/* var_dump($reportingArr);
				exit; */
				//need to add conditions
				$msg_return = 'otp sent';
			}
			return $msg_return;
		} else {
			return false;
		}
	}

	public function addlog($formdata)
	{
		$error_model = new LogError();
		$formerrordata['LogError'] = [];
		$formerrordata['LogError']['url'] = \Yii::$app->request->url;
		$formerrordata['LogError']['post_data'] = $formdata['post_data'];
		$formerrordata['LogError']['error'] = $formdata['error'];
		$formerrordata['LogError']['created_on'] = date('Y-m-d H:i:s');
		if ($error_model->load($formerrordata)) {
			if ($error_model->save()) {
			} else {
				var_dump($error_model->getErrors($formerrordata));
				exit;
			}
		} else {
			var_dump($error_model->getErrors($formerrordata));
			exit;
		}
	}

	public function apikey_verify($headers)
	{
		$apikey = '';
		if (!empty($headers)) {
			$apikey = $headers->get('apikey');
			$apk_type = $headers->get('channelType');
			$apk_version = $headers->get('version');
		}
		if (!empty($apikey)) {
			if ($apikey == 'jobin') {
				$get_logged_user = SmCp::findOne([
					'sm_cp_id' => 2,
					'status' => 1,
				]);
			} else {
				$get_logged_user = SmCp::findOne([
					'apikey' => $apikey,
					'status' => 1,
					'is_logged' => 1,
					'is_deleted' => 0
				]);
				//Need to comment once live
				if (empty($get_logged_user)) {
					$get_logged_user = SmCp::findOne([
						'contact' => $apikey,
						'status' => 1,
						'is_deleted' => 0
					]);
				}
			}


			if (!empty($get_logged_user->sm_cp_id)) {
				$apk_update = false;
				if (!empty($apk_type) && ($get_logged_user->apk_type != $apk_type)) {
					$get_logged_user->apk_type = $apk_type;
					$apk_update = true;
				}
				if (!empty($apk_version) && ($get_logged_user->apk_version != $apk_version)) {
					$get_logged_user->apk_version = $apk_version;
					$apk_update = true;
				}
				if ($apk_update) {
					$get_logged_user->save();
				}
				$data['sm_cp_data'] = $get_logged_user;
			} else {
				$data['status'] = 2;
				$error_data['code'] = 'INVALID_APIKEY';
				$error_data['message'] = str_replace("%", $apikey, \Yii::$app->params['INVALID_APIKEY']);
				//$error['error'] = $error;
				$data['error'] = $error_data;
			}
		} else {
			$data['status'] = 2;
			$error_data['code'] = \Yii::$app->params['INVALID_PARAM_code'];
			$error_data['message'] = \Yii::$app->params['INVALID_PARAM_message'];
			//$error['error'] = $error;
			$data['error'] = $error_data;
		}
		return $data;
	}
}
