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

92 lines
3.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\LambdaRequest;
use DB;
class TrackController extends Controller
{
public function __construct()
{
$this->middleware('auth');
$this->_service = 'events';
$this->_module = 'track';
$this->_viewname = 'track';
$this->_title = 'Track';
$this->_base_url = '/track';
$this->_listtype = 'list';
}
protected function get_list_fields(){
return [
'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
'name' => ['title' => 'Track Name', 'type' => 'text'],
'track_type' => ['title' => 'Type', 'type' => 'select'],
'event_id' => ['title' => 'Event', 'type' => 'text'],
'room' => ['title' => 'Room', 'type' => 'text'],
'max_attendees' => ['title' => 'Max Attendees', 'type' => 'number'],
'order' => ['title' => 'Order', 'type' => 'number'],
'status' => ['title' => 'Status', 'type' => 'select'],
];
}
protected function get_form_fields($type, $values){
$track_types = [
'general' => 'General',
'technical' => 'Technical',
'business' => 'Business',
'networking' => 'Networking',
'workshop' => 'Workshop',
'panel' => 'Panel Discussion',
'keynote' => 'Keynote',
'other' => 'Other'
];
$status_options = [
'active' => 'Active',
'inactive' => 'Inactive',
'completed' => 'Completed'
];
// Get events for dropdown
$events = $this->getlambda('get', 'events', 'event', 'dropdown');
$events_dd = [];
if(isset($events->data->items)) {
foreach($events->data->items as $event){
$events_dd[$event->id] = $event->name;
}
}
return [
'event_id' => ['title' => 'Event', 'type' => 'select', 'required' => true, 'values' => $events_dd],
'name' => ['title' => 'Track Name', 'type' => 'text', 'required' => true],
'description' => ['title' => 'Description', 'type' => 'textarea'],
'track_type' => ['title' => 'Track Type', 'type' => 'select', 'required' => true, 'values' => $track_types],
'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => $status_options],
'max_attendees' => ['title' => 'Max Attendees', 'type' => 'number', 'value' => 0],
'is_parallel' => ['title' => 'Parallel Track', 'type' => 'yesno', 'required' => true],
'order' => ['title' => 'Display Order', 'type' => 'number', 'value' => 0],
'room' => ['title' => 'Room/Venue', 'type' => 'text'],
'virtual_link' => ['title' => 'Virtual Link', 'type' => 'text'],
];
}
protected function _beforesave($type, $request) {
$data = $request->except('_token');
// Set default values
$data['max_attendees'] = $data['max_attendees'] ?? 0;
$data['order'] = $data['order'] ?? 0;
return $data;
}
protected function _beforeform($type, $values) {
// No special processing needed for tracks
return $values;
}
}