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; } }