<?php

$Permissoes = User::getUser(true);

class ComplexidadesController extends GxController
{
    public function actionAdmin()
    {
        if (!empty(User::getUser()->FUN_TBL_NIVEIS_COMPLEXIDADE)) {
            $model = new Complexidades('search');
            if (isset($_GET['Complexidades'])) {
                $model->setAttributes($_GET['Complexidades']);
            }

            $dataProvider = $model->search();
            $this->render('admin', array(
                'model' => $model,
                'dataProvider' => $dataProvider,
            ));
        } else {
            throw new CHttpException(400, 'Sua solicitação é inválida.');
        }
    }

    public function actionView($id)
    {
        if (!empty(User::getUser()->FUN_TBL_NIVEIS_COMPLEXIDADE)) {
            $model = $this->loadModel($id, 'Complexidades');
            foreach ($model->LocaisHoras as $localHora) {
                $model->CPX_PERCENTUAL_LOCAL[$localHora->CLH_IDLOCAL] = $localHora->CLH_PERCENTUAL_HORAS;
            }
            $this->render('view', array(
                'model' => $model
            ));
        } else {
            throw new CHttpException(400, 'Sua solicitação é inválida.');
        }
    }

    public function actionCreate()
    {
        if (!empty(User::getUser()->FUN_TBL_NIVEIS_COMPLEXIDADE) && User::canCreate()) {
            $model = new Complexidades;

            $request = filter_input(INPUT_POST, 'Complexidades', FILTER_DEFAULT , FILTER_REQUIRE_ARRAY);
            if (!empty($request)) {
                $model->setAttributes($request);

                $transaction = Yii::app()->db->beginTransaction();
                $commit = true;

                if ($model->save()) {
                    foreach ($model->CPX_PERCENTUAL_LOCAL as $local => $percentual) {
                        $localPercentual = new ComplexidadesLocaisHoras;

                        $localPercentual->CLH_IDCOMPLEXIDADE = $model->CPX_ID;
                        $localPercentual->CLH_IDLOCAL = $local;
                        $localPercentual->CLH_PERCENTUAL_HORAS = $percentual;
                        if (!$localPercentual->save()) {
                            $commit = false;
                        }
                    }
                } else {
                    $commit = false;
                }

                if ($commit) {
                    try {
                        $transaction->commit();
                    } catch (Exception $e) {
                        $transaction->rollback();
                        $commit = false;
                    }
                } else {
                    $transaction->rollback();
                }

                if ($commit) {
                    Yii::app()->user->setFlash('success', 'Nível de complexidade cadastrado com sucesso.');
                    $this->redirect(array('view', 'id' => $model->CPX_ID));
                } else {
                    Yii::app()->user->setFlash('danger', 'Ocorreu um erro ao executar a ação!');
                }
            }

            $this->render('create', array('model' => $model));
        } else {
            throw new CHttpException(400, 'Sua solicitação é inválida.');
        }
    }

    public function actionUpdate($id)
    {
        if (!empty(User::getUser()->FUN_TBL_NIVEIS_COMPLEXIDADE) && User::canUpdate()) {
            $model = $this->loadModel($id, 'Complexidades');

            $request = filter_input(INPUT_POST, 'Complexidades', FILTER_DEFAULT , FILTER_REQUIRE_ARRAY);
            if (!empty($request)) {
                $model->setAttributes($request);

                $transaction = Yii::app()->db->beginTransaction();
                $commit = true;

                if ($model->save()) {
                    ComplexidadesLocaisHoras::model()->deleteAll("CLH_IDCOMPLEXIDADE = {$model->CPX_ID}");
                    foreach ($model->CPX_PERCENTUAL_LOCAL as $local => $percentual) {
                        $localPercentual = new ComplexidadesLocaisHoras;

                        $localPercentual->CLH_IDCOMPLEXIDADE = $model->CPX_ID;
                        $localPercentual->CLH_IDLOCAL = $local;
                        $localPercentual->CLH_PERCENTUAL_HORAS = $percentual;
                        if (!$localPercentual->save()) {
                            $commit = false;
                        }
                    }
                } else {
                    $commit = false;
                }

                if ($commit) {
                    try {
                        $transaction->commit();
                    } catch (Exception $e) {
                        $transaction->rollback();
                        $commit = false;
                    }
                } else {
                    $transaction->rollback();
                }

                if ($commit) {
                    Yii::app()->user->setFlash('success', 'Nível de complexidade alterado com sucesso.');
                    $this->redirect(array('view', 'id' => $model->CPX_ID));
                } else {
                    Yii::app()->user->setFlash('danger', 'Ocorreu um erro ao executar a ação!');
                }
            } else {
                foreach ($model->LocaisHoras as $localHora) {
                    $model->CPX_PERCENTUAL_LOCAL[$localHora->CLH_IDLOCAL] = $localHora->CLH_PERCENTUAL_HORAS;
                }
            }

            $this->render('update', array('model' => $model));
        } else {
            throw new CHttpException(400, 'Sua solicitação é inválida.');
        }
    }

    public function actionStatus($id)
    {
        if (Yii::app()->getRequest()->getIsAjaxRequest()) {
            $model = $this->loadModel($id, 'Complexidades');
            $model->scenario = 'trocaStatus';

            $model->CPX_STATUS = $model->CPX_STATUS ? 0 : 1;
            if ($model->save()) {
                echo $model->getStatus();
            } else {
                throw new CHttpException(400, 'Erro ao alterar status!');
            }
        } else {
            throw new CHttpException(400, 'Sua solicitação é inválida.');
        }
    }

    public function actionHoras($id)
    {
        if (Yii::app()->getRequest()->getIsAjaxRequest()) {
            $complexidade = $this->loadModel($id, "Complexidades");

            $retorno = $complexidade->getHoras();

            echo json_encode($retorno);
        } else {
            throw new CHttpException(400, 'Sua solicitação é inválida.');
        }
    }
}
