_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 '
'; 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 ''; 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 ''; 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 ''; 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 ''; 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 ''; 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');
}
}
}