workflowsubmit.blade.php 10.2 KB
<?php
$themehome=$wakka->GetThemePath('/');
$from='';
if($wakka->GetUser())$from=$wakka->GetUserName();else $from= "System";

function mkdir_r ($dir)
{
  if (strlen($dir) == 0)return 0;
  if (is_dir($dir))return 1;
  elseif (dirname($dir) == $dir)return 1;
  return (mkdir_r(dirname($dir)) and mkdir($dir,0777));
}

$usertime=time();

$message="";
$success="";

if(isset($_POST['ftaskbulkupload']))
{
  include_once(app_path().'/lib/phpexcel/PHPExcel.php');
  $inputFileType = "Excel5";
  $objReader = PHPExcel_IOFactory::createReader($inputFileType);
  $objPHPExcel = $objReader->load($_FILES['taskbulkupload']['tmp_name']);
  $objWorksheet = $objPHPExcel->getActiveSheet();
  $highestColumn = PHPExcel_Cell::columnIndexFromString($objPHPExcel->getActiveSheet()->getHighestColumn());
  $highestrow=$objPHPExcel->getActiveSheet()->getHighestRow();

  for($i=2;$i<=$highestrow;$i++)
  {
    $wakkarow=array();
    for ($head = 0; $head < $highestColumn; $head++)
      $wakkarow[PHPExcel_Cell::stringFromColumnIndex($head)]=$wakka->safeString(str_replace('\n',"<br>",$wakka->sqlescape($objWorksheet->getCellByColumnAndRow($head, $i)->getValue())));
    if($wakkarow["A"]>100)
    {
      if($wakkarow["G"]<10)$wakkarow["G"]="0".$wakkarow["G"];
      if($wakkarow["H"]<10)$wakkarow["H"]="0".$wakkarow["H"];
      $tendtime=$wakkarow["F"]."-".$wakkarow["G"]."-".$wakkarow["H"]." 20:00:00";
    
    
      if(\App\Models\User::where('username','=',$wakkarow['D'])->count()<1) {$message.= "Invalid UserName : ".$wakkarow["D"].",";}
      else if(time()-strtotime($tendtime)>0&&$wakkarow["E"]!="") {$message.= "End Time Should be in future : ".$tendtime.",";}
      else 
      {
	$olddata=$wakka->LoadSingle("select * from hrms_tasks where id='".$wakkarow["A"]."'");
	
	$olddata['remarks']=$wakka->safeString($olddata['remarks']);
	if($olddata['accepted']=="0000-00-00 00:00:00"||trim($olddata['accepted'])=='')$olddata['accepted']=date("Y-m-d H:i:s");
	
	if($wakkarow["E"]!="")$remarks=$olddata['remarks']."<br>[".date('Y-m-d_H')."][".$wakka->GetUserName()."]: ".$wakkarow["E"];
	else $remarks=$olddata['remarks'];
	
	$wakka->Query("update hrms_tasks set username='".$wakkarow["D"]."',remarks='$remarks',endtime='".$tendtime."',accepted='".$olddata['accepted']."' where id='".$wakkarow["A"]."' and (username='".$wakka->GetUserName()."' or (username='' and escalation2 like '%".$wakka->GetUserName()."%'))");
	
	$tasks=$wakka->LoadSingle("select * from hrms_tasks where id='".$wakkarow["A"]."'");

	//echo $olddata['accepted'];
	
	if($wakkarow["E"]=="DONE")$wakka->Query("update hrms_tasks set status='DONE',completed='".date("Y-m-d H:i:s", $usertime)."' where id='".$wakkarow["A"]."' and (username='".$wakka->GetUserName()."' or (username='' and escalation2 like '%".$wakka->GetUserName()."%'))");
      }

      for ($head = 0; $head < $highestColumn; $head++)
	unset($wakkarow[PHPExcel_Cell::stringFromColumnIndex($head)]);
    }
    else if($wakkarow["A"]!="")$message.= "Invalid ID : ".$wakkarow["A"].",";
  }
  @unlink($_FILES['taskbulkupload']);
  $success="Data Uploaded";
}
else if(isset($_GET["dlwip"])&&$wakka->GetUser())
{
  include_once(app_path().'/lib/phpexcel/PHPExcel.php');

  $mytaskfilter=$_GET['mytaskfilter'];
  if($mytaskfilter=='undefined')$mytaskfilter="";
  
  $filters=str_replace(" ","|",$mytaskfilter);
  if($_GET["mytaskfilter"]!="")$filterstr=" and (name REGEXP '$filters' or remarks REGEXP '$filters' or creatorid REGEXP '$filters' or endtime REGEXP '$filters' or username REGEXP '$filters') ";

  $tasksarr=$wakka->LoadAll("select * from hrms_tasks where status not in ('DONE','REJECT','UNSET','Cancel') and (username='$from' or (username='' and escalation2 like '%$from%')) $filterstr order by empid,endtime");

  $inputFileType = "Excel5";
  $objReader = PHPExcel_IOFactory::createReader($inputFileType);
  $objPHPExcel = $objReader->load("$themehome/uploads/sreports/blank.xls");
  $baseRow = 3;
  $highestColumn = 0;

  $baserowArr=array();
  $baserowArr[$highestColumn++]="id";
  $baserowArr[$highestColumn++]="creatorid";
  $baserowArr[$highestColumn++]="name";
  $baserowArr[$highestColumn++]="username";
  $baserowArr[$highestColumn++]="remarks";
  $baserowArr[$highestColumn++]="endtime";
  foreach($baserowArr as $key => $val)
  {
    $colstr=PHPExcel_Cell::stringFromColumnIndex($key);
    $objPHPExcel->getActiveSheet()->setCellValue($colstr."1", $val);
    
    if($val=='endtime')
    {
      $colstr=PHPExcel_Cell::stringFromColumnIndex($key);$objPHPExcel->getActiveSheet()->setCellValue($colstr."2", "Year");
      $colstr=PHPExcel_Cell::stringFromColumnIndex($key+1);$objPHPExcel->getActiveSheet()->setCellValue($colstr."2", "Month");
      $colstr=PHPExcel_Cell::stringFromColumnIndex($key+2);$objPHPExcel->getActiveSheet()->setCellValue($colstr."2", "Date");
      
      $colstr=PHPExcel_Cell::stringFromColumnIndex($key+3);$objPHPExcel->getActiveSheet()->setCellValue($colstr."1", "Old Remarks");//old remarks
    }
  }

  foreach($tasksarr as $r => $userdata)
  {
    $row = $baseRow + $r;
    $remarks=$userdata["remarks"];
    foreach($baserowArr as $key => $val)
    {
      if($val=='remarks')$userdata[$val]="";

      if($val!='endtime') {$colstr=PHPExcel_Cell::stringFromColumnIndex($key);$objPHPExcel->getActiveSheet()->setCellValue($colstr.$row, $userdata[$val]);}
      else //NOTE careful this can only be at the last column
      {
	$dtparts=explode(" ",$userdata[$val]);
	$dateparts=explode("-",$dtparts[0]);
	$colstr=PHPExcel_Cell::stringFromColumnIndex($key);$objPHPExcel->getActiveSheet()->setCellValue($colstr.$row, $dateparts[0]);
	$colstr=PHPExcel_Cell::stringFromColumnIndex($key+1);$objPHPExcel->getActiveSheet()->setCellValue($colstr.$row, $dateparts[1]);
	$colstr=PHPExcel_Cell::stringFromColumnIndex($key+2);$objPHPExcel->getActiveSheet()->setCellValue($colstr.$row, $dateparts[2]);
	
	$colstr=PHPExcel_Cell::stringFromColumnIndex($key+3);$objPHPExcel->getActiveSheet()->setCellValue($colstr.$row, str_replace("<br>","\n",$remarks));$objPHPExcel->getActiveSheet()->getStyle($colstr.$row)->getAlignment()->setWrapText(true);
      }
    }
  }

  header('Content-Type: application/vnd.ms-excel');
  header('Content-Disposition: attachment;filename="WIP_'.$from.'.xls"');
  header('Cache-Control: max-age=0');

  $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $inputFileType);
  $objWriter->save('php://output');
  return;
}
else if(isset($_POST["addtask"]))
{
  $varid='';
  $name = $wakka->safeString(Input::get('name'));
  $duration = explode(".",Input::get('duration'));
  $time = Input::get('time');
  $assignto = Input::get('assignto');
  $remarks = $wakka->safeString(Input::get('remarks'));
  
  if(isset($_POST['selfservice']))
  {
    $varid=Input::get("selfservice");
    $empdata=$wakka->getPerson($varid);
    $ppldata=$empdata['peopledata'];

    $duration=date('d').".".date('m').".".date('Y');
    $time='20';
    $name=$varid." SELFSERVE ".$name." [".$ppldata['firstname']."]";

    $unameslist=$wakka->getUserListforClient($ppldata['client']).",".$wakka->HRCoreVars["selfservicecc"];

    $assignto='';
    $from="[$varid] ".$ppldata["firstname"];
  }
  else if(isset($_POST['proempid']))
  {
    $varid=Input::get("proempid");
    $empdata=$wakka->getPerson($varid);
    $ppldata=$empdata['peopledata'];

    if($name!="")$name=$varid." PROTASK ".$name." [".$_POST['empname']."]";
    $remarks="Client: ".$ppldata["client"]." ".$remarks;
  }
  
  $attach = $_FILES['attach']['name'];
  $role = Input::get('role');
  $timezone= Input::get('timezone');

  if(sizeof($duration)==3)$duration=mktime($time, 0, 0, $duration[1], $duration[0], $duration[2]);
  else $duration=time();
  
  $durationSQL=date("Y-m-d H:i:s", $duration);

  $usertime=time();
  
  $strippedname = str_replace(array('\'',' '), '',$attach);
  $strippedname = stripslashes($strippedname);
  $destfile = "$themehome/uploads/$assignto/$strippedname";
  if (!is_dir("$themehome/uploads/$assignto"))mkdir_r("$themehome/uploads/$assignto");

  if(!empty($_FILES['attach']['name'])&&!move_uploaded_file($_FILES['attach']['tmp_name'], $destfile))$message="File cannot be uploaded : ".$_FILES['attach']['error'];
  else if(strlen($name) < 5)$message="Please Fill Task Name (more then 5 letters)";
  else if(sizeof($assignto) == 0&&!isset($_POST['selfservice']))$message="Please Assign task";
  else if($duration<($usertime+(1*60*60)))$message="End time cannot be less then one hour from Now";
  else if(strlen($remarks)<10)$message="Please provide detailed remarks/description";
  else
  {
    $dtask=$wakka->LoadSingle("select * from hrms_tasks where name='$name' and status in ('NEW','WIP')");
    if(empty($dtask))
    {
      if(is_array($assignto))foreach($assignto as $assigniee)
      {
	$wakka->Query("INSERT INTO hrms_tasks set name='$name',username='$assigniee',attachment='$strippedname',endtime='$durationSQL',status='NEW',remarks='$remarks',creatorid='$from',created_at=now(),escalation2='$unameslist',empid='$varid'");
	$wakka->sendPopUpUserAlert('system',$assigniee,"New Task Created for you by [$from]",$name." : ".$remarks);
      }
      else 
      {
	$remarks=str_replace("\n","<br>",$remarks);
	$wakka->Query("INSERT INTO hrms_tasks set name='$name',username='',attachment='$strippedname',endtime='$durationSQL',status='NEW',remarks='$remarks',creatorid='$from',created_at=now(),escalation2='$unameslist',empid='$varid'");

	$users=explode(",",$unameslist);
	foreach($users as $user)if(trim($user)!="")$wakka->sendPopUpUserAlert('system',$user,"New SelfService Task from Employee [$from]",$name." : ".$remarks);
      }

      $success="Task Created.";
      //if(!isset($_POST['proempid']))echo $wakka->alertMail($from,$assignto,'TaskCreated',$name." : ".$remarks);
    }
    else
    {
      $message="Duplicate Task. Already exists (User: [$dtask[username]] From [$dtask[creatorid]])";
    }
  }
  @unlink($_FILES['attach']);
}
?>
<script>
var data='';
data+="<?php if($success!="")echo "<div class='message success close'><h2>Success!</h2><p>$success</p></div>"; ?>";
data+="<?php if($message!="")echo "<div class='message error close'><h2>Error!</h2><p>$message</p></div>"; ?>";
if(parent.document.getElementById("wresults"))parent.document.getElementById("wresults").innerHTML = data;
else if(document.getElementById("wresults"))document.getElementById("wresults").innerHTML = data;
else parent.document.location='Tasks';
parent.messageCloseFun();
</script>