92 lines
3.3 KiB
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;
|
|
}
|
|
}
|