I want to output user activity history.
Here's observer that i want to output message of user activity to my front end if($drop_student){ Logger::createLog("Student Schedule Removed for ". $student->first_name . " " . $student->last_name . " '" . $schedule->name . "'");
UPDATED
public function created(StudentSchedule $student_schedule)
{
$student = $student_schedule->student()->get()->first();
$schedule = $student_schedule->schedule()->get()->first()->subject->subject;
Logger::createLog("Student Schedule Added for " . $student->first_name . " " . $student->last_name . " '" . $schedule->name . "'");
}
/**
* Handle the student schedule "updated" event.
*
* @param \App\Models\Student\Schedule $student_schedule
* @return void
*/
public function updated(StudentSchedule $student_schedule)
{
$student = $student_schedule->student()->get()->first();
$schedule = $student_schedule->schedule()->get()->first()->subject->subject;
$drop_students = $student_schedule->schedule()->where('id')->get();
foreach ($drop_students as $drop_student) {
$drop_student = $student_schedule->schedule();
}
$drop_student->save(['final_grade' => 'DRP']);
if ($drop_student) {
Logger::createLog("Student Schedule Removed for " . $student->first_name . " " . $student->last_name . " '" . $schedule->name . "'");
} else {
Logger::createLog("Student Schedule Updated for " . $student->first_name . " " . $student->last_name . " '" . $schedule->name . "'");
}
}
Here my relationship models
student
& schedule
hasMany student schedule
student schedule model:
class Schedule extends Model
{
use HasFactory;
protected $table = 'student.schedules';
protected $fillable = [
'student_id',
'schedule_id',
'removal_grade',
'final_grade',
'is_published',
];
public $timestamps = false;
public function student()
{
return $this->belongsTo('App\Models\Student', 'student_id');
}
public function schedule()
{
return $this->belongsTo('App\Models\Schedule', 'schedule_id');
}
}
student model:
class Student extends Model
{
use HasFactory;
const MALE = 'male';
const FEMALE = 'female';
protected $table = 'students';
protected $fillable = [
'first_name',
'last_name',
'middle_name',
'suffix',
'email',
'student_number',
'sex',
'birthdate',
'lrn',
"profile_picture"
];
protected $appends = ['allow_delete'];
public function schedules()
{
return $this->hasMany('App\Models\Student\Schedule', 'student_id', 'id');
}
}
schedule model:
class Schedule extends Model
{
use HasFactory;
const MONDAY = 'M';
const TUESDAY = 'T';
const WEDNESDAY = 'W';
const THURSDAY = 'TH';
const FRIDAY = 'F';
const SATURDAY = 'S';
const SUNDAY = 'SUN';
protected $table = 'schedules';
protected $fillable = [
'start_time',
'end_time',
'room_id',
'subject_id',
'session_id',
'user_id',
'day',
'section_id',
'price_per_unit_id',
];
protected $casts = ['day' => 'array'];
protected $appends = ['allow_delete', 'enrollments_count'];
public function students()
{
return $this->hasManyThrough(
'App\Models\Student',
'App\Models\Student\Schedule',
'schedule_id',
'id',
'id',
'student_id',
);
}
public function studentSchedules()
{
return $this->hasMany('App\Models\Student\Schedule', 'schedule_id', 'id');
}
}
Here's api that i use.
Route::post('/drop-schedules', [EnrollmentController::class, 'dropSchedules']);
Here's dropSchedules method in controller.
public function dropSchedules(Request $request)
{
StudentSchedule::whereIn('id', $request->student_schedules)->update(['final_grade' => 'DRP']);
return response()->json([
'message' => 'Student schedules successfully dropped.'
], 200);
}
but when i fire the drop schedule button. This logic it doesn't run. Only the created method Student Schedule Added for