5240cfbdd9
Правка целиком в комментариях: 37 файлов, ни строки кода. Её дописал сам pre-commit форматтер во время предыдущей записи и оставил неподтверждённой. Записываю, чтобы папка ветки не оставалась грязной. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
61 lines
2.6 KiB
PHP
61 lines
2.6 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
namespace App\Models;
|
||
|
||
use Illuminate\Database\Eloquent\Model;
|
||
|
||
/**
|
||
* Общие настройки клиентских СМС (плата за именной отправителя, льготный
|
||
* срок долга по имени, границы окна отправки, срок «рассылка зависла»).
|
||
*
|
||
* Общая справочная таблица (не tenant-aware, без RLS), одна строка.
|
||
*
|
||
* Источник: db/schema.sql, table `client_sms_settings`.
|
||
*
|
||
* «Кому шлём» (строка листа 4.14) лежит в jsonb, а jsonb хранит и объект —
|
||
* поэтому тип не список, а массив с любыми ключами: к списку его приводит
|
||
* AllowedSmsOperators::list().
|
||
*
|
||
* @property int $quiet_from_hour
|
||
* @property int $quiet_to_hour
|
||
* @property int $stuck_after_minutes
|
||
* @property array<array-key, string>|null $allowed_operators
|
||
* @property int $max_upload_phones
|
||
*
|
||
* @mixin IdeHelperClientSmsSettings
|
||
*/
|
||
class ClientSmsSettings extends Model
|
||
{
|
||
protected $fillable = [
|
||
'name_fee_rub_per_operator',
|
||
'name_debt_grace_days',
|
||
'quiet_from_hour',
|
||
'quiet_to_hour',
|
||
'stuck_after_minutes',
|
||
'allowed_operators',
|
||
'max_upload_phones',
|
||
];
|
||
|
||
protected function casts(): array
|
||
{
|
||
return [
|
||
'name_fee_rub_per_operator' => 'decimal:2',
|
||
'name_debt_grace_days' => 'integer',
|
||
'quiet_from_hour' => 'integer',
|
||
'quiet_to_hour' => 'integer',
|
||
'stuck_after_minutes' => 'integer',
|
||
// Кому вообще шлём (строка листа 4.14). 🔴 НЕ путать со списком
|
||
// операторов, с которыми согласовано имя отправителя: тот лежит в
|
||
// `client_sms_senders.operators`, и от него считается плата за имя
|
||
// (В-150). Связать их = поднять плату всем клиентам вчетверо.
|
||
'allowed_operators' => 'array',
|
||
// Сколько номеров можно прислать за ОДНУ загрузку базы (строка листа 4.6).
|
||
// 🔴 НЕ потолок наших расходов на ДаДату: их держит дневной потолок портала
|
||
// services.dadata.daily_cap_rub (В-90 — потолка на клиента владелец не захотел).
|
||
'max_upload_phones' => 'integer',
|
||
];
|
||
}
|
||
}
|