<?php
include_once('./includes.php');
include('session.php');
if(isset($_REQUEST['task_id']) && $_REQUEST['task_id']!="")
{
	$permission_number=EDIT_TASK_PERM;
}
else
{
	$permission_number=ADD_TASK_PERM;
}
include('admin_session.php');
$projectObj		= (object) new projects(); // create object of projects class

if(isset($_REQUEST['task_id']) && $_REQUEST['task_id']!=""){
	include('project_permissioncheck.php');
}
//printR($_POST);
$errorFlag=0;

//$projectUsers = $projectObj->projectUsers($project_id);

$returnRes = array();
if(isset($_POST['addtask']) && $_POST['addtask']!="")
{
	require "requires/classes/gump.class.php";
	$validator = new GUMP();
	
	if(isset($_REQUEST['task_id']) && $_REQUEST['task_id']!=""){
	
		$is_valid = GUMP::is_valid($_POST, array(
		'project_id' => 'required',
		'task_title' => 'required',
		'tasklist_id' => 'required'
		));
	}
	else
	{
		$is_valid = GUMP::is_valid($_POST, array(
		'project_id' => 'required',
		'task_title' => 'required',
		'tasklist_id' => 'required'
		));
	}
	
	if($is_valid === true)
	{
		if(isset($_REQUEST['task_id']) && $_REQUEST['task_id']!=""){
		}
		else
		{
		$project_id 							= trim($_POST['project_id']);
		$projectInfo				= $projectObj->projectInfo($project_id);
		}
		
		$task_title 								= filter_var($_POST['task_title'], FILTER_SANITIZE_STRING);
		$task_description 				= trim($_POST['task_description']);
		$task_time_hours 				= filter_var($_POST['task_time_hours'], FILTER_SANITIZE_NUMBER_INT);
		$task_time_minutes 			= filter_var($_POST['task_time_minutes'], FILTER_SANITIZE_NUMBER_INT);
		$task_start_date 					= trim($_POST['task_start_date']);
		$task_end_date 					= trim($_POST['task_end_date']);
		$tasklist_id 							= trim($_POST['tasklist_id']);
		$task_priority 							= trim($_POST['task_priority']);
		
		$remback 							= trim($_POST['remback']);
		//$taskusers 							= filter_var($_POST['taskusers'], FILTER_SANITIZE_STRING);
		$assignArray = $_REQUEST['assign_array'];
		
		
		if(isset($_REQUEST['task_id']) && $_REQUEST['task_id']!=""){}
		else
		{
			if($task_time_hours<=0 && $task_time_minutes<=0)
			{
				$errorFlag=1;
				$errorList[]="Please enter the timeframe";			
			}
		}
		
		
			if($tasklist_id=='addnew')
			{	
				$client_valid = GUMP::is_valid($_POST, array(
				'tasklist_title' => 'required'
				));
				if($client_valid === true)
				{
					$tasklist_title 						= filter_var($_POST['tasklist_title'], FILTER_SANITIZE_STRING);
				
					if($dbClass->checkEntryExist('tasklists',"tasklist_title=? and project_id=?",array(trim($tasklist_title),$project_id)))
					{
						$errorFlag=1;
						$errorList[]="Tasklist title already exists. Please try another one.";			
					}
				}
				else
				{	
					$errorFlag=1;
					$errorList = $client_valid;
				}
			}
		
		
		if(isset($_REQUEST['task_id']) && $_REQUEST['task_id']!="")
		{
			$task_id	= $url->decode($_REQUEST['task_id']);
			
			$projectTotMinutes = $projectInfo['expected_hours']*60;
			$TaskTotalMinutes = $projectObj->TotalTaskhourinMinutesexceptone($project_id,$task_id);
			$currentTaskMinutes = ($task_time_hours*60)+$task_time_minutes;
			
			$TaskTotalMinutes = $TaskTotalMinutes+$currentTaskMinutes;
			if($TaskTotalMinutes>$projectTotMinutes)
			{
				$errorFlag=1;
				$errorList[]="Total task hours cannot exceed ".$projectInfo['expected_hours'];			
			}
		}
		else
		{
			$projectTotMinutes = $projectInfo['expected_hours']*60;
			$TaskTotalMinutes = $projectObj->TotalTaskhourinMinutes($project_id);
			$currentTaskMinutes = ($task_time_hours*60)+$task_time_minutes;
			
			$TaskTotalMinutes = $TaskTotalMinutes+$currentTaskMinutes;
			if($TaskTotalMinutes>$projectTotMinutes)
			{
				$errorFlag=1;
				$errorList[]="Total task hours cannot exceed ".$projectInfo['expected_hours'];			
			}
		}
		if($errorFlag=='0')
		{
			if($tasklist_id=='addnew')
			{
				$insertList = array();
				$insertList['tasklist_title']				= $tasklist_title;
				$insertList['project_id']					= $project_id;
				$insertList['list_added_by']			=$_SESSION['MCRMUserId'];
				$insertList['list_added_date']		= date('Y-m-d');
				$tasklist_id = $dbClass->prepareInsertStatement("tasklists", $insertList);
			}
			
			$insertInfo												= array();
			$insertInfo['project_id']						=	$project_id;
			$insertInfo['task_title']						=	encryptInsert($task_title);				
			$insertInfo['task_description']			=	encryptInsert($task_description);	
			$insertInfo['task_start_date']			=	$task_start_date;
			$insertInfo['task_end_date']				=	$task_end_date;		
			$insertInfo['tasklist_id']						=	$tasklist_id;
			$insertInfo['last_updated_date']		=	date('Y-m-d');
			$insertInfo['task_priority']					=	$task_priority;

				
			if(isset($_REQUEST['task_id']) && $_REQUEST['task_id']!="")
			{
				$insertInfo['task_time_hours']			=	$task_time_hours;
				$insertInfo['task_time_minutes']		=	$task_time_minutes;
			
				$task_status_id 								= trim($_POST['task_status_id']);
				$insertInfo['task_status_id']				=	$task_status_id;
				
				if($remback=='1')
				{
					$insertInfo['backlog_stat']				=	'0';
				}
				
				$task_id	 											= $url->decode($_REQUEST['task_id']);
				
				if($task_status_id==TASK_COMPLETED_STATUS || $task_status_id==TASK_CANCELLED_STATUS)
				{
					$projectObj->userTaskStatus($task_id,$task_status_id);
				}
				
				$dbClass->prepareUpdateStatement('task', $insertInfo, 'task_id=?',array($task_id));
				$updateTaskUser = array();
				$updateTaskUser['task_user_status']	 	= $task_status_id;
				if($remback=='1')
				{
					$updateTaskUser['user_backlog_stat']				=	'0';
				}
				$dbClass->prepareUpdateStatement('task_users', $updateTaskUser, 'task_id=?',array($task_id));
								
				//update task user status
				
				
				/*$taskUsrArr = array();
				$taskUsers = $projectObj->getTaskusers($task_id);
				if(count($taskUsers)>0)
				{
					foreach($taskUsers as $pu)
					{
						$taskUsrArr[] = $pu['task_user_id'];
					}
				}

				if(count($projectUsers)>0)
				{
					foreach($projectUsers as $userVal)
					{
						$userId = $userVal['user_id'];
						if($assignArray[$userId]=='1')
						{
							if(in_array($userId,$taskUsrArr))
							{
								$updateTaskUser = array();
								$updateTaskUser['task_user_status']	 	= $task_status_id;
								$dbClass->prepareUpdateStatement('task_users', $updateTaskUser, 'task_id=? and task_user_id=?',array($task_id,$userId));
							}
							else
							{
								$insertTaskUser = array();
								$insertTaskUser['task_id']	 					= $task_id;
								$insertTaskUser['task_user_id']	 			= $userId;
								$insertTaskUser['task_user_status']	 	= $task_status_id;
								$dbClass->prepareInsertStatement("task_users", $insertTaskUser);
							}
						}
						else
						{
							if(in_array($userId,$taskUsrArr))
							{
								$dbClass->prepareDeleteStatement('task_users',"task_id=? and task_user_id=?",array($task_id,$userId));
							}
						}
					}
				}*/
				
				$projectObj->insertActivity($project_id,'updated',$task_id,'task');
				
				
				
				$successmsg = "Task details updated successfully";
				//include('success.php');
				$returnRes['status'] = 1;
				$returnRes['msg'] =successMsg($successmsg);
			}
			else
			{
				$insertInfo['task_time_hours']			=	$task_time_hours;
				$insertInfo['task_time_minutes']		=	$task_time_minutes;
			
				$insertInfo['task_added_by']			=	$_SESSION['MCRMUserId'];
				$insertInfo['task_status_id']				=	TASK_TODO_STATUS;
				$insertInfo['task_added_date']		=	date('Y-m-d');
				$task_id = $dbClass->prepareInsertStatement("task", $insertInfo);
				
				if(count($assignArray)>0)
				{
					for($c=0;$c<count($assignArray);$c++)
					{
						if($assignArray[$c]!="")
						{
							$userId = $assignArray[$c];
							$insertTaskUser = array();
							$insertTaskUser['task_id']	 			= $task_id;
							$insertTaskUser['task_user_id']	 		= $userId;
							$insertTaskUser['task_user_status']	 	= TASK_TODO_STATUS;
							$dbClass->prepareInsertStatement("task_users", $insertTaskUser);
							
							$projectObj->sendFlockMessage($userId,'addtask',$task_id);
							
							$title								=	'ADD_TASK';
							$resContent					=	$dbClass->getTableRecordSingle('autoresponse',"response_title=?",array($title));
									
							$subject							=_output($resContent['response_subject']);
							
							$logo								=  $url->urlImageBase."pmslogo.png";
							$picon								=  $url->urlImageBase."ic-p.png";
							$projectName				= $projectObj->projectName($project_id);
							$tasklink							= $url->urlBase.'task_details.php?task_id='.$url->encode($task_id).'&project_id='.$url->encode($project_id);
							
							$touserInfo 						= $dbClass->getRequiredFieldsSingle('users','user_id=?',array($userId),'email,name');
	
							$toEmail								= $touserInfo['email'];
							$toUserName					= $touserInfo['name'];
							
							$content        					= 	_output($resContent['response_content']);
							$content							=	str_replace('{--siteurl--}',$configDetails['siteUrl'],$content);
							$content							=	str_replace('{--logo--}',$logo,$content);
							$content							=	str_replace('{--picon--}',$picon,$content);
							$content							=	str_replace('{--addedby--}',stripslashes($_SESSION['MCRMUserName']),$content);
							$content							=	str_replace('{--taskname--}',stripslashes($task_title),$content);
							$content							=	str_replace('{--projectname--}',stripslashes($projectName),$content);
							$content							=	str_replace('{--tasklink--}',$tasklink,$content);
							$content							=	str_replace('{--name--}',$toUserName,$content);
							$content							=	str_replace('{--fromemail--}',stripslashes($configDetails['fromEmail']),$content);

							include('send_mail.php');
						
						}
					}
				}

				
				$projectObj->insertActivity($project_id,'added',$task_id,'task');
				
				
				
				
				$successmsg = "Task added successfully";
				//include('success.php');
				$returnRes['status'] = 1;
				$returnRes['msg'] =successMsg($successmsg);
				
			}
		}
	}
	else
	{
		$errorFlag=1;
		$errorList = $is_valid;
	}
	if($errorFlag=='1')
	{
		//include('error.php');
		$returnRes['status'] = 0;
		$returnRes['msg'] =printErrors($errorList);
	}
}
header('Content-type: application/json');
echo json_encode($returnRes);
?>