UserController.php 12.9 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["is_qcuser"] = Input::get("is_qcuser");
			$userdata["fullname"] = Input::get("fullname");
			$userdata["exten"] = Input::get("exten");
			$userdata["phone"] = Input::get("phone");
			$userdata["campaign"] = Input::get("campaign");
			$userdata["sessiontype"]=Input::get("sessiontype");
			$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["full_extension"] = Input::get("full_extension");
			$userdata["section"] = Input::get("section");
			$userdata["lob"] = Input::get("lob");
			$userdata["gender"] = Input::get("gender");
			$userdata["subscriptioncredits"] = Input::get("subscriptioncredits");
			$userdata["childserverusers"] = Input::get("childserverusers");

			$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->timezone = "-330";
		$user->data = json_encode($data);
		$user->meta = json_encode(array());

		$user->save();

		$user = $this->updateUser($user, $userdata);

		return $user;
	}
	public function updateUser($user, $userdata)
	{
		$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["is_qcuser"])) $user->is_qcuser = $userdata["is_qcuser"];
		if (isset($userdata["fullname"])) $user->fullname = $userdata["fullname"];
		if (isset($userdata["exten"])) $user->exten = $userdata["exten"];

		if (isset($userdata["phone"])) $user->phone = $userdata["phone"];
		if (isset($userdata["campaign"])) $user->campaign = $userdata["campaign"];
		if (isset($userdata["sessiontype"])) $user->sessiontype = $userdata["sessiontype"];

		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["full_extension"])) $data['personal']['full_extension'] = $userdata["full_extension"];
		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"];
		if (isset($userdata["childserverusers"])) $data['childserverusers'] = $userdata["childserverusers"];

		$bbb = unserialize($user->dataval('hrmsdata'));
		if (isset($userdata["clientslist"])) $bbb['clientslist'] = $userdata["clientslist"];
		if (isset($userdata["clientsownerlist"])) $bbb['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->timezone = "-330";
		$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);
	}
	public function importExcel()
	{
		return view("layout.module.userupload.importexcel");
	}
	public function getImportExcelFormat()
	{
		return view("layout.module.userupload.importexcel", ['format' => 'dataUpload']);
	}
}