UserController_back.php 11.7 KB
<?php namespace App\Http\Controllers;

use Auth;
use Input;
use Session;
use Mail;
use Hash;
use Config;
use Response;
use App\Models\User;
use App\Models\Role;
use App\Jobs\KFriendLib;
use App\Jobs\KFileLib;
use App\Jobs\KHRMSLib;

class UserController extends Controller {


	public function __construct()
	{
	  $this->middleware('auth');
	 // $this->middleware('module_access');
	}

	public function index()
	{
		$data=array();

		$search=Input::get('search');

		if($search!="")$data['userlist']=User::where("username","like","%$search%")->orderBy("created_at","DESC")->paginate(30);
		else $data['userlist']=User::orderBy("created_at","DESC")->paginate(30);

	  return view('layout.module.user.index',$data);
	}
	public function create()
	{
		return view('layout.module.user.create');
	}
	public function store()
	{
		$action=Input::get("action","");
		if($action=="userbusyfile")
		{
			$user=User::find(Input::get('user'));
			$file=Input::file('busyfile');
			if($file->getClientOriginalExtension()=="wav")
			{
				$timev=0;
				$time = exec("ffmpeg -i '".$file->getRealPath()."' 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");
				$timep=explode(":",$time);
				if(sizeof($timep)==3)$timev=($timep[0]*60*60)+($timep[1]*60)+$timep[2];
			
				if($timev>=4)
				{
					$kfile=new KFileLib();
					$kfile->saveFileToDisk($user->id."/"."userbusyfile.wav",$file->getRealPath(),$file->getMimeType());
					exec("sox '".storage_path("app/".$user->id."/"."userbusyfile.wav")."' ".storage_path("app/".$user->id."/"."userbusyfile.gsm"));
					unlink(storage_path("app/".$user->id."/"."userbusyfile.wav"));
					
					$data=json_decode($user->data,true);
					$data['userbusyfile']=$timev;
					$user->data=json_encode($data);
					$user->save();
					
					return "<script>parent.simpleNotification('success','topRight','Saved');</script>";
				}
				else return "<script>parent.simpleNotification('error','topRight','Length has to be more then 4 seconds');</script>";
			}
			else return "<script>parent.simpleNotification('error','topRight','Only wav files supported');</script>";
		}

	
		$userdata=array();
		$userdata["username"]=Input::get("username");
		$userdata["password"]=Input::get("password");
		$userdata["email"]=Input::get("email");
		$userdata["userstatus"]=Input::get("userstatus");
		$userdata["usertype"]=Input::get("usertype");
		$userdata["usergroup"]=Input::get("usergroup");
		$userdata["fullname"]=Input::get("fullname");
		$userdata["source"]="User:".Auth::user()->id;
		$userdata["uservoice"]="Active";
	
		$passcheck=Auth::user()->checkPassword($userdata["password"]);
		if(!preg_match("/^[a-zA-Z0-9_.-]*@[a-zA-Z0-9-]*\.[a-zA-Z0-9-.]*$/", $userdata["email"]))
		{
			return Response::make("Error : Invalid Email ID");
		}
		if(User::where("username","=",$userdata["username"])->first())
		{
			return Response::make("Error : User Already Exists");
		}
		if(!preg_match('/^[a-zA-Z0-9@_.-]+$/', $userdata["username"]))
		{
			return Response::make("Error : Invalid UserName");
		}
		if($passcheck!="")
		{
			return Response::make("Error : $passcheck");
		}

		$user=$this->createUser($userdata);
		if(!$user)
		{
			return Response::make("Error : Failed");
		}

		$frnd=new KFriendLib();
		$frnd->follow($user->id,Auth::user()->id);
		
		// //dont send for now.. some admins dont want name like api users
		// Mail::send('emails.welcomeuser', array('org'=>Auth::user()->dispname(),'user'=>$user->username,'pass'=>$userdata["password"],'url'=>URL::to("/")), function($message) use ($userdata)
		// {
		// 	$message->to($userdata["username"], $userdata["username"])->subject("Welcome to ".Config::get("app.name")."!");
		// });
		
		return Response::make($user->id);
	}
	public function show($id)
	{
	  return view('layout.module.user.edit',array('tuser'=>User::find($id)));
	}
	public function edit($id)
	{
	  return view('layout.module.user.edit',array('tuser'=>User::find($id)));
	}
	public function update($id)
	{
		$user=User::find($id);
		if($user)
		{
			$userdata=array();
			
			$userdata["password"]=Input::get("password");
			$userdata["email"]=Input::get("email");
			$userdata["userstatus"]=Input::get("userstatus");
			$userdata["usergroup"]=Input::get("usergroup");//Input::get("organization");
			$userdata["usertype"]=Input::get("usertype");
			$userdata["lteam"]=Input::get("lteam");
			$userdata["lteam2"]=Input::get("lteam2");
			$userdata["supervisor"]=Input::get("supervisor");
			$userdata["fullname"]=Input::get("fullname");
			$userdata["exten"]=Input::get("exten");
			$userdata["uservoice"]="Active";

			$userdata["doj"]=Input::get("doj");
			$userdata["level"]=Input::get("level");
			$userdata["department"]=Input::get("department");
			$userdata["function"]=Input::get("function");
			$userdata["domainid"]=Input::get("domainid");
			$userdata["entity"]=Input::get("entity");
			$userdata["category"]=Input::get("category");
			$userdata["country"]=Input::get("country");
			$userdata["location"]=Input::get("location");
			$userdata["sublocation"]=Input::get("sublocation");
			$userdata["section"]=Input::get("section");
			$userdata["lob"]=Input::get("lob");
			$userdata["gender"]=Input::get("gender");
			$userdata["subscriptioncredits"]=Input::get("subscriptioncredits");

			$userdata["clientslist"]=Input::get("clientslist");
			$userdata["clientsownerlist"]=Input::get("clientsownerlist");
			$userdata["roclientsownerlist"]=Input::get("roclientsownerlist");
			$userdata["readotherdata"]=Input::get("readotherdata");
			$userdata["accclientsownerlist"]=Input::get("accclientsownerlist");
			$userdata["recclientsownerlist"]=Input::get("recclientsownerlist");
			$userdata["bdmclientsownerlist"]=Input::get("bdmclientsownerlist");
		
			if($userdata["password"]!="")
			{
				$passcheck=$user->checkPassword($userdata["password"]);
				if($passcheck!="")
				{
					return view('layout.module.user.edit',array('tuser'=>$user,'displaymsg'=>array("type"=>"error","text"=>$passcheck)));
				}
			}
		
			$user=$this->updateUser($user,$userdata);
			return view('layout.module.user.edit',array('tuser'=>$user,'displaymsg'=>array("type"=>"success","text"=>"User Updated")));
		}
		else
		{
			return Response::make("F");
		}
	}
	public function destroy($id)
	{
		$user=User::find($id);
		if($user)
		{
			$user=$this->deleteUser($user);
			
			return "User Disabled";
		}
		else return "F";
	}

	public function createUser($userdata)
	{
		if(!isset($userdata["username"]))$userdata["username"]="";
		if(!isset($userdata["password"]))$userdata["password"]="";
		if(!isset($userdata["email"]))$userdata["email"]="";
		if(!isset($userdata["userstatus"]))$userdata["userstatus"]="";
		if(!isset($userdata["usergroup"]))$userdata["usergroup"]="";
		if(!isset($userdata["usertype"]))$userdata["usertype"]="";
		if(!isset($userdata["source"]))$userdata["source"]="";
		if(!isset($userdata["fullname"]))$userdata["fullname"]="";
		if(!isset($userdata["uservoice"]))$userdata["uservoice"]="";
		
		if(!empty($userdata["username"])&&User::where("username","=",$userdata["username"])->first())return false;

		$user=new User();

		$user->username=$userdata["username"];
		if($userdata["password"]!="")$user->password=Hash::make($userdata["password"]);
		$user->email=$userdata["email"];
		$user->status=$userdata["userstatus"];
		$user->usertype=$userdata["usertype"];
		$user->organization=$userdata["usergroup"];
		$user->group=$userdata["usergroup"];
		$user->fullname=$userdata["fullname"];
		$user->source=$userdata["source"];

		$data["uservoice"]=$userdata["uservoice"];

		$data['personal']=array();
		$nameparts=explode(" ",$userdata["fullname"]);
		$data['personal']['fname']=$nameparts[0];
		if(!empty($nameparts[1]))$data['personal']['lname']=$nameparts[1];
		$data['personal']['gender']='';
		
		$user->data=json_encode($data);
		$user->meta=json_encode(array());

		$user->save();
		
		$user=$this->updateUser($user,$userdata);
		
		return $user;
	}
	public function updateUser($user,$userdata)
	{
		$clientsownerlist = '';
		$data=json_decode($user->data,true);

		//skip update username
		if(isset($userdata["password"])&&$userdata["password"]!="")$user->password=Hash::make($userdata["password"]);
		if(isset($userdata["email"]))$user->email=$userdata["email"];
		if(isset($userdata["userstatus"]))$user->status=$userdata["userstatus"];
		if(isset($userdata["usergroup"]))$user->organization=$userdata["usergroup"];
		if(isset($userdata["usertype"]))$user->usertype=$userdata["usertype"];
		if(isset($userdata["usergroup"]))$user->group=$userdata["usergroup"];
		
		$user->presence=0;
		
		if(isset($userdata["lteam"]))$user->lteam=$userdata["lteam"];
		if(isset($userdata["lteam2"]))$user->lteam2=$userdata["lteam2"];
		if(isset($userdata["supervisor"]))$user->supervisor=$userdata["supervisor"];
		if(isset($userdata["fullname"]))$user->fullname=$userdata["fullname"];
		if(isset($userdata["exten"]))$user->exten=$userdata["exten"];

		if(isset($userdata["uservoice"]))$data["uservoice"]=$userdata["uservoice"];

		if(empty($data['personal']))$data['personal']=array();
		$nameparts=explode(" ",$userdata["fullname"]);
		$data['personal']['fname']=$nameparts[0];
		if(isset($nameparts[1]))$data['personal']['lname']=$nameparts[1];
		
		if(isset($userdata["doj"]))$data['personal']['doj']=$userdata["doj"];
		if(isset($userdata["level"]))$data['personal']['level']=$userdata["level"];
		if(isset($userdata["department"]))$data['personal']['department']=$userdata["department"];
		if(isset($userdata["function"]))$data['personal']['function']=$userdata["function"];
		if(isset($userdata["domainid"]))$data['personal']['domainid']=$userdata["domainid"];
		if(isset($userdata["entity"]))$data['personal']['entity']=$userdata["entity"];
		if(isset($userdata["category"]))$data['personal']['category']=$userdata["category"];
		if(isset($userdata["country"]))$data['personal']['country']=$userdata["country"];
		if(isset($userdata["location"]))$data['personal']['location']=$userdata["location"];
		if(isset($userdata["sublocation"]))$data['personal']['sublocation']=$userdata["sublocation"];
		if(isset($userdata["section"]))$data['personal']['section']=$userdata["section"];
		if(isset($userdata["lob"]))$data['personal']['lob']=$userdata["lob"];
		if(isset($userdata["gender"]))$data['personal']['gender']=$userdata["gender"];
		if(isset($userdata["subscriptioncredits"]))$data['subscriptioncredits']=$userdata["subscriptioncredits"];

		$bbb=unserialize($user->dataval('hrmsdata'));
		if(isset($userdata["clientslist"]))$bbb['clientslist']=$userdata["clientslist"];
		if(isset($userdata["clientsownerlist"]))
		{
			$bbb['clientsownerlist']=$userdata["clientsownerlist"];
			$clientsownerlist = $userdata["clientsownerlist"];
		}
		if(isset($userdata["roclientsownerlist"]))$bbb['roclientsownerlist']=$userdata["roclientsownerlist"];
		if(isset($userdata["readotherdata"]))$bbb['readotherdata']=$userdata["readotherdata"];
		if(isset($userdata["accclientsownerlist"]))$bbb['accclientsownerlist']=$userdata["accclientsownerlist"];
		if(isset($userdata["recclientsownerlist"]))$bbb['recclientsownerlist']=$userdata["recclientsownerlist"];
		if(isset($userdata["bdmclientsownerlist"]))$bbb['bdmclientsownerlist']=$userdata["bdmclientsownerlist"];
		$data['hrmsdata']=serialize($bbb);
		
		$user->clients = $clientsownerlist;
		$user->data=json_encode($data);
		
		$meta=$user->meta();
		$meta['pwd_array']=array();$meta['pwd_array'][date('Ymd')]=0;
		$meta['otp_array']=array();$meta['otp_array'][date('Ymd')]=0;
		$user->meta=json_encode($meta);

		$user->save();
		
		return $user;
	}
	public function deleteUser($user)
	{
		$user->status="Disabled";
		$user->save();
		
		return $user;
	}
	
	public function dashboard()
	{
		//echo "OK";
	}

	 public function userUpload()
        {
		$data=array();
                $data['wakka'] = new KHRMSLib();

		$data['file'] = Input::file('useruploadfile');

		return view("layout.module.userupload.useruploaddata",$data);
        }


}