<?php
class projectsModel extends ModelBase{
    
    public $tableName = 'sis_project';
    public $id = array('key'=>'idproject','value'=>'');

    public function addItem($datos){
        $this->setFieldArray($datos);
        list($resultado,$id,$mensaje) = $this->insert();
        return array ($resultado,$id,$mensaje);
    }

    public function DeleteItem(){
        list($resultado,$mensaje) = $this->delete();
        return array ($resultado,$mensaje);
    }

    public function UpdateItem($datos){
        $this->setFieldArray($datos);
        list($resultado,$mensaje) = $this->update();
        return array ($resultado,$mensaje);
    } 
    //JASYRC 10MAY2010
    public function getProjects($datos = array("inicio" => 0, "tamanio" => 5)){
        //realizamos la consulta de todos los items
        $query = "SELECT sp.*, su.firstname, su.lastname FROM sis_project AS sp"
                ." INNER JOIN sis_user AS su ON sp.created_by = su.iduser"
                ." ORDER BY date_start ASC";
        $consulta = $this->db->prepare($query);
        $consulta->execute();
        $num_filas = $consulta->rowCount();

        $parametros = array("total" => $num_filas, "inicio" => $datos['inicio'], "pagina" =>  $datos['tamanio']);
        list($paginas,$navegador) = $this->getPager($parametros);


        //realizamos una consulta paginada
        $consulta = $this->db->prepare($query.' LIMIT '.$datos['inicio'].' , '.$datos['tamanio'].' ');
        $consulta->execute();

        //devolvemos la coleccion para que la vista la presente.
        return array($consulta,$paginas,$navegador);
    }

    //JASYRC 06JUL2010
    public function getChangeList($idproject, $datos = array("inicio" => 0, "tamanio" => 5)){
        
        $query = "SELECT sv.num_version, sch.*,"
                ." CONCAT(su.lastname, ', ', su.firstname) AS user"
                ." FROM sis_changelist_projects AS sch"
                ." INNER JOIN sis_user AS su ON sch.modified_by = su.iduser"
                ." INNER JOIN sis_version AS sv ON sch.idversion = sv.idversion"
                ." WHERE sv.idproject = $idproject ORDER BY sch.date_update ASC";
        $consulta = $this->db->prepare($query);
        $consulta->execute();
        $num_filas = $consulta->rowCount();

        $parametros = array("total" => $num_filas, "inicio" => $datos['inicio'], "pagina" =>  $datos['tamanio']);
        list($paginas,$navegador) = $this->getPager($parametros);


        //realizamos una consulta paginada
        $consulta = $this->db->prepare($query.' LIMIT '.$datos['inicio'].' , '.$datos['tamanio'].' ');
        $consulta->execute();

        //devolvemos la coleccion para que la vista la presente.
        return array($consulta,$paginas,$navegador);
    }

    //JASYRC 06JUL2010
    public function getVersionList($idproject, $datos = array("inicio" => 0, "tamanio" => 5)){

        $query = "SELECT sv.*, CONCAT( su.lastname, ', ', su.firstname) AS user"
                ." FROM sis_version AS sv"
                ." INNER JOIN sis_user AS su ON sv.created_by = su.iduser"
                ." WHERE sv.idproject = $idproject";
        $consulta = $this->db->prepare($query);
        $consulta->execute();
        $num_filas = $consulta->rowCount();

        $parametros = array("total" => $num_filas, "inicio" => $datos['inicio'], "pagina" =>  $datos['tamanio']);
        list($paginas,$navegador) = $this->getPager($parametros);

        //realizamos una consulta paginada
        $consulta = $this->db->prepare($query.' LIMIT '.$datos['inicio'].' , '.$datos['tamanio'].' ');
        $consulta->execute();

        //devolvemos la coleccion para que la vista la presente.
        return array($consulta,$paginas,$navegador);
    }

    //JASYRC 06JUL2010
    public function getChanges($idproject){

        $query = "SELECT sv.num_version, sch.*,"
                ." CONCAT(su.lastname, ', ', su.firstname) AS user"
                ." FROM sis_changelist_projects AS sch"
                ." INNER JOIN sis_user AS su ON sch.modified_by = su.iduser"
                ." INNER JOIN sis_version AS sv ON sch.idversion = sv.idversion"
                ." WHERE sv.idproject = $idproject ORDER BY sv.date_update ASC";
        $consulta = $this->db->prepare($query);
        $result->execute();
        
        return $result;
    }

    //JASYRC 02JUN2010
    function getLProject(){
        $query = "SELECT idproject FROM sis_project ORDER BY date_start DESC LIMIT 0,1";
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }

    //JASYRC 22JUL2010
    function getVersions($idproject){
        $query = "SELECT sv.*, CONCAT( su.lastname, ', ', su.firstname) AS user"
                ." FROM sis_version AS sv"
                ." INNER JOIN sis_user AS su ON sv.created_by = su.iduser"
                ." WHERE sv.idproject = $idproject";
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }

    //JASYRC 22JUL2010
    function getCurrentVersion($idproject){
        $query = "SELECT * FROM sis_version"
                ." WHERE idproject = $idproject AND state = 1";
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }

    //JASYRC 22JUL2010
    function getDependence($idproject){
        $query = "SELECT svd.*, si.num_iteration, "
                ." CONCAT(su.lastname, ', ', su.firstname) AS user"
                ." FROM sis_version_dependence AS svd"
                ." INNER JOIN sis_version AS sv ON svd.idversion = sv.idversion"
                ." INNER JOIN sis_iteration AS si ON svd.iditeration = si.iditeration"
                ." INNER JOIN sis_user AS su ON svd.created_by = su.iduser"
                ." WHERE sv.idproject = $idproject AND si.idproject = $idproject";
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }
	
    //JASYRC 10MAY2010
    function editProject($project){
        $query = "SELECT * FROM sis_project WHERE idproject = $project";
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }
	
    //JASYRC 10MAY2010
    function update1($project){
        $query = "UPDATE sis_project SET title = '".$project['title']."',"
                ." time_estimated = '".$project['time_estimated']."',"
                ." description = '".$project['description']."',"
                ." keywords = '".$project['keywords']."',"
                ." state = ".$project['state']." WHERE idproject = ".$project['idproject'];
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }
	
    //JASYRC 10MAY2010
    function delProject($project){
            $query = "UPDATE sis_project SET state = 5 WHERE idproject = $project";
            $result = $this->db->prepare($query);
            $result->execute();
            return $result;
    }

    //JASYRC 10MAY2010
    function searchProjectbyTitle($title){
        $query = "SELECT * FROM sis_project WHERE LOWER(title) = '".strtolower($title)."'";
        $result = $this->db->prepare($query);
        $result->execute();
        $num_rows = $result->rowCount();
        return $num_rows;
    }
}
?>
