CrestRoad/laravel/app/Http/Controllers/SessionagendaController.php

99 lines
4.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\LambdaRequest;
use App\Models\Sessionagenda;
use App\Models\Session;
use App\Models\Sessionagendalib;
use App\Models\Faculty;
use DB;
class SessionagendaController extends LocalController
{
public function __construct()
{
$this->middleware('auth');
$this->_service = 'mag';
$this->_module = 'magazine';
$this->_viewname = 'sessionagenda';
$this->_title = 'Session Agenda';
$this->_base_url = '/sessionagenda';
$this->_basemodel = new Sessionagenda;
}
protected function get_list_buttons() {
return [ ['title' => 'Add New', 'link' => $this->_base_url.'/addnew' ], ['title' => 'Back to Sessions', 'link' => '/sessions'] ];
}
protected function get_list_data(Request $request) {
$data = $this->_basemodel->where('session_id', $request->session()->get('session_id', 0) )->get();
$dd = [];
foreach($data->toArray() as $d) {
$dd[] = (object)$d;
}
return $dd;
}
protected function get_list_fields(){
return [
'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
'title' => ['title' => 'Topic', 'type' => 'text'],
'date' => ['title' => 'Date', 'type' => 'date'],
'time' => ['title' => 'Time', 'type' => 'time'],
'duration' => ['title' => 'Duration', 'type' => 'text'],
'speaker' => ['title' => 'Speaker', 'type' => 'text'],
'status' => ['title' => 'Status', 'type' => 'select'],
];
}
protected function get_form_fields($type, $values){
$sess = $this->_request->session()->get('session_id', 0);
$sess = Session::find($sess);
$sess->dates = json_decode($sess->dates);
$dates = [];
foreach($sess->dates->date as $date) {
$dates[$date] = date("d M Y", strtotime($date));
}
$faculties = explode('|', trim($sess->faculty, '|') );
$faculties = Faculty::wherein('id', $faculties)->select("id","name")->orderby('sort_order')->get();
$faculty_dd = ['break' => 'Break' ];;
foreach($faculties as $faculty) {
$faculty_dd[$faculty->name] = $faculty->name;
}
//echo '<pre>'; print_r($faculties); exit;
$agends = Sessionagendalib::where('status', 'active')->where('type', $sess->type)->select("id","type","title","duration","speaker")->get();
$agendas = ['break' => ['title' => 'Break'] ];
foreach($agends as $agend) {
$agendas[$agend->id] = $agend->toArray();
}
//echo '<pre>'; print_r($agendas); exit;
$fields = [
'topics' => ['title' => 'Select Topic from Bank', 'type' => 'select', 'required' => true, 'values' => $agendas],
'title' => ['title' => 'Topic', 'type' => 'text', 'required' => true ],
'date' => ['title' => 'Date', 'type' => 'select', 'required' => true, 'values' => $dates],
'time' => ['title' => 'Time', 'type' => 'text', 'required' => true],
'duration' => ['title' => 'Duration', 'type' => 'text', 'required' => true ],
'theme' => ['title' => 'Theme (only for Casper Clinic)', 'type' => 'text'],
'speaker' => ['title' => 'Speaker', 'type' => 'multiselect', 'required' => true, 'values' => $faculty_dd ],
'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
];
return $fields;
}
protected function _beforesave($type, $request) {
$data = $request->except('_token');
$data['session_id'] = $this->_request->session()->get('session_id', 0);
$data['speaker'] = $data['speaker'][0] == 'break' ? [] : $data['speaker'];
$data['speaker'] = implode(' & ', $data['speaker']);
unset($data['topicbank']);
//echo '<pre>'; print_r($data); exit;
return $data;
}
protected function _beforeform($type, $values) {
if($type == 'edit') {
$values->speaker = explode(' & ', $values->speaker);
}
return $values;
}
}