%PDF- %PDF-
Direktori : /var/www/html/camillo/camillo-api-master/app/Models/ |
Current File : /var/www/html/camillo/camillo-api-master/app/Models/Classroom.php |
<?php namespace App\Models; use App\Models\Pivots\ClassroomMinor; use App\Scopes\ClassroomScope; use App\User; use Carbon\Carbon; use Chelout\RelationshipEvents\Concerns\HasBelongsToManyEvents; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Log; use Watson\Validating\ValidatingTrait; /** * Class Classroom * * @property int $institute_id */ class Classroom extends Model { use ValidatingTrait; protected $fillable = [ 'institute_id', 'schoolyear_id', 'class_name', 'leaving_time', 'arrival_time', 'created_by', 'updated_by', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun', 'pusher_id' ]; protected $attributes = [ 'mon' => true, 'tue'=> true, 'wed'=> true, 'thu'=> true, 'fri'=> true, 'sat'=> true, 'sun' => false, ]; protected $dates = [ 'created_at', 'updated_at' ]; protected $rules = [ 'institute_id' => 'required|integer|exists:institutes,id', 'schoolyear_id' => 'required|integer|exists:schoolyears,id', 'class_name' => 'required|string', 'arrival_time' => 'required', 'leaving_time' => 'required', /* 'created_by' => 'required|integer|exists:users,id', 'updated_by' => 'required|integer|exists:users,id'*/ ]; /** * Validation messages to be passed to the validator. * * @var array */ protected $validatingMessages = [ /*'institute_id.required' => "", 'institute_id.exists' => "", 'schoolyear_id.required' => "", 'schoolyear_id.exists' => "", 'class_name.required' => "", 'arrival_time.required' => "", 'arrival_time.date_format' => "", 'leaving_time.required' => "", 'leaving_time.date_format' => ""*/ ]; protected static function boot() { parent::boot(); static::addGlobalScope(new ClassroomScope); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function institute() { return $this->belongsTo(Institute::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function schoolyear() { return $this->belongsTo(Schoolyear::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function creator() { return $this->belongsTo(User::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function updater() { return $this->belongsTo(User::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function minors() { return $this->belongsToMany(Minor::class) ->using(ClassroomMinor::class)->withPivot('active', 'arrival_time'); } public function subscriptions() { return $this->hasMany(Subscription::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function events() { return $this->hasMany(Event::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function notices() { return $this->hasMany(Notice::class); } public function getArrivalTimeAttribute($value) { // return Carbon::parse($value)->format('H:i'); return $value; } public function getLeavingTimeAttribute($value) { // return Carbon::parse($value)->format('H:i'); return $value; } public function countMinorsByStatus() { $children = Minor::whereHas('classrooms', function($query) { $query->where('active', 1)->where('classroom_id', $this->id); })->get(); $total = $children->count(); $children_statuses = $children->map(function ($item, $key) { return ["status_description" => $item->status($this)["description"]]; }); $grouped_children= $children_statuses->groupBy('status_description'); $count = $grouped_children->map(function ($item, $key) { return collect($item)->count(); }); $count = $count->toArray(); $count["total"] = $total; return $count; } }