266 lines
12 KiB
PHP
266 lines
12 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Requests\LambdaRequest;
|
|
use DB;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use App\Exports\InvoicesExport;
|
|
use Auth;
|
|
|
|
class HierarchyController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth');
|
|
$this->_service = 'ums';
|
|
$this->_module = 'hierarchy';
|
|
$this->_viewname = 'hierarchy';
|
|
$this->_title = 'Hierarchy';
|
|
$this->_base_url = '/hierarchy';
|
|
}
|
|
|
|
public function list(Request $request) {
|
|
$this->_request = $request;
|
|
if( in_array(Auth::user()->domain, ["crestroad"]) ) {
|
|
$response = LambdaRequest::signedrequest('get', 'catalog', 'activity/hierarchy_list',[]);
|
|
} else {
|
|
$response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all');
|
|
}
|
|
|
|
$items = [];
|
|
//echo '<pre>'; print_r($response); exit;
|
|
foreach($response->data->items as $item) {
|
|
$items[$item->parent_id][] = $item;
|
|
}
|
|
//if($response->data->me->parent_id != 'root')
|
|
|
|
$items[$response->data->me->parent_id][] = $response->data->me;
|
|
//echo '<pre>'; print_r($items); exit;
|
|
$domain = LambdaRequest::signedrequest('get', $this->_service, 'domain/get_one');
|
|
|
|
//echo '<pre>'; print_r($response); print_r($domain); exit;
|
|
$roles = $this->getlambda('get', 'ums', 'roles', 'dropdown');
|
|
$roles_dd = [];
|
|
foreach($roles->data->items as $role){
|
|
$roles_dd[$role->id] = $role->name;
|
|
}
|
|
$channels = $this->getlambda('get', 'ums', 'channel', 'dropdown');
|
|
$channels_dd = [];
|
|
foreach($channels->data->items as $channel){
|
|
$channels_dd[$channel->id] = $channel->name;
|
|
}
|
|
$users = $this->getlambda('get', 'ums', 'users', 'dropdown');
|
|
$users_dd = [];
|
|
foreach($users->data->items as $user){
|
|
$users_dd[$user->id] = $user->firstname . ' ' . $user->lastname . ' (' . $user->employee_code . ')';
|
|
}
|
|
|
|
$positions_dd = [];
|
|
// foreach($response->data->items as $item) {
|
|
// $positions_dd[$item->code] = $item->name . ' ('.$item->code.')';
|
|
// }
|
|
// asort($positions_dd);
|
|
|
|
$positions = $this->getlambda('get', 'ums', 'hierarchy', 'dropdown');
|
|
foreach($positions->data->items as $item) {
|
|
$positions_dd[$item->code] = $item->name . ' ('.$item->code.')';
|
|
}
|
|
asort($positions_dd);
|
|
// foreach($positions->data->items as $position){
|
|
// $positions_dd[$position->code] = $position->name . ' ('.$position->code.')';
|
|
// }
|
|
//echo '<pre>'; print_r($items); exit;
|
|
return $this->view('list')->with([
|
|
'title' => $this->_title,
|
|
'base_url' => $this->_base_url,
|
|
'items' => $items,
|
|
'positions' => $positions_dd,
|
|
'myid' => $response->data->me->parent_id,
|
|
'designations' => $domain->data->item->designations,
|
|
'types' => $domain->data->item->territory_types,
|
|
'roles' => $roles_dd,
|
|
'channels' => $channels_dd,
|
|
'users' => $users_dd,
|
|
]);
|
|
}
|
|
|
|
public function postaddchild(Request $request) {
|
|
$data = $request->except('_token');
|
|
$data['roles'] = [$data['roles']];
|
|
$data['channels'] = [$data['channels']];
|
|
$data['source'] = 'hierarchy';
|
|
|
|
//echo '<pre>'; print_r($data); exit;
|
|
if($data['id'] != '') {
|
|
$response = LambdaRequest::signedrequest('post', $this->_service, 'hierarchy/update', $data);
|
|
} else {
|
|
$response = LambdaRequest::signedrequest('post', $this->_service, 'hierarchy/create', $data);
|
|
}
|
|
//echo '<pre>'; print_r($response); exit;
|
|
if($response->statusCode == 200 && $response->status == "success") {
|
|
return redirect($this->_base_url.'s')->withMessage('Successfully Saved !!!');
|
|
} else {
|
|
return \Redirect::back()->withMessage('Some Error occured!');
|
|
}
|
|
}
|
|
|
|
protected function get_import_fields($records){
|
|
$domain = LambdaRequest::signedrequest('get', $this->_service, 'domain/get_one');
|
|
$designations_dd = [];
|
|
foreach($domain->data->item->designations as $designation){
|
|
$designations_dd[$designation] = $designation;
|
|
}
|
|
$types_dd = [];
|
|
foreach($domain->data->item->territory_types as $type){
|
|
$types_dd[$type] = $type;
|
|
}
|
|
$response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/dropdown');
|
|
//echo '<pre>'; print_r($types_dd); exit;
|
|
$items = [];
|
|
foreach($response->data->items as $item) {
|
|
$items[$item->code] = $item->code;
|
|
}
|
|
foreach($records as $record) {
|
|
$items[$record['code']] = $record['code'];
|
|
}
|
|
|
|
return [
|
|
'type' => ['title' => 'Type', 'type' => 'select', 'values' => $types_dd, 'required' => true],
|
|
'name' => ['title' => 'Name', 'type' => 'text'],
|
|
'code' => ['title' => 'Code', 'type' => 'text', 'required' => true],
|
|
'parent' => ['title' => 'Parent', 'type' => 'select', 'values' => $items, 'required' => true],
|
|
'designation' => ['title' => 'Designation', 'type' => 'select', 'values' => $designations_dd, 'required' => true],
|
|
'email' => ['title' => 'Email', 'type' => 'text'],
|
|
'reportee' => ['title' => 'Reportee Email', 'type' => 'text'],
|
|
'level' => ['title' => 'Level', 'type' => 'text'],
|
|
];
|
|
}
|
|
|
|
public function postmoveunder(Request $request) {
|
|
$post = $request->except('_token');
|
|
$response = LambdaRequest::signedrequest('post', $this->_service, 'hierarchy/moveposition', $post);
|
|
if($response->statusCode == 200 && $response->status == "success") {
|
|
return redirect($this->_base_url.'s')->withMessage('Successfully Saved !!!');
|
|
} else {
|
|
return \Redirect::back()->withMessage('Some Error occured!');
|
|
}
|
|
}
|
|
|
|
public function delete($id) {
|
|
$response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/update', ['id' => $id, 'parent_id' => 'vacant', 'parents' => 'vacent' ]);
|
|
//echo '<pre>'; print_r($response); exit;
|
|
if($response->statusCode == 200 && $response->status == "success") {
|
|
return redirect($this->_base_url.'s')->withMessage('Successfully Marked Deleted !!!');
|
|
} else {
|
|
return redirect($this->_base_url.'s')->withError('Some Error occured! '. $response->body->message);
|
|
}
|
|
}
|
|
|
|
public function export(Request $request) {
|
|
$response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all', ['positions' => true, 'export' => true]);
|
|
//$users = LambdaRequest::signedrequest('get', $this->_service, 'users/get_all', ['raw' => true]);
|
|
|
|
// echo '<pre>'; print_r($response); exit;
|
|
|
|
$headers = ['Hierarchy Id', 'Sub Department Name', 'Employee Code', 'Business Email', 'Display Name', 'Mobile 1 Phone', 'Position Code', 'Position Title', 'Designation', 'Zone', 'Region', 'Area', 'Territory', 'Manager 1 Employee Code', 'Manager 1 Name', 'Manager\'s 1 Email', 'Manager 2 Employee Code', 'Manager 2 Name', 'Manager\'s 2 Email'];
|
|
// foreach($response->data->graph->values->metrics as $metric) {
|
|
// $headers[] = $metric->metric;
|
|
// }
|
|
$exceldata[] = $headers;
|
|
foreach($response->data->hierarchys as $user) {
|
|
$row = [];
|
|
//echo '<pre>'; print_r($user); exit;
|
|
$row[] = isset($user->id) ? $user->id : '-';
|
|
|
|
if(isset($user->owner_info) && isset($user->owner_info->employee_code)){
|
|
$row[] = $user->owner_info->domain;
|
|
$row[] = $user->owner_info->employee_code;
|
|
$row[] = $user->owner_info->email;
|
|
$row[] = $user->owner_info->firstname . ' ' . $user->owner_info->lastname;
|
|
$row[] = isset($user->owner_info->phone) ? $user->owner_info->phone : '-';
|
|
} else {
|
|
$row[] = '';
|
|
$row[] = '';
|
|
$row[] = '';
|
|
$row[] = '';
|
|
$row[] = '';
|
|
}
|
|
|
|
$row[] = isset($user->code) ? $user->code : '-';
|
|
$row[] = isset($user->name) ? $user->name : '-';
|
|
$row[] = isset($user->designation) ? $user->designation : '-';
|
|
$row[] = isset($user->positions->Zone) ? $user->positions->Zone : '-';
|
|
$row[] = isset($user->positions->Region) ? $user->positions->Region : '-';
|
|
$row[] = isset($user->positions->Area) ? $user->positions->Area : '-';
|
|
$row[] = isset($user->positions->Territory) ? $user->positions->Territory : '-';
|
|
|
|
if(isset($user->manager_level1) && isset($user->manager_level1->employee_code)) {
|
|
$row[] = $user->manager_level1->employee_code;
|
|
$row[] = $user->manager_level1->name;
|
|
$row[] = $user->manager_level1->email;
|
|
} else {
|
|
$row[] = '';
|
|
$row[] = '';
|
|
$row[] = '';
|
|
}
|
|
|
|
if(isset($user->manager_level2) && isset($user->manager_level2->employee_code)) {
|
|
$row[] = $user->manager_level2->employee_code;
|
|
$row[] = $user->manager_level2->name;
|
|
$row[] = $user->manager_level2->email;
|
|
} else {
|
|
$row[] = '';
|
|
$row[] = '';
|
|
$row[] = '';
|
|
}
|
|
|
|
// foreach($response->data->graph->values->metrics as $metric) {
|
|
// $row[] = isset($metric->stats->{$user->id}) ? $metric->stats->{$user->id} : '-';
|
|
// }
|
|
$exceldata[] = $row;
|
|
}
|
|
|
|
//exit;
|
|
return Excel::download(new InvoicesExport($exceldata), 'result.xlsx');
|
|
}
|
|
|
|
public function populatetypedata(Request $request) {
|
|
$response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/populatetypedata', ['partition' => 'rapport-'.Auth::user()->domain ]);
|
|
//echo '<pre>'; print_r($response); exit;
|
|
if($response->statusCode == 200 && $response->status == "success") {
|
|
return redirect($this->_base_url.'s')->withMessage('Successfully Populated !!!');
|
|
} else {
|
|
return redirect($this->_base_url.'s')->withError('Some Error occured! '. $response->body->message);
|
|
}
|
|
}
|
|
|
|
public function postimport(Request $request){
|
|
$fullPath = $this->_uploadMedia($request, 'file_path', 'hierarchy_import');
|
|
$filedata = ['file_path' => $fullPath];
|
|
$response = LambdaRequest::signedrequest('post', 'exportsimports', 'hierarchy_import/create', $filedata);
|
|
return response()->json($response);
|
|
}
|
|
|
|
public function importfilegetbyid(Request $request) {
|
|
$response = LambdaRequest::signedrequest('get', 'exportsimports', 'hierarchy_import/get_one', ['id' => $request->id]);
|
|
return response()->json($response);
|
|
}
|
|
|
|
public function showfileimporterrors(Request $request) {
|
|
$id = $request->input('id', 0);
|
|
$response = LambdaRequest::signedrequest('get', 'exportsimports', 'hierarchy_import/grid_cloumn', ['id' => $id]);
|
|
return response()->json($response);
|
|
}
|
|
|
|
public function postfileimportupdate(Request $request){
|
|
$response = LambdaRequest::signedrequest('post', 'exportsimports', 'hierarchy_import/row_wise_update', $request->all());
|
|
return response()->json($response);
|
|
}
|
|
|
|
public function postimportactions(Request $request){
|
|
$response = LambdaRequest::signedrequest('post', 'exportsimports', 'hierarchy_import/update', $request->all());
|
|
return response()->json($response);
|
|
}
|
|
}
|