diff --git a/app/Http/Controllers/AppreciationcategoryController.php b/app/Http/Controllers/AppreciationcategoryController.php index 86ce2977..56415aac 100644 --- a/app/Http/Controllers/AppreciationcategoryController.php +++ b/app/Http/Controllers/AppreciationcategoryController.php @@ -52,6 +52,11 @@ class AppreciationcategoryController extends Controller foreach($groups->data->items as $group){ $groups_dd[$group->id] = $group->name; } + $metrics = $this->getlambda('get', 'metric', 'metric', 'get_all'); + $metric_dd = []; + foreach($metrics->data->items as $metric){ + $metric_dd[$metric->id] = $metric->name; + } $fields = [ 'title' => ['title' => 'Title', 'type' => 'text', 'required' => true], @@ -61,6 +66,7 @@ class AppreciationcategoryController extends Controller 'points' => ['title' => 'Points', 'type' => 'text', 'required' => true], 'groups' => ['title' => 'Groups', 'type' => 'multiselect', 'required' => true, 'values' => $groups_dd ], 'roles' => ['title' => 'Roles', 'type' => 'multiselect', 'required' => true, 'values' => $roles_dd ], + 'mapped_metric' => ['title' => 'Metric', 'type' => 'select', 'values' => $metric_dd ], 'icon' => ['title' => 'Icon', 'type' => 'image', 'required' => true ], @@ -71,6 +77,10 @@ class AppreciationcategoryController extends Controller protected function _beforesave($type, $request) { $data = $request->except('_token'); + if(!isset($data['mapped_metric'])) { + $data['mapped_metric'] = ""; + } + if( $request->file('icon') ) { $data['icon'] = $this->_uploadMedia($request, 'icon', 'recognition_appreciation'); } diff --git a/app/Http/Controllers/CampaignController.php b/app/Http/Controllers/CampaignController.php index a939b458..875b465a 100644 --- a/app/Http/Controllers/CampaignController.php +++ b/app/Http/Controllers/CampaignController.php @@ -5,6 +5,10 @@ use Illuminate\Http\Request; use App\Http\Requests\LambdaRequest; use DB; use Auth; +use Maatwebsite\Excel\Facades\Excel; +use App\Exports\InvoicesExport; +use App\Mail\ReportExcel; +use Mail; class CampaignController extends Controller { @@ -36,7 +40,7 @@ class CampaignController extends Controller protected function get_list_fields(){ return [ - 'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete', 'rules' => ['icon' => 'brightness-percent', 'querystring' => 'id={ID}'] ] ], + 'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete', 'rules' => ['icon' => 'brightness-percent', 'querystring' => 'id={ID}'], 'teammembers' => ['icon' => 'account-multiple', 'querystring' => 'id={ID}'] ] ], 'title' => ['title' => 'Title', 'type' => 'text'], 'validity_start' => ['title' => 'Validity start', 'type' => 'text'], 'validity_end' => ['title' => 'Validity end', 'type' => 'text'], @@ -120,6 +124,24 @@ class CampaignController extends Controller } } + public function teammembers(Request $request) { + $id = $request->input('id', 0); + $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_one', ['id' => $id]); + $values = $response->data->item; + $teams = []; + foreach($values->teams as $t) { + $team = LambdaRequest::signedrequest('get', 'ums', 'team/get_one', ['id' => $t, 'players' => true]); + $players = []; + foreach($team->data->players as $player) { + $players[] = $player->owner_info; + } + $teams[] = ['team_details' => ['id' => $team->data->item->id, 'name' => $team->data->item->name, 'description' => $team->data->item->description], 'players' => $players ]; + } + $teams = json_decode(json_encode($teams), FALSE); + //echo '
'; print_r($teams); exit;
+ return $this->view('teammembers')->with(['teams' => $teams]);
+ }
+
public function report(Request $request) {
$post = $request->except('_token');
$response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/view', $post, 60);
@@ -140,4 +162,85 @@ class CampaignController extends Controller
return $this->view('dashboard')->with(['periods' => $response->data->periods, 'user' => $user, 'metrics' => $response->data->metrics, 'post' => $response->data->post ]);
}
+
+
+ public function export(Request $request) {
+ $post = $request->except('_token');
+ //$post['export'] = 1;
+ $response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/view', $post, 60);
+ //echo ''; print_r($response); exit;
+ //echo ''; print_r($response); print_r($post); exit;
+ $exceldata = [];
+ // foreach($response->data->periods as $v) {
+ // if($post['period'] == $v->value) {
+ // $exceldata[] = ['Period: '.ucwords($v->label)];
+ // }
+ // }
+ if(!isset($post['type'])) {
+ $post['type'] = 'details';
+ }
+ $exceldata[] = [''];
+ switch($post['type']) {
+ case 'leaderboard':
+ $exceldata[] = ["Rank", "User", "Designation", "Units", "Percent"];
+ foreach($response->data->graph->values as $val) {
+ $exceldata[] = [(string)$val->rank, (string)$val->user->name, $val->user->designation, (string)round($val->score, 2), (string)$response->data->graph->values[0]->rank != 0 ? ($response->data->graph->values[0]->rank == 1 ? ($response->data->graph->values[0]->score ? ceil(($val->score/$response->data->graph->values[0]->score)*100) : 0) : ($response->data->graph->values[1]->score ? ceil(($val->score/$response->data->graph->values[1]->score)*100) : 0 ) ) : 0 ];
+ }
+ break;
+
+ case 'details':
+ $headers = ['User', 'Employee Code', 'Email', 'Designation', 'Zone', 'Region', "Area", "Territory", "Rank", "Total Units", "Total Points"];
+ foreach($response->data->metrics as $metric) {
+ $headers[] = $metric->name . ' Units';
+ $headers[] = $metric->name . ' Points';
+ }
+ $exceldata[] = $headers;
+ foreach($response->data->users as $user) {
+ $row = [];
+ $row[] = $user->user_info->name;
+ $row[] = $user->user_info->employee_code;
+ $row[] = $user->user_info->email;
+ $row[] = $user->user_info->designation;
+
+ $row[] = isset($user->user_info->positions->Zone) ? $user->user_info->positions->Zone : '-';
+ $row[] = isset($user->user_info->positions->Region) ? $user->user_info->positions->Region : '-';
+ $row[] = isset($user->user_info->positions->Area) ? $user->user_info->positions->Area : '-';
+ $row[] = isset($user->user_info->positions->Territory) ? $user->user_info->positions->Territory : '-';
+
+ $row[] = $user->rank;
+ $row[] = $user->units;
+ $row[] = $user->total;
+
+ foreach($response->data->metrics as $metric) {
+ $row[] = isset($user->metrics->{$metric->id}) ? $user->metrics->{$metric->id} : '-';
+ $row[] = isset($user->metric_points->{$metric->id}) ? $user->metric_points->{$metric->id} : '-';
+ }
+ $exceldata[] = $row;
+ }
+ break;
+ }
+ //echo ''; print_r($exceldata); exit;
+ if(isset($post['email']) && $post['email'] == 1) {
+ $data = new \StdClass;
+ $data->sender_name = 'Rapport Support';
+ $data->sender_email = 'support@stratawiz.com';
+ $data->subject = 'Attached Report';
+ $data->body = '';
+
+ $report = Excel::raw(new InvoicesExport($exceldata), 'Xlsx');
+ $data->attachment = $report;
+ $data->attachment_name = 'campaign.xlsx';
+
+ Mail::to( $response->data->user->email )->send(new ReportExcel($data));
+ //Mail::to( 'ravigulhane1983@gmail.com' )->send(new ReportExcel($data));
+ return response()->json(['sent' => 'yes']);
+ } elseif(isset($post['s3']) && $post['s3'] == 1) {
+ $filename = 'reports/'.strtotime("now").'-report.xlsx';
+ $res = Excel::store(new InvoicesExport($exceldata), $filename);
+ Log::debug('https://did94hhhcgq1d.cloudfront.net/'.$filename);
+ return response()->json(['sent' => 'yes', 'filename' => 'https://did94hhhcgq1d.cloudfront.net/'.$filename]);
+ } else {
+ return Excel::download(new InvoicesExport($exceldata), 'campaign.xlsx');
+ }
+ }
}
diff --git a/app/Http/Controllers/CampaignreportController.php b/app/Http/Controllers/CampaignreportController.php
index ce4f1847..fcee28e3 100644
--- a/app/Http/Controllers/CampaignreportController.php
+++ b/app/Http/Controllers/CampaignreportController.php
@@ -221,4 +221,82 @@ class CampaignreportController extends Controller
}
+ public function export(Request $request) {
+ $post = $request->except('_token');
+ $token = $request->header('Authorization');
+ if($token != '') {
+ $request->session()->put('metric_access_key', $token);
+ } else {
+ $token = $request->session()->get('metric_access_key');
+ }
+
+ $response = LambdaRequest::postrequest($this->_service, $this->_module.'/view', $post, $token);
+ $exceldata = [];
+ if(!isset($post['type'])) {
+ $post['type'] = 'details';
+ }
+ $exceldata[] = [''];
+ switch($post['type']) {
+ case 'leaderboard':
+ $exceldata[] = ["Rank", "User", "Designation", "Units", "Percent"];
+ foreach($response->data->graph->values as $val) {
+ $exceldata[] = [(string)$val->rank, (string)$val->user->name, $val->user->designation, (string)round($val->score, 2), (string)$response->data->graph->values[0]->rank != 0 ? ($response->data->graph->values[0]->rank == 1 ? ($response->data->graph->values[0]->score ? ceil(($val->score/$response->data->graph->values[0]->score)*100) : 0) : ($response->data->graph->values[1]->score ? ceil(($val->score/$response->data->graph->values[1]->score)*100) : 0 ) ) : 0 ];
+ }
+ break;
+
+ case 'details':
+ $headers = ['User', 'Employee Code', 'Email', 'Designation', 'Zone', 'Region', "Area", "Territory", "Rank", "Total Units", "Total Points"];
+ foreach($response->data->metrics as $metric) {
+ $headers[] = $metric->name . ' Units';
+ $headers[] = $metric->name . ' Points';
+ }
+ $exceldata[] = $headers;
+ foreach($response->data->users as $user) {
+ $row = [];
+ $row[] = $user->user_info->name;
+ $row[] = $user->user_info->employee_code;
+ $row[] = $user->user_info->email;
+ $row[] = $user->user_info->designation;
+
+ $row[] = isset($user->user_info->positions->Zone) ? $user->user_info->positions->Zone : '-';
+ $row[] = isset($user->user_info->positions->Region) ? $user->user_info->positions->Region : '-';
+ $row[] = isset($user->user_info->positions->Area) ? $user->user_info->positions->Area : '-';
+ $row[] = isset($user->user_info->positions->Territory) ? $user->user_info->positions->Territory : '-';
+
+ $row[] = $user->rank;
+ $row[] = $user->units;
+ $row[] = $user->total;
+
+ foreach($response->data->metrics as $metric) {
+ $row[] = isset($user->metrics->{$metric->id}) ? $user->metrics->{$metric->id} : '-';
+ $row[] = isset($user->metric_points->{$metric->id}) ? $user->metric_points->{$metric->id} : '-';
+ }
+ $exceldata[] = $row;
+ }
+ break;
+ }
+ //echo ''; print_r($exceldata); exit;
+ if(isset($post['email']) && $post['email'] == 1) {
+ $data = new \StdClass;
+ $data->sender_name = 'Rapport Support';
+ $data->sender_email = 'support@stratawiz.com';
+ $data->subject = 'Attached Report';
+ $data->body = '';
+
+ $report = Excel::raw(new InvoicesExport($exceldata), 'Xlsx');
+ $data->attachment = $report;
+ $data->attachment_name = 'campaign.xlsx';
+
+ Mail::to( $response->data->user->email )->send(new ReportExcel($data));
+ //Mail::to( 'ravigulhane1983@gmail.com' )->send(new ReportExcel($data));
+ return response()->json(['sent' => 'yes']);
+ } elseif(isset($post['s3']) && $post['s3'] == 1) {
+ $filename = 'reports/'.strtotime("now").'-report.xlsx';
+ $res = Excel::store(new InvoicesExport($exceldata), $filename);
+ Log::debug('https://did94hhhcgq1d.cloudfront.net/'.$filename);
+ return response()->json(['sent' => 'yes', 'filename' => 'https://did94hhhcgq1d.cloudfront.net/'.$filename]);
+ } else {
+ return Excel::download(new InvoicesExport($exceldata), 'campaign.xlsx');
+ }
+ }
}
\ No newline at end of file
diff --git a/app/Http/Controllers/CampaignruleController.php b/app/Http/Controllers/CampaignruleController.php
index f71a19cc..bf783402 100644
--- a/app/Http/Controllers/CampaignruleController.php
+++ b/app/Http/Controllers/CampaignruleController.php
@@ -43,6 +43,7 @@ class CampaignruleController extends Controller
'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
//'media_thumb' => ['title' => 'Media Thumb', 'type' => 'image'],
'metric_name' => ['title' => 'Metric Name', 'type' => 'text'],
+ 'block_size' => ['title' => 'Block Size', 'type' => 'text'],
'points' => ['title' => 'Points', 'type' => 'text'],
'range_start' => ['title' => 'Range Start', 'type' => 'text'],
'range_end' => ['title' => 'Range End', 'type' => 'text'],
@@ -66,6 +67,7 @@ class CampaignruleController extends Controller
'range_end' => ['title' => 'Range End', 'type' => 'number', 'required' => true],
'metric_interval' => ['title' => 'Metric Interval', 'type' => 'select', 'required' => true, 'values' => ['OVERALL' => 'OVERALL', 'MONTHLY' => 'MONTHLY', 'WEEKLY' => 'WEEKLY'] ],
'scoring_type' => ['title' => 'Scoring Type', 'type' => 'select', 'required' => true, 'values' => ['LINEAR' => 'LINEAR', 'STAGGERED' => 'STAGGERED'] ],
+ 'block_size' => ['title' => 'Block Size', 'type' => 'number', 'required' => true],
'points' => ['title' => 'Points', 'type' => 'text', 'required' => true],
];
return $fields;
diff --git a/app/Http/Controllers/FormexportController.php b/app/Http/Controllers/FormexportController.php
index f0e9208e..ddbab5d4 100644
--- a/app/Http/Controllers/FormexportController.php
+++ b/app/Http/Controllers/FormexportController.php
@@ -25,7 +25,7 @@ class FormexportController extends Controller
return redirect('/formentitys')->withError('Question not found!');
}
$response = LambdaRequest::signedrequest('get', $this->_service, $this->_module . '/get_all', ['entity_id' => $entity_id]);
- //echo ''; print_r($response); exit;
+ echo ''; print_r($response); exit;
$fields = $this->get_list_fields();
return $this->view('list')->with([
'title' => $this->_title,
diff --git a/app/Http/Controllers/MetricreportController.php b/app/Http/Controllers/MetricreportController.php
index c2fed094..9826e199 100644
--- a/app/Http/Controllers/MetricreportController.php
+++ b/app/Http/Controllers/MetricreportController.php
@@ -129,7 +129,7 @@ class MetricreportController extends Controller
break;
case 'details':
if($response->data->graph->chart == 'tabular') {
- $headers = ['User', 'Employee Code', 'Email', 'Designation', 'Manager 1 Name', 'Manager 1 Emp Code', 'Manager 1 Email', 'Manager 2 Name', 'Manager 2 Emp Code', 'Manager 2 Email', 'Zone', 'Region', "Area", "Territory"];
+ $headers = ['User', 'Employee Code', 'Email', 'Designation', 'Manager 1 Name', 'Manager 1 Emp Code', 'Manager 1 Email', 'Manager 2 Name', 'Manager 2 Emp Code', 'Manager 2 Email', 'Zone', 'Region', "Area", "Territory", "Role"];
foreach($response->data->graph->values->metrics as $metric) {
$headers[] = $metric->metric;
}
@@ -152,6 +152,7 @@ class MetricreportController extends Controller
$row[] = isset($user->positions->Region) ? $user->positions->Region : '-';
$row[] = isset($user->positions->Area) ? $user->positions->Area : '-';
$row[] = isset($user->positions->Territory) ? $user->positions->Territory : '-';
+ $row[] = isset($user->roles) ? (is_array($user->roles) ? implode(',', $user->roles) : $user->roles) : '-';
foreach($response->data->graph->values->metrics as $metric) {
$row[] = isset($metric->stats->{$user->id}) ? $metric->stats->{$user->id} : '-';
}
diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php
index 921d1aa5..1890d24f 100644
--- a/app/Http/Controllers/UserController.php
+++ b/app/Http/Controllers/UserController.php
@@ -5,6 +5,8 @@ use Illuminate\Http\Request;
use App\Http\Requests\LambdaRequest;
use DB;
use Log;
+use Maatwebsite\Excel\Facades\Excel;
+use App\Exports\InvoicesExport;
class UserController extends Controller
{
@@ -26,6 +28,8 @@ class UserController extends Controller
'firstname' => ['title' => 'Firstname', 'type' => 'text'],
'lastname' => ['title' => 'Lastname', 'type' => 'text'],
'email' => ['title' => 'Email', 'type' => 'text'],
+ 'logged_in' => ['title' => 'Is Logged In', 'type' => 'text'],
+ 'roles' => ['title' => 'Roles', 'type' => 'text'],
'phone' => ['title' => 'Phone', 'type' => 'text'],
'designation' => ['title' => 'Designation', 'type' => 'text'],
'state' => ['title' => 'State', 'type' => 'text'],
@@ -36,7 +40,7 @@ class UserController extends Controller
}
protected function get_list_buttons() {
- return [ ['title' => 'Add New', 'link' => $this->_base_url.'/addnew' ], ['title' => 'Import Users', 'link' => $this->_base_url.'/import'] ];
+ return [ ['title' => 'Add New', 'link' => $this->_base_url.'/addnew' ], ['title' => 'Import Users', 'link' => $this->_base_url.'/import'], ['title' => 'Export Users', 'link' => $this->_base_url.'/export'] ];
}
protected function get_form_fields($type, $values){
@@ -119,4 +123,28 @@ class UserController extends Controller
'buttons' => $this->get_list_buttons()
]);
}
+
+ public function export(Request $request) {
+ $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all', ['start' => 0, 'length' => 9999, 'search' => json_encode([]), 'keyword' => "" ]);
+ //echo ''; print_r($response); exit;
+
+ $headers = ['Employee Code', 'Firstname', 'Lastname', 'Email', 'Is Logged In', 'Roles', 'Phone', 'Designation', 'State', 'City', 'Status'];
+ $exceldata[] = $headers;
+ foreach($response->data->items as $user) {
+ $row = [];
+ $row[] = isset($user->employee_code) ? $user->employee_code : '-';
+ $row[] = isset($user->firstname) ? $user->firstname : '-';
+ $row[] = isset($user->lastname) ? $user->lastname : '-';
+ $row[] = isset($user->email) ? $user->email : '-';
+ $row[] = isset($user->logged_in) ? $user->logged_in : '-';
+ $row[] = isset($user->roles) ? $user->roles : '-';
+ $row[] = isset($user->phone) ? $user->phone : '-';
+ $row[] = isset($user->designation) ? $user->designation : '-';
+ $row[] = isset($user->state) ? $user->state : '-';
+ $row[] = isset($user->city) ? $user->city : '-';
+ $row[] = isset($user->status) ? $user->status : '-';
+ $exceldata[] = $row;
+ }
+ return Excel::download(new InvoicesExport($exceldata), 'users.xlsx');
+ }
}
diff --git a/resources/views/campaign/appreport.blade.php b/resources/views/campaign/appreport.blade.php
index 6118e587..72b01f4a 100644
--- a/resources/views/campaign/appreport.blade.php
+++ b/resources/views/campaign/appreport.blade.php
@@ -31,7 +31,10 @@
My Team
-
+
+
+
+
@@ -305,21 +308,12 @@
$('#export').click(function(){
//$("#pageloader").fadeIn();
let href = new URL(window.location.href);
- window.location.href = href.origin + '/metricreport/export' + href.search
+ window.location.href = href.origin + '/campaignreport/export' + href.search
})
- // $('#export').click(function(){
- // let href = new URL(window.location.href);
- // $('.loader').show()
- // $.get( href.origin + '/metricreport/export' + href.search + '&download=1&s3=1', function( data ) {
- // console.log(data)
- // $('.loader').hide()
- // $('#graph-wrapper').prepend('');
- // });
- // })
$('#email-export').click(function(){
$("#pageloader").fadeIn();
let href = new URL(window.location.href);
- $.get( href.origin + '/metricreport/export' + href.search + '&email=1', function( data ) {
+ $.get( href.origin + '/campaignreport/export' + href.search + '&email=1', function( data ) {
$("#pageloader").fadeOut();
alert( "Email has been sent to your email id." );
});
diff --git a/resources/views/campaign/report.blade.php b/resources/views/campaign/report.blade.php
index c8e8a893..1756fead 100644
--- a/resources/views/campaign/report.blade.php
+++ b/resources/views/campaign/report.blade.php
@@ -36,6 +36,13 @@
Leaderboard
My Team
+
+
+
+
+
+
+
@@ -57,6 +64,7 @@
+