MOON
Server: Apache
System: Linux e2e-78-16.ssdcloudindia.net 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: imensosw (1005)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/imensosw/public_html/imenso.co/timesheet/api/project.php
<?php 

ob_start();

require_once '../lib/lib.inc.php';

logit(INFO, 'starting project');

$resp = new stdClass();
$resp->error = false;
$resp->msg = [];

if(!dbConnect()){
	$resp->error = "Database error";
}

$project = new Project();

//logit(INFO, "REQUEST: " . print_r($_REQUEST,1));

switch ($_REQUEST["action"]) {

    case "getproject":
    if($project->checkAuth()){
        $project->makeProject();
        $project->getProject();
    }
    break;

    case "saveproject":
    if($project->checkAuth()){
        $project->makeProject();
        if($project->checkProject())
        {
            $project->saveProject();
        }
    }
    break;

    case "deleteproject":
    if($project->checkAuth()){
        $project->makeProject();
        $project->deleteProject();
    }
    break;

    

    default:
    $project->resp->error = "No command found";
    logit(INFO, "GOT TO DEFAULT");
} //-es


if ($resp->error) {
    error();
} else {
    respond();
}


class Project
{
    public function __construct()
    {
		global $resp;
        $this->resp = &$resp;
		$this->init();
    
    } //- ef
    private function init() {
	} //- init




    public function checkAuth()
    {

        if(tokenTimeout($_REQUEST["token"]) || !isAdmin($_REQUEST["token"]))
        {
            $this->resp->error = true;
            $this->resp->msg = "timeout out";
            return false;
        }
        return true;
    }
    public function getProject(){ 

        //access_level NOT IN(3) and
        global $config;
             $resultsperpage=$config['resultsperpage'];
             $search_title=$this->project['search_title'];
             $page=$this->project['page'];
             $sorting=$this->project['sorting'];
             $sortingby=$this->project['sortingby'];
             if($sorting=="")
             {
                 $sorting="";
                 $sortingby="";

             }
             else
             {
                $sorting="p.".$sorting;
             }

             
             $offset = $resultsperpage * ($page-1) ;
             $in = array (
                ":projectname" => "%".$this->project['search_title']."%"
                // ":projectdesciption" => "%".$this->project['search_title']."%"
                );

             $sql = "SELECT SQL_CALC_FOUND_ROWS p.id,p.project_name,SEC_TO_TIME( SUM( TIME_TO_SEC( th.time ) ) ) AS total_time ,Date_Format(p.start_date,'%d %b %Y') start_date,p.project_desc FROM projects p left join timesheet_history th on th.project_id=p.id where p.project_name like :projectname group by p.id order by $sorting $sortingby limit $offset,$resultsperpage";
             if ($rc=dbPdoQuery($sql,$in)) {
               while ($row = dbPdoFetch($rc)) {
                $this->resp->project[] = $row;
             }
            

             $this->paginationResult($this->project['page']); 
            
        } else {
            logit(WARN,"Did not get Project List");
            $this->resp->msg[] = "not found.";
        }


    } //- getProject   

   public function makeProject()
    {
       
        $this->project=$_REQUEST["project"];
    }

    public function checkProject()
    {     
         if(!trim(strlen($this->project['projectname'])))
        {

            $this->resp->msg[] = 'Please enter project name';
        }
        if(!trim(strlen($this->project['projectstartdate'])))
        {
            $this->resp->msg[] = 'Please enter start date';
        }
        if(!trim(strlen($this->project['projectdesciption'])))
        {
            $this->resp->msg[] = 'Please enter description';
        }
        
        if(count($this->resp->msg)>0)
        {
           return false;
        }
        return true;

    }


    public function saveProject()
    {
      
        if(is_numeric($this->project['id']) AND $this->project['id'] > 0) 
        {
            $this->updateProject();
        }
        else
        {
            $in = array (
                ":projectname" => $this->project['projectname'],
                ":projectstartdate" => $this->project['projectstartdate'],
                ":projectdesciption" => $this->project['projectdesciption'],
                ":created_at"=>date('Y-m-d H:i:s'),
                ":updated_at"=>date('Y-m-d H:i:s')
            );

            $in1 = array (
                ":projectname" => $this->project['projectname']
            );

            $sql = "SELECT * FROM projects where project_name=:projectname";
            if ($rc=dbPdoQuery($sql,$in1) AND $row = dbPdoFetchall($rc)) {
                 logit(INFO,"Project already exist");
                $this->resp->msg[] = "Project already exist.";
            }
            else{

                $sql="INSERT INTO projects (project_name,start_date,project_desc,created_at,updated_at) VALUES(:projectname,:projectstartdate,:projectdesciption,:created_at,:updated_at)";

                if ($rc = dbPdoQuery($sql,$in)) {
                  logit(INFO, "SQL ", $sql);
                  logit(INFO,"Inserted project with ID ");
                } else {
                  logit(WARN," DB Error:  $sql in ".__FILE__." on line: ".__LINE__);
                  error("Database error [db03]");
                }

              }
        }

    } //- saveProject


    public function updateProject()
    {
        $in = array (
            ":projectname" => $this->project['projectname'],
            ":projectstartdate" => $this->project['projectstartdate'],
            ":projectdesciption" => $this->project['projectdesciption'],
            ":id" => $this->project['id'],
            ":updated_at"=>date('Y-m-d H:i:s'),
        );

        $in1 = array (
           
            ":id" => $this->project['id'],
        );
            
            $sql="UPDATE projects SET project_name=:projectname, start_date=:projectstartdate ,project_desc =:projectdesciption, updated_at=:updated_at WHERE id=:id";

            $rc = dbPdoQuery($sql,$in);
            logit(INFO, "The project is ", $in);
            if($rc = dbPdoQuery($sql,$in)) {
                logit(INFO,"Updated project with ID " . $this->project['id']);
            } else {
                logit(WARN," DB Error:  $sql in ".__FILE__." on line: ".__LINE__);
                error("Database error [db02]");
            }      
        
    }//- editProject




    public function deleteProject()
    {
        
        $in = array (
            ":id" => $this->project['id'],
        );

        $sql = "SELECT * FROM projects where id=:id";
        if ($rc=dbPdoQuery($sql,$in) AND $row = dbPdoFetch($rc)) {
            
                $sql="DELETE FROM projects WHERE id=:id";
                $rc = dbPdoQuery($sql,$in);
                 logit(INFO,"deleted project with ID " . $this->project['id']);
            
        }
        else {
            logit(WARN," DB Error:  $sql in ".__FILE__." on line: ".__LINE__);
            error("Database error [db02]");
          }


    }//- deleteProject


     public function paginationResult($page)
        {
            global $config;
             $sql_count="SELECT FOUND_ROWS() as total";

             if ($rc=dbPdoQuery($sql_count)) {
                if(count($row = dbPdoFetch($rc))>0)
                {
                    $total=ceil($row["total"] /$config['resultsperpage']);
                    $this->resp->paginationresult=array("total"=>$total,"page"=>$page);
                }
            
            } 
        }



}



 ?>