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