309 lines
16 KiB
PHP
309 lines
16 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Requests\LambdaRequest;
|
|
use App\Http\Requests\FormAdditional;
|
|
use DB;
|
|
use Log;
|
|
use Storage;
|
|
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use App\Exports\InvoicesExport;
|
|
use Auth;
|
|
use App\Mail\ReportExcel;
|
|
use Mail;
|
|
use Illuminate\Support\Facades\Cache;
|
|
|
|
class CampaignreportController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->_service = 'competition';
|
|
$this->_module = 'campaign';
|
|
$this->_viewname = 'campaign';
|
|
$this->_title = 'Campaign';
|
|
$this->_base_url = '/campaign';
|
|
}
|
|
|
|
public function report(Request $request) {
|
|
$post = $request->input();
|
|
$token = $request->header('Authorization');
|
|
if($token != '') {
|
|
$request->session()->put('metric_access_key', $token);
|
|
} else {
|
|
$token = $request->session()->get('metric_access_key');
|
|
}
|
|
$download = (isset($post['download']) && $post['download'] == 1) ? 1 : 0;
|
|
$email = (isset($post['email']) && $post['email'] == 1) ? 1 : 0;
|
|
$s3 = (isset($post['s3']) && $post['s3'] == 1) ? 1 : 0;
|
|
unset($post['download']);
|
|
unset($post['email']);
|
|
unset($post['s3']);
|
|
|
|
//$response = LambdaRequest::postrequest('metric', 'metric_report/view', $post, $token);
|
|
$response = LambdaRequest::postrequest($this->_service, $this->_module.'/view', $post, $token);
|
|
//Log::debug(print_r($response, true));
|
|
//echo '<pre>'; print_r($response); print_r($post); exit;
|
|
|
|
if($download) {
|
|
$exceldata = [];
|
|
$exceldata[] = [$response->data->graph->name];
|
|
$exceldata[] = ['Report: '.ucwords($response->data->graph->agg_type).' Report'];
|
|
$exceldata[] = ['Type: '.ucwords($response->data->graph->type).' Metric'];
|
|
foreach($response->data->periods as $v) {
|
|
if($post['period'] == $v->value) {
|
|
$exceldata[] = ['Period: '.ucwords($v->label)];
|
|
}
|
|
}
|
|
$exceldata[] = [''];
|
|
switch($response->data->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 'trend':
|
|
$headings = ['Periods'];
|
|
if($response->data->graph->type == 'grouped') {
|
|
foreach($response->data->graph->values as $met) {
|
|
$headings[] = $met->metric;
|
|
}
|
|
$exceldata[] = $headings;
|
|
foreach($response->data->graph->values[0]->stats as $i => $stat) {
|
|
$row = [$stat->x];
|
|
foreach($response->data->graph->values as $met) {
|
|
$row[] = isset($met->stats[$i])?$met->stats[$i]->y:0;
|
|
}
|
|
$exceldata[] = $row;
|
|
}
|
|
} else {
|
|
$headings[] = $response->data->graph->label;
|
|
$exceldata[] = $headings;
|
|
foreach($response->data->graph->values as $i => $val) {
|
|
$exceldata[] = [$val->x, $val->y];
|
|
}
|
|
}
|
|
break;
|
|
case 'graphical':
|
|
if($response->data->graph->type == 'grouped') {
|
|
$exceldata[] = ['Metric Name', 'Units', 'Percent'];
|
|
$total = 0;
|
|
foreach($response->data->graph->values as $val) {
|
|
$total = $total + $val->value;
|
|
}
|
|
foreach($response->data->graph->values as $val) {
|
|
$exceldata[] = [$val->label, $val->value, (string)round(($val->value/$total)*100, 2)];
|
|
}
|
|
}
|
|
break;
|
|
case 'details':
|
|
if($response->data->graph->chart == 'tabular') {
|
|
$headers = ['User', 'Employee Code', 'Designation', 'Zone', 'Region', "Area", "Territory"];
|
|
foreach($response->data->graph->values->metrics as $metric) {
|
|
$headers[] = $metric->metric;
|
|
}
|
|
$exceldata[] = $headers;
|
|
foreach($response->data->graph->values->users as $user) {
|
|
$row = [];
|
|
$row[] = $user->name;
|
|
$row[] = $user->employee_code;
|
|
$row[] = $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 : '-';
|
|
foreach($response->data->graph->values->metrics as $metric) {
|
|
$row[] = isset($metric->stats->{$user->id}) ? $metric->stats->{$user->id} : '-';
|
|
}
|
|
$exceldata[] = $row;
|
|
}
|
|
}
|
|
break;
|
|
case 'contacts':
|
|
if($response->data->graph->chart == 'contacts') {
|
|
//echo '<pre>'; print_r($response->data->graph->values); exit;
|
|
|
|
$headers = ['Doctor', 'MSL Code', '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"];
|
|
foreach($response->data->graph->values->metrics as $metric) {
|
|
$headers[] = $metric->metric;
|
|
}
|
|
$exceldata[] = $headers;
|
|
foreach($response->data->graph->values->contacts as $contact) {
|
|
$row = [];
|
|
$row[] = $contact->name;
|
|
$row[] = $contact->msl_code;
|
|
$user = $response->data->graph->values->users->{$contact->id};
|
|
|
|
$row[] = $user->name;
|
|
$row[] = $user->employee_code;
|
|
$row[] = $user->email;
|
|
$row[] = $user->designation;
|
|
|
|
$row[] = isset($user->manager1->name) ? $user->manager1->name : '-';
|
|
$row[] = isset($user->manager1->employee_code) ? $user->manager1->employee_code : '-';
|
|
$row[] = isset($user->manager1->email) ? $user->manager1->email : '-';
|
|
$row[] = isset($user->manager2->name) ? $user->manager2->name : '-';
|
|
$row[] = isset($user->manager2->employee_code) ? $user->manager2->employee_code : '-';
|
|
$row[] = isset($user->manager2->email) ? $user->manager2->email : '-';
|
|
|
|
$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 : '-';
|
|
|
|
foreach($response->data->graph->values->metrics as $metric) {
|
|
$row[] = isset($metric->stats->{$contact->id}) ? $metric->stats->{$contact->id} : '-';
|
|
}
|
|
$exceldata[] = $row;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
//echo '<pre>'; print_r($exceldata); exit;
|
|
$data = new \StdClass;
|
|
$data->sender_name = 'Rapport Support';
|
|
$data->sender_email = 'support1@stratawiz.com';
|
|
$data->subject = 'Attached Report';
|
|
$data->body = '';
|
|
|
|
$report = Excel::raw(new InvoicesExport($exceldata), 'Xlsx');
|
|
$data->attachment = $report;
|
|
$data->attachment_name = 'report.xlsx';
|
|
|
|
//Mail::to( str_replace(Auth::user()->domain.'-','', Auth::user()->email) )->send(new ReportExcel($data));
|
|
//Mail::to( 'ravigulhane1983@gmail.com' )->send(new ReportExcel($data));
|
|
if($s3) {
|
|
$filename = 'reports/'.strtotime("now").'-report.xlsx';
|
|
$res = Excel::store(new InvoicesExport($exceldata), 'public/'.$filename);
|
|
Log::debug(print_r($res, true));
|
|
Log::debug('/storage/'.$filename);
|
|
return response()->json(['sent' => 'yes', 'filename' => '/storage/'.$filename]);
|
|
} else {
|
|
Mail::to( $response->data->user->email )->send(new ReportExcel($data));
|
|
return response()->json(['sent' => 'yes']);
|
|
}
|
|
|
|
} else {
|
|
return $this->view('appreport')->with(['periods' => $response->data->periods, 'users' => $response->data->users, 'metrics' => $response->data->metrics, 'post' => $response->data->post, 'base_level' => $response->data->base_level ]);
|
|
}
|
|
}
|
|
|
|
public function dashboard(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');
|
|
}
|
|
$post['type'] = 'leaderboard';
|
|
$post['chart'] = 'leaderboard';
|
|
$response = LambdaRequest::postrequest($this->_service, $this->_module.'/view', $post, $token);
|
|
//echo '<pre>'; print_r($response); exit;
|
|
return $this->view('appdashboard')->with(['periods' => $response->data->periods, 'user' => $response->data->user, 'metrics' => $response->data->metrics, 'post' => $response->data->post ]);
|
|
}
|
|
|
|
|
|
public function metriclist(Request $request) {
|
|
$post = $request->input();
|
|
$token = $request->header('Authorization');
|
|
if($token != '') {
|
|
$request->session()->put('metric_access_key', $token);
|
|
} else {
|
|
$token = $request->session()->get('metric_access_key');
|
|
}
|
|
$reports = LambdaRequest::getrequest('metric', 'metric_report/list', $post, $token);
|
|
//echo '<pre>'; print_r($reports); exit;
|
|
//$reports = $this->getlambda('get', 'metric', 'metric_report', 'list');
|
|
return view('metricreport.appreportlist')->with(['metrics' => $reports->data->metrics]);
|
|
|
|
}
|
|
|
|
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');
|
|
}
|
|
$post['export'] = 1;
|
|
$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', 'Manager 1 Name', 'Manager 1 Emp Code', 'Manager 1 Email', 'Manager 2 Name', 'Manager 2 Emp Code', 'Manager 2 Email', '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->manager1->name) ? $user->user_info->manager1->name : '-';
|
|
$row[] = isset($user->user_info->manager1->employee_code) ? $user->user_info->manager1->employee_code : '-';
|
|
$row[] = isset($user->user_info->manager1->email) ? $user->user_info->manager1->email : '-';
|
|
$row[] = isset($user->user_info->manager2->name) ? $user->user_info->manager2->name : '-';
|
|
$row[] = isset($user->user_info->manager2->employee_code) ? $user->user_info->manager2->employee_code : '-';
|
|
$row[] = isset($user->user_info->manager2->email) ? $user->user_info->manager2->email : '-';
|
|
|
|
$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 '<pre>'; print_r($exceldata); exit;
|
|
if(isset($post['email']) && $post['email'] == 1) {
|
|
$data = new \StdClass;
|
|
$data->sender_name = 'Rapport Support';
|
|
$data->sender_email = 'support1@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');
|
|
}
|
|
}
|
|
} |