Files
animethemes-server/app/Events/BasePivotEvent.php
T
paranarimasuandGitHub 088ea287c5 feat: initial migration to pennant features for feature flags and global site config [incremental] (#573)
* feat: initial commit for feature management

* style: fix StyleCI findings

* fix(api): prohibit features of nonnull scope from API & fix(admin): wrong translate key

* style: fix Static Analysis error
2023-04-23 18:54:34 -05:00

77 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Events;
use App\Constants\Config\ServiceConstants;
use App\Contracts\Events\DiscordMessageEvent;
use App\Models\BaseModel;
use Illuminate\Support\Facades\Config;
/**
* Class BasePivotEvent.
*
* @template TModelRelated of \App\Models\BaseModel
* @template TModelForeign of \App\Models\BaseModel
*/
abstract class BasePivotEvent implements DiscordMessageEvent
{
/**
* Create a new event instance.
*
* @param TModelRelated $related
* @param TModelForeign $foreign
*/
public function __construct(protected BaseModel $related, protected BaseModel $foreign)
{
}
/**
* Get the related model.
*
* @return TModelRelated
*/
public function getRelated(): BaseModel
{
return $this->related;
}
/**
* Get the foreign model.
*
* @return TModelForeign
*/
public function getForeign(): BaseModel
{
return $this->foreign;
}
/**
* Get Discord channel the message will be sent to.
*
* @return string
*/
public function getDiscordChannel(): string
{
return Config::get(ServiceConstants::DB_UPDATES_DISCORD_CHANNEL_QUALIFIED);
}
/**
* Determine if the message should be sent.
*
* @return bool
*/
public function shouldSendDiscordMessage(): bool
{
return true;
}
/**
* Get the description for the Discord message payload.
*
* @return string
*/
abstract protected function getDiscordMessageDescription(): string;
}