<?php

/**
 * servicios_yaml actions.
 *
 * @package    Sofhouse
 * @subpackage servicios_yaml
 * @author     Software House
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class servicios_yamlActions extends sfActions {

    /**
     * Executes list action
     *
     * @param sfRequest $request A request object
     */
    public function executeList(sfWebRequest $request) {

//Revisar que sea post
//$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
            if ($value == 'null') {
                unset($request[$key]);
            }
        }
        $this->logMessage("--------------------------------------------------*  Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        /*
         * Manejar errores 
         */
        try {

            //validar root 
            if (isset($request['root'])) {

                //name-atrib
                if ($request['root'] == 0) {

                    $arrayName = array();

                    $array = sfYaml::load(dirname(__FILE__) . '/../../../config/app-gwt.yml');

                    $int = 0;
                    foreach ($array as $routeName => $routeData) {
                        $arrayName[$int++]['name'] = $routeName;
                    }

//            print_r($arrayName);
//            var_dump($arrayName);
//            die();

                    $this->list_data = $arrayName;
                    $this->logMessage("[SERVICIOS_YAML LIST] Consulta exitosa.");
                } elseif (isset($request['name'])) {

                    $arrayAtrib = array();

                    $array = sfYaml::load(dirname(__FILE__) . '/../../../config/app-gwt.yml');

                    $int = 0;
                    foreach ($array as $routeName => $routeData) {
                        foreach ($routeData as $key => $value) {
                            if ($routeName == $request['name']) {
                                $arrayAtrib[$int][$key] = $value;
                            }
                        }
                        $int++;
                    }

//            print_r($arrayAtrib);
//            var_dump($arrayAtrib);
//            die();

                    $this->list_data = $arrayAtrib;
                    $this->logMessage("[SERVICIOS_YAML LIST] Consulta exitosa.");
                } else {
                    $this->list_data = array();
                    $this->logMessage("[SERVICIOS_YAML LIST] No esta variable name.");
                }
            } else {

                $array = sfYaml::load(dirname(__FILE__) . '/../../../config/app-gwt.yml');

//            foreach ($array as $value) {
//                echo $value;
//            }
//            print_r($array);
//            var_dump($data);
//            die();

                $this->list_data = $array;
                $this->logMessage("[SERVICIOS_YAML LIST] Consulta exitosa.");
            }
        } catch (ParseException $e) {

            $this->status = 1;
            $this->mensajeError = "ERROR!!! Unable to parse the YAML string: %s";
            $this->list_data = array();
            $this->logMessage("ERROR!!! Unable to parse the YAML string: %s");
            $this->logMessage($e->getMessage());
        } catch (Exception $e) {

            $this->status = 1;
            $this->mensajeError = "ERROR!!!";
            $this->list_data = array();
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }

    /**
     * Executes add action
     *
     * @param sfRequest $request A request object
     */
    public function executeAdd(sfWebRequest $request) {

//Revisar que sea post
//$this->forward404Unless($request->isMethod('post'));
//Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
            if ($value == 'null') {
                unset($request[$key]);
            }
        }
        $this->logMessage("--------------------------------------------------*  Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        /*
         * Manejar errores 
         */
        try {

            /*
             * Leer archivo y transformar en array
             */
            $array = sfYaml::load('/home/acontreras/Escritorio/newfile.yml');
//            var_dump($array);
//            die();

            /*
             * Agregar nuevo registro
             */
            $array[$request['name']]['name'] = $request['name'];
            $array[$request['name']]['value'] = $request['value'];
            $array[$request['name']]['desc'] = $request['desc'];
            $array[$request['name']]['label'] = $request['label'];
//            var_dump($array);
//            die();

            /*
             * Transformar array en tipo yaml
             */
            $Content = sfYaml::dump($array);


            try {
                //Leer archivo
                $handle = fopen("/home/acontreras/Escritorio/newfile.yml", 'w+') or die("No se pudo crear el archivo");
                //Sobreescribir archivo
                fwrite($handle, $Content);
                //Cerrar archivo
                fclose($handle);
            } catch (Exception $e) {

                $this->status = 1;
                $this->mensajeError = "ERROR!!!";
                $this->list_data = array();
                $this->logMessage("ERROR!!!");
                $this->logMessage($e->getMessage());
            }

//            echo $Content;


            $this->list_data = $array;
            $this->logMessage("[SERVICIOS_YAML ADD] Se agrego registro correctamente.");
        } catch (ParseException $e) {

            $this->status = 1;
            $this->mensajeError = "ERROR!!! Unable to parse the YAML string: %s";
            $this->list_data = array();
            $this->logMessage("ERROR!!! Unable to parse the YAML string: %s");
            $this->logMessage($e->getMessage());
        } catch (Exception $e) {

            $this->status = 1;
            $this->mensajeError = "ERROR!!!";
            $this->list_data = array();
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }

    /**
     * Executes update action
     *
     * @param sfRequest $request A request object
     */
    public function executeUpdate(sfWebRequest $request) {

        //Revisar que sea post
        //$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
            if ($value == 'null') {
                unset($request[$key]);
            }
        }
        $this->logMessage("--------------------------------------------------*  Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        /*
         * Manejar errores 
         */
        try {

            /*
             * Leer archivo y transformar en array
             */
            $array = sfYaml::load('/home/acontreras/Escritorio/newfile.yml');
//            var_dump($array);
//            die();

            /*
             * Actualizar registro
             */
            $array[$request['name']]['name'] = $request['name'];
            $array[$request['name']]['value'] = $request['value'];
            $array[$request['name']]['desc'] = $request['desc'];
            $array[$request['name']]['label'] = $request['label'];
//            var_dump($array);
//            die();

            /*
             * Transformar array en tipo yaml
             */
            $Content = sfYaml::dump($array);


            try {
                //Leer archivo
                $handle = fopen("/home/acontreras/Escritorio/newfile.yml", 'w+') or die("No se pudo crear el archivo");
                //Sobreescribir archivo
                fwrite($handle, $Content);
                //Cerrar archivo
                fclose($handle);
            } catch (Exception $e) {

                $this->status = 1;
                $this->mensajeError = "ERROR!!!";
                $this->list_data = array();
                $this->logMessage("ERROR!!!");
                $this->logMessage($e->getMessage());
            }

//            echo $Content;


            $this->list_data = $array;
            $this->logMessage("[SERVICIOS_YAML UPDATE] Se actualizo registro correctamente.");
        } catch (ParseException $e) {

            $this->status = 1;
            $this->mensajeError = "ERROR!!! Unable to parse the YAML string: %s";
            $this->list_data = array();
            $this->logMessage("ERROR!!! Unable to parse the YAML string: %s");
            $this->logMessage($e->getMessage());
        } catch (Exception $e) {

            $this->status = 1;
            $this->mensajeError = "ERROR!!!";
            $this->list_data = array();
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }

    /**
     * Executes remove action
     *
     * @param sfRequest $request A request object
     */
    public function executeRemove(sfWebRequest $request) {

        //Revisar que sea post
        //$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
            if ($value == 'null') {
                unset($request[$key]);
            }
        }
        $this->logMessage("--------------------------------------------------*  Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        /*
         * Manejar errores 
         */
        try {

            /*
             * Leer archivo y transformar en array
             */
            $array = sfYaml::load('/home/acontreras/Escritorio/newfile.yml');
//            var_dump($array);
//            die();

            /*
             * Verificar que registro existe para eliminacion
             */
            if (isset($array[$request['name']])) {
                /*
                 * Eliminar registro por name
                 */
                unset($array[$request['name']]);
//            var_dump($array);
//            die();

                /*
                 * Transformar array en tipo yaml
                 */
                $Content = sfYaml::dump($array);


                try {
                    //Leer archivo
                    $handle = fopen("/home/acontreras/Escritorio/newfile.yml", 'w+') or die("No se pudo crear el archivo");
                    //Sobreescribir archivo
                    fwrite($handle, $Content);
                    //Cerrar archivo
                    fclose($handle);
                } catch (Exception $e) {

                    $this->status = 1;
                    $this->mensajeError = "ERROR!!!";
                    $this->list_data = array();
                    $this->logMessage("ERROR!!!");
                    $this->logMessage($e->getMessage());
                }

//            echo $Content;


                $this->list_data = $array;
                $this->logMessage("[SERVICIOS_YAML REMOVE] Se elimino registro correctamente.");
            } else {

                $mensaje = "[SERVICIOS_YAML REMOVE] No se elimino registro, ya que no existe.";

                $this->status = 1;
                $this->mensajeError = $mensaje;
                $this->list_data = array();
                $this->logMessage($mensaje);
            }
        } catch (ParseException $e) {

            $this->status = 1;
            $this->mensajeError = "ERROR!!! Unable to parse the YAML string: %s";
            $this->list_data = array();
            $this->logMessage("ERROR!!! Unable to parse the YAML string: %s");
            $this->logMessage($e->getMessage());
        } catch (Exception $e) {

            $this->status = 1;
            $this->mensajeError = "ERROR!!!";
            $this->list_data = array();
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }

}
