<?php

namespace App\Controller;

use Cake\Core\Configure;
use App\Controller\AppController;
use Cake\Http\Client;

/**
 * UserProfiles Controller
 *
 * @property \App\Model\Table\UserProfilesTable $UserProfiles
 *
 * @method \App\Model\Entity\UserProfile[] paginate($object = null, array $settings = [])
 */
class UserProfilesController extends AppController {

    public function initialize() {
        parent::initialize();
        $this->viewBuilder()->layout('blank');
    }

    /**
     * Index method
     *
     * @return \Cake\Http\Response|void
     */
    public function index($id = 1) {
//        $this->viewBuilder()->layout('blank');
        $userProfile = $this->UserProfiles->get($id, [
            'contain' => []
        ]);

        $this->set('userProfile', $userProfile);
        $this->set('_serialize', ['userProfile']);
    }

    /**
     * View method
     *
     * @param string|null $id User Profile id.
     * @return \Cake\Http\Response|void
     * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
     */
    public function view($id = null) {
        $userProfile = $this->UserProfiles->get($id, [
            'contain' => []
        ]);

        $this->set('userProfile', $userProfile);
        $this->set('_serialize', ['userProfile']);
    }

    /**
     * Add method
     *
     * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
     */
    public function add() {
        $userProfile = $this->UserProfiles->newEntity();
        if ($this->request->is('post')) {
            $userProfile = $this->UserProfiles->patchEntity($userProfile, $this->request->getData());
            if ($this->UserProfiles->save($userProfile)) {
                $this->Flash->success(__('The user profile has been saved.'));

                return $this->redirect(['action' => 'index']);
            }
            $this->Flash->error(__('The user profile could not be saved. Please, try again.'));
        }
        $this->set(compact('userProfile'));
        $this->set('_serialize', ['userProfile']);
    }

    /**
     * Edit method
     *
     * @param string|null $id User Profile id.
     * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
     * @throws \Cake\Network\Exception\NotFoundException When record not found.
     */
    public function profileSetting($id = 13112) {
        $this->loadModel('Users');
        $http = new Client();
        $data = [];
        $options = ['headers' => [
                'Content-Type' => 'application/x-www-form-urlencoded',
//                'Authorization' => $this->request->getHeaderLine('Authorization')
               // 'Authorization' => 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InRlc3QiLCJwYXNzd29yZCI6InRlc3QiLCJpcCI6IjExMC43Ny4xODIuNzkifQ.xqi1iam460V-DOXJ2wxVJsAccsh4V7iLL_1slLxy99A'
               'Authorization' => 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo1OTI4NywidXNlcm5hbWUiOiJOYW5hMiIsImlwIjoiOjoxIiwidG9waWMiOiJOYW5hMmI5OTQxMWE2NDExYTRhOTlhZmI5MWRhMjM3MTJjNDQ2In0.u3OdN5QzI_dvI9KfKYojjVXfcnvTcmHz9LM0XHXvwU8'
            ]
        ];
        $tmpResponseUserProfile = json_decode($http->post('http://connect06.pakgon.com/api/Profiles', $data, $options)->body(), '_full');
        $responseUserProfile = $tmpResponseUserProfile['result']['Data'];
        unset($tmpResponseUserProfile);
        //pr($responseUserProfile);
//        $userProfiles = $this->UserProfiles->get($responseUserProfile['UserProfiles']['id'], ['contain' => ['MasterOrganizations', 'MasterDepartments']]);
//        debug($responseUserProfile);
//        exit;
//        $organiId = [];
//        foreach ($userProfiles['user_profiles'] as $k => $userProfile) {
//            $organiId = $userProfile->organize_id;
////            debug($userProfiles);
//        }
//        exit;
        if ($this->request->is(['patch', 'post', 'put'])) {
//            debug($this->request->data);
//            exit;
            $data = $this->request->data; #pr($data);
            list($data['UserPersonals']['firstname_th'], $data['UserPersonals']['lastname_th']) = explode(' ', $data['UserPersonals']['fullname']);
            unset($data['UserPersonals']['fullname']);
            $data['UserPersonals']['birthdate'] = '';
            $data['UserPersonals']['user_id'] = $data['Users']['user_id'];
            $data['UserPersonals']['modified_by'] = '';
            $data['UserProfiles'][0]['user_id'] = $data['Users']['user_id'];
            $data['UserProfiles'][0]['user_type_id'] = 1;
            $data['UserProfiles'][0]['modified_by'] = '';
            $data['UserProfiles'][1]['user_id'] = $data['Users']['user_id'];
            $data['UserProfiles'][1]['user_type_id'] = 2;
            $data['UserProfiles'][1]['modified_by'] = '';
            debug($data);
            exit;
            #$api_update_profile = 'http://connect06.pakgon.com/api/Connects/Profile/updateProfile';
            $api_update_profile = Configure::read('Config.apiCore.profile') . '/updateProfile';
            $http = new Client();
//            $data = [];
            $options = ['headers' => [
                    'Content-Type' => 'application/x-www-form-urlencoded',
                    #'Authorization' => $this->request->getHeaderLine('Authorization')
                    //'Authorization' => 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo1OTIzMCwidXNlcm5hbWUiOiJ0ZXN0dG9uZyIsImlwIjoiMTI3LjAuMC4xIn0.37hXRDEhiwjsgqR8mcgbhxnKtAof3tIDahL2P6DnQ4I'
                    'Authorization' => 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo1OTI4NywidXNlcm5hbWUiOiJOYW5hMiIsImlwIjoiOjoxIiwidG9waWMiOiJOYW5hMmI5OTQxMWE2NDExYTRhOTlhZmI5MWRhMjM3MTJjNDQ2In0.u3OdN5QzI_dvI9KfKYojjVXfcnvTcmHz9LM0XHXvwU8'
                ]
            ];
            #prr($options);
            $response = $http->post($api_update_profile, $data, $options)->body();
            pr($response);
            $response = json_decode($response, '_full');
            pr($response);
            die;
        }

//         $organization = $this->UserProfiles->MasterOrganizations->find('list')->select(['MasterOrganizations.id', 'MasterOrganizations.org_name_th'])->where(['master_organization_type_id' => 1]);
//         $organizations = ['' => __(' --- Please Select --- ')] + $organization->toArray();
// //
//         $company = $this->UserProfiles->MasterOrganizations->find('list')->select(['MasterOrganizations.id', 'MasterOrganizations.org_name_th'])->where(['master_organization_type_id' => 2]);
//         $companys = ['' => __(' --- Please Select --- ')] + $company->toArray();
// //
//         $this->loadModel('MasterOrganizationPositions');
//         $companyPosition = $this->MasterOrganizationPositions->find('list')->select(['MasterOrganizationPositions.id', 'MasterOrganizationPositions.organization_position_name'])->where(['MasterOrganizationPositions.master_organization_id' => $responseUserProfile['UserProfiles']['organize_id']]);
//         $companyPositions = ['' => __(' --- Please Select --- ')] + $companyPosition->toArray();

//         $department = $this->UserProfiles->MasterDepartments->find('list')->select(['MasterDepartments.id', 'MasterDepartments.dept_name_th'])->where(['MasterDepartments.master_organization_id' => $responseUserProfile['UserProfiles']['organize_id']]);
//         $departments = ['' => __(' --- Please Select --- ')] + $department->toArray();
//         $section = $this->UserProfiles->MasterSections->find('list')->select(['MasterSections.id', 'MasterSections.section_name_th'])->where(['MasterSections.master_department_id' => $responseUserProfile['UserProfiles']['dept_id']]);
//         $sections = ['' => __(' --- Please Select --- ')] + $section->toArray();
//        $departMents = $departMent->toArray();
//        $secTions = $secTion->toArray();
//        debug($organizations);
//
//        debug($companyDepartments);
//        debug($companyPositions);
//        exit;
        $this->set(compact('userProfiles', 'responseUserProfile', 'organizations', 'companys', 'companyPositions', 'departments', 'sections'));
        $this->set('_serialize', ['userProfiles', 'responseUserProfile', 'organizations', 'companys', 'companyPositions', 'departments', 'section']);
    }

    /**
     * Delete method
     *
     * @param string|null $id User Profile id.
     * @return \Cake\Http\Response|null Redirects to index.
     * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
     */
    public function delete($id = null) {
        $this->request->allowMethod(['post', 'delete']);
        $userProfile = $this->UserProfiles->get($id);
        if ($this->UserProfiles->delete($userProfile)) {
            $this->Flash->success(__('The user profile has been deleted.'));
        } else {
            $this->Flash->error(__('The user profile could not be deleted. Please, try again.'));
        }

        return $this->redirect(['action' => 'index']);
    }

    public function getDepartment($id = null) {
//        $this->autoRender = false;
//        $this->viewBuilder()->layout('ajax');
        $this->loadModel('MasterDepartments');
        $department = $this->MasterDepartments->find('all')->select(['MasterDepartments.id', 'MasterDepartments.dept_name_th'])->where(['master_organization_id' => $id]);
        $departments = $department->toArray();
        $this->set(array('departments' => $departments, '_serialize' => array('departments')));
    }

    public function getSection($id = null) {
        $this->loadModel('MasterSections');
        $section = $this->MasterSections->find('all')->select(['MasterSections.id', 'MasterSections.section_name_th'])->where(['master_department_id' => $id]);
        $sections = $section->toArray();
        $this->set(array('sections' => $sections, '_serialize' => array('sections')));
    }

    public function getCompanyDepartment($id = null) {
        $this->loadModel('MasterDepartments');
        $companyDept = $this->MasterDepartments->find('all')->select(['MasterDepartments.id', 'MasterDepartments.dept_name_th'])->where(['master_organization_id' => $id]);
        $companyDepts = $companyDept->toArray();
        $this->set(array('companyDepts' => $companyDepts, '_serialize' => array('companyDepts')));
    }

    public function getCompanySection($id = null) {
        $this->loadModel('MasterSections');
        $companySec = $this->MasterSections->find('all')->select(['MasterSections.id', 'MasterSections.section_name_th'])->where(['master_department_id' => $id]);
        $companySecs = $companySec->toArray();
        $this->set(array('companySecs' => $companySecs, '_serialize' => array('companySecs')));
    }

    public function getCompanyPosition($id = null) {
        $this->loadModel('MasterOrganizationPositions');
        $companyPosition = $this->MasterOrganizationPositions->find('all')->select(['MasterOrganizationPositions.id', 'MasterOrganizationPositions.organization_position_name'])->where(['master_section_id' => $id]);
        $companyPositions = $companyPosition->toArray();
        $this->set(array('companyPositions' => $companyPositions, '_serialize' => array('companyPositions')));
    }

    public function demo() {
        
    }

}
