<?php

namespace App\PackagesAdmin\Services;

use App\Packages\Capsule\Models\Capsule;
use App\Packages\Capsule\Models\CapsuleBlock;
use App\Packages\User\Models\UserNotification;
use App\Packages\User\Models\UserNotificationPush;
use App\Packages\User\Notifications\NotificationBlocked;
use App\Packages\User\Notifications\TypesNotification;

class CapsuleService {

    public static function blockCapsule(Capsule $capsule, $description)
    {
        $capsule->blocked = true;
        $capsule->save();

        $capsuleBlock = new CapsuleBlock();
        $capsuleBlock->description = $description;

        $capsule->block()->save($capsuleBlock);

        NotificationBlocked::dispatch($capsule)
            ->onQueue(TypesNotification::QUEUE_NOTIFICATIONS);
    }

    public static function unblockCapsule(Capsule $capsule)
    {
        /** Change capsule status */
        $capsule->blocked = false;
        $capsule->save();

        /** Delete block description */
        $capsule->block()->delete();

        $notification = UserNotification::query()
            ->where('capsule_id', $capsule->id)
            ->where('type', TypesNotification::BLOCKED)
            ->first();

        if ( $notification ) $notification->delete();

        $notification_push = UserNotificationPush::query()
            ->where('capsule_id', $capsule->id)
            ->where('type', TypesNotification::BLOCKED)
            ->first();

        if ( $notification_push ) $notification_push->delete();
    }

}
