Rapport-Laravel/app/Http/Controllers/CampaignController.php

144 lines
6.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\LambdaRequest;
use DB;
use Auth;
class CampaignController extends Controller
{
public function __construct()
{
$this->middleware('auth');
$this->_service = 'competition';
$this->_module = 'campaign';
$this->_viewname = 'campaign';
$this->_title = 'Campaign';
$this->_base_url = '/campaign';
}
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', 'rules' => ['icon' => 'brightness-percent', 'querystring' => 'id={ID}'] ] ],
'title' => ['title' => 'Title', 'type' => 'text'],
'validity_start' => ['title' => 'Validity start', 'type' => 'text'],
'validity_end' => ['title' => 'Validity end', 'type' => 'text'],
'status' => ['title' => 'Status', 'type' => 'select'],
];
}
protected function get_list_buttons() {
return [ ['title' => 'Add New', 'link' => $this->_base_url.'/addnew' ] ];
}
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;
$users = $this->getlambda('get', 'ums', 'users', 'dropdown');
//echo '<pre>'; print_r($users); exit;
$users_dd = [];
foreach($users->data->items as $user){
$users_dd[$user->id] = $user->firstname .' '. $user->lastname . ' ('.$user->employee_code.')';
}
$teams = $this->getlambda('get', 'ums', 'team', 'dropdown');
$teams_dd = [];
foreach($teams->data->items as $team){
$teams_dd[$team->id] = $team->name;
}
$fields = [
'title' => ['title' => 'Title', 'type' => 'text', 'required' => true],
'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
// 'display_status' => ['title' => 'Compatition Status', 'type' => 'select', 'required' => true, 'values' => ['-' => '-', 'Ongoing' => 'Ongoing', 'Completed' => 'Completed' ] ],
// 'result_text' => ['title' => 'Result Text', 'type' => 'text', 'required' => true],
'description' => ['title' => 'Description', 'type' => 'textarea', 'required' => true, 'fullwidth' => true ],
'validity_start' => ['title' => 'Validity start', 'type' => 'date', 'required' => true],
'validity_end' => ['title' => 'Validity end', 'type' => 'date', 'required' => true],
'cover_image' => ['title' => 'Cover Image', 'type' => 'image', 'required' => true],
//'target_metrics' => ['title' => 'Choose Metric', 'type' => 'multiselect', 'required' => true, 'values' => $metrics_dd, 'fullwidth' => true ],
'fans' => ['title' => 'Fans', 'type' => 'bigmultiselect', 'values' => $users_dd, 'required' => true, 'fullwidth' => true],
'teams' => ['title' => 'Teams', 'type' => 'bigmultiselect', 'values' => $teams_dd, 'required' => true, 'fullwidth' => true],
];
//echo '<pre>'; print_r($fields); exit;
return $fields;
}
protected function _beforesave($type, $request) {
$data = $request->except('_token');
if( $request->file('cover_image') ) {
$data['cover_image'] = $this->_uploadMedia($request, 'cover_image', 'competition');
}
return $data;
}
protected function _beforeform($type, $values) {
if ($type == 'edit') {
$values->validity_start = date("m-d-Y", strtotime($values->validity_start));
$values->validity_end = date('m-d-Y', strtotime($values->validity_end));
}
return $values;
}
public function rules(Request $request) {
$id = $request->input('id', 0);
if($id === 0) {
return redirect('/campaigns')->withError('Campaign not found!');
} else {
$request->session()->put('campaign_id', $id);
return redirect('/campaignrules');
}
}
public function report(Request $request) {
$post = $request->except('_token');
$response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/view', $post, 60);
//echo '<pre>'; print_r($response); exit;
return $this->view('report')->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');
$response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/view', $post, 60);
$user = false;
foreach($response->data->users as $u) {
if($u->user_id == Auth::user()->user_id) {
$user = $u;
}
}
//echo '<pre>'; print_r($response); exit;
return $this->view('dashboard')->with(['periods' => $response->data->periods, 'user' => $user, 'metrics' => $response->data->metrics, 'post' => $response->data->post ]);
}
}