165 lines
8.4 KiB
PHP
165 lines
8.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Requests\LambdaRequest;
|
|
use DB;
|
|
|
|
class MetricviewController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth');
|
|
$this->_service = 'metric';
|
|
$this->_module = 'metric_view';
|
|
$this->_viewname = 'metricview';
|
|
$this->_title = 'Metric View';
|
|
$this->_base_url = '/metricview';
|
|
}
|
|
|
|
public function list(Request $request) {
|
|
$response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all');
|
|
foreach($response->data->items as &$item) {
|
|
$item->validity_start = date("m/d/Y", strtotime($item->validity_start));
|
|
$item->validity_end = date("m/d/Y", strtotime($item->validity_end));
|
|
}
|
|
$fields = $this->get_list_fields();
|
|
return $this->view('list')->with([
|
|
'title' => $this->_title,
|
|
'fields' => $fields,
|
|
'base_url' => $this->_base_url,
|
|
'items' => $response->data->items,
|
|
'buttons' => $this->get_list_buttons()
|
|
]);
|
|
}
|
|
|
|
protected function get_list_fields(){
|
|
return [
|
|
'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
|
|
'name' => ['title' => 'Name', 'type' => 'text'],
|
|
'type' => ['title' => 'Type', 'type' => 'text'],
|
|
'validity_start' => ['title' => 'Validity start', 'type' => 'text'],
|
|
'validity_end' => ['title' => 'Validity end', 'type' => 'text'],
|
|
'agg_type' => ['title' => 'Aggregation type', 'type' => 'text'],
|
|
'status' => ['title' => 'Status', 'type' => 'select'],
|
|
|
|
];
|
|
}
|
|
|
|
protected function get_list_buttons() {
|
|
return [
|
|
['title' => 'Add A vs B', 'link' => $this->_base_url.'/addnew?type=verses' ],
|
|
['title' => 'Add Grouped', 'link' => $this->_base_url.'/addnew?type=grouped' ],
|
|
['title' => 'Add Simple', 'link' => $this->_base_url.'/addnew?type=simple' ]
|
|
];
|
|
}
|
|
|
|
protected function get_form_fields($type, $values){
|
|
$metrics = $this->getlambda('get', 'metric', 'metric', 'get_all');
|
|
$metrics_dd = [];
|
|
foreach($metrics->data->items as $metric){
|
|
$metrics_dd[$metric->id] = $metric->name;
|
|
}
|
|
// $domain = LambdaRequest::signedrequest('get', 'ums', 'domain/get_one');
|
|
// //echo '<pre>'; print_r($domain); exit;
|
|
// $designations_dd = [];
|
|
// foreach($domain->data->item->designations as $designation){
|
|
// $designations_dd[$designation] = $designation;
|
|
// }
|
|
//echo '<pre>'; print_r($values); exit;
|
|
|
|
$roles = $this->getlambda('get', 'ums', 'roles', 'dropdown');
|
|
$roles_dd = [];
|
|
foreach($roles->data->items as $role){
|
|
$roles_dd[$role->id] = $role->name;
|
|
}
|
|
|
|
$fields = [
|
|
'name' => ['title' => 'Name', 'type' => 'text', 'required' => true],
|
|
//'type' => ['title' => 'Type', 'type' => 'select', 'required' => true, 'values' => ['simple' => 'Simple', 'grouped' => 'Grouped', 'verses' => 'A vs B'] ],
|
|
'validity_start' => ['title' => 'Validity start', 'type' => 'date', 'required' => true],
|
|
'validity_end' => ['title' => 'Validity end', 'type' => 'date', 'required' => true],
|
|
'designations' => ['title' => 'Publish to Roles', 'type' => 'multiselect', 'values' => $roles_dd, 'required' => true]
|
|
];
|
|
|
|
if(($type == 'new' && $this->_request->input('type') == 'simple') || ($type == 'edit' && $values->type == 'simple' ) ) {
|
|
$fields['metric'] = ['title' => 'Choose Metric', 'type' => 'select', 'required' => true, 'values' => $metrics_dd ];
|
|
$fields['display_unit'] = ['title' => 'Display Unit', 'type' => 'text', 'required' => true];
|
|
if($type == 'edit') {
|
|
$values->metric = $values->metrics[0]->metric;
|
|
$values->display_unit = $values->metrics[0]->display;
|
|
unset($values->metrics);
|
|
}
|
|
} else if(($type == 'new' && $this->_request->input('type') == 'verses') || ($type == 'edit' && $values->type == 'verses' ) ) {
|
|
$fields['metric[0]'] = ['title' => 'Choose Metric 1', 'type' => 'select', 'required' => true, 'values' => $metrics_dd ];
|
|
$fields['display_unit[0]'] = ['title' => 'Metric 1 Display Unit', 'type' => 'text', 'required' => true];
|
|
$fields['metric[1]'] = ['title' => 'Choose Metric 2', 'type' => 'select', 'required' => true, 'values' => array_merge($metrics_dd, ['fixed' => 'Fixed Value']) ];
|
|
$fields['display_unit[1]'] = ['title' => 'Metric 2 Display Unit', 'type' => 'text', 'required' => true];
|
|
$fields['fixed_metric'] = ['title' => 'Fixed Metric value if selected', 'type' => 'text', 'required' => true];
|
|
if($type == 'edit') {
|
|
$values->{'metric[0]'} = $values->metrics[0]->metric;
|
|
$values->{'display_unit[0]'} = $values->metrics[0]->display;
|
|
$values->{'metric[1]'} = $values->metrics[1]->metric;
|
|
$values->{'display_unit[1]'} = $values->metrics[1]->display;
|
|
unset($values->metrics);
|
|
}
|
|
|
|
} else {
|
|
$fields['metrics'] = ['title' => 'Choose Metric', 'type' => 'mapping', 'required' => true, 'metrics' => $metrics_dd, 'types' => ['unit' => 'Units', 'count' => 'Count'] , 'fullwidth' => true ];
|
|
}
|
|
|
|
$fields = array_merge($fields,
|
|
[
|
|
'operation' => ['title' => 'Operation', 'type' => 'select', 'required' => true, 'values' => ['sum' => 'Sum', 'avg' => 'Avg', 'value_count' => 'Count'] ],
|
|
'agg_type' => ['title' => 'Aggregation Type', 'type' => 'select', 'required' => true, 'values' => ['individual' => 'Individual', 'team' => 'Team'] ],
|
|
|
|
'graphical_views' => ['title' => 'Graphical views', 'type' => 'multiselect', 'required' => true, 'values' => ['progress' => 'Progress', 'percentile' => 'Percentile', 'pie' => 'Pie chart', 'bar' => 'Bar chart', 'line' => 'Line chart'] ],
|
|
'details_views' => ['title' => 'Details views', 'type' => 'multiselect', 'required' => true, 'values' => ['tabular' => 'Tabular'] ],
|
|
'trend_views' => ['title' => 'Trend views', 'type' => 'multiselect', 'required' => true, 'values' => ['bar' => 'Bar chart', 'line' => 'Line chart', 'tabular' => 'Tabular'] ],
|
|
'leaderboard_views' => ['title' => 'Leaderboard views', 'type' => 'multiselect', 'required' => true, 'values' => ['leaderboard' => 'Leaderboard View'] ],
|
|
|
|
'intervals' => ['title' => 'Intervals', 'type' => 'multiselect', 'required' => true, 'values' => ['yearlycy' => 'Calender Year', 'yearlyfy' => 'Financial Year', 'monthly' => 'Monthly', 'weekly' => 'Weekly', 'daily' => 'Daily'] ],
|
|
|
|
'report_roles' => ['title' => 'Data Report from Roles', 'type' => 'multiselect', 'values' => $roles_dd, 'required' => true],
|
|
|
|
'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
|
|
|
|
]);
|
|
|
|
return $fields;
|
|
}
|
|
|
|
protected function _beforesave($type, $request) {
|
|
$data = $request->except('_token');
|
|
//echo '<pre>'; print_r($data); exit;
|
|
$data['metrics'] = [];
|
|
if($request->input('type') == 'simple' || !is_array($data['metric']) ) {
|
|
$data['metrics'][] = ['metric' => $data['metric'], 'display' => $data['display_unit'] ];
|
|
|
|
} else {
|
|
foreach($data['metric'] as $k => $metric) {
|
|
$data['metrics'][] = ['metric' => $metric, 'display' => $data['display_unit'][$k] ];
|
|
}
|
|
}
|
|
unset($data['metric']);
|
|
unset($data['display_unit']);
|
|
//echo '<pre>'; print_r($data); exit;
|
|
return $data;
|
|
}
|
|
|
|
protected function _beforeform($type, $values) {
|
|
if ($type == 'edit') {
|
|
$values->designations = explode('#', $values->designations);
|
|
if(isset($values->report_roles)) {
|
|
$values->report_roles = explode('#', $values->report_roles);
|
|
} else {
|
|
$values->report_roles = [];
|
|
}
|
|
|
|
$values->validity_start = date("d/m/Y", strtotime($values->validity_start));
|
|
$values->validity_end = date('d/m/Y', strtotime($values->validity_end));
|
|
}
|
|
return $values;
|
|
}
|
|
}
|