<?php

namespace app\modules\api;

use app\models\LogApi;
use Yii;

/**
 * api module definition class
 */
class ApiModule extends \yii\base\Module
{
    /**
     * {@inheritdoc}
     */
    public $controllerNamespace = 'app\modules\api\controllers';

    /**
     * {@inheritdoc}
     */
    public function init()
    {
        parent::init();

        //add log for all url and passed data
        $get_link = \Yii::$app->request->url;

        $request = Yii::$app->request;
        $request_type = "2";
        if ($request->isPost) {
            $request_type = "1";
            $jsonData = Yii::$app->request->post();
        } elseif ($request->isGet) {
            $request_type = "2";
            $jsonData = Yii::$app->request->get();
        } elseif ($request->isPut) {
            $request_type = "3";
            $jsonData = Yii::$app->request->getBodyParams();
        } elseif ($request->isDelete) {
            $request_type = "4";
            $jsonData = Yii::$app->request->getBodyParams();
        }
        $sm_cp_id = "";
        $getdata = json_encode($jsonData); // Convert JSON to array
        $headers = $this->request->headers;
        if (!empty($headers)) {
            $get_user_data = Yii::$app->common->apikey_verify($headers);
            if (!empty($get_user_data['sm_cp_data'])) {
                $get_user = $get_user_data['sm_cp_data'];
                $sm_cp_id = $get_user->sm_cp_id;
            }
            //$header_data = Yii::$app->request->headers->toArray();
            $header_data = [];
            $apk_type = $headers->get('channelType');
            $apk_version = $headers->get('version');
            if (!empty($apk_type)) {
                $header_data['apk_type'] = $apk_type;
                $header_data['apk_version'] = $apk_version;
            }

            $getheaderdata = json_encode($header_data);
        }

        $logapi_model = new LogApi();
        $forminfodata['LogApi'] = [];
        $forminfodata['LogApi']['link'] = $get_link;
        $forminfodata['LogApi']['type'] = $request_type;
        $forminfodata['LogApi']['passed_params'] = $getdata;
        $forminfodata['LogApi']['created_on'] = date('Y-m-d H:i:s');
        $forminfodata['LogApi']['sm_cp_id'] = $sm_cp_id;
        $forminfodata['LogApi']['headers'] = $getheaderdata;
        if ($logapi_model->load($forminfodata)) {
            if ($logapi_model->save()) {
            } else {
                /* var_dump($logapi_model->getErrors($forminfodata));
                exit; */
            }
        } else {
            /* var_dump($logapi_model->getErrors($forminfodata));
            exit; */
        }

        /* $to = "jobin.saleprosys@gmail.com";
        $subject = "Test Email from PHP";
        $message = "Hello, this is a test email.";
        $headers = "From: support@cpbroadcast.com";

        if (mail($to, $subject, $message, $headers)) {
            echo "Email sent successfully!";
        } else {
            echo "Failed to send email.";
        } */

        /* Yii::$app->mailer->compose()
            ->setFrom('support@cpbroadcast.com')
            ->setTo('jobin.saleprosys@gmail.com')
            ->setSubject('Test Email from Yii2')
            ->setTextBody('This is a plain text body')
            ->setHtmlBody('<b>This is an HTML message</b>')
            ->send(); */

        // custom initialization code goes here
        \Yii::$app->errorHandler->errorAction = 'api/default/error';
    }
}
