105 lines
4.2 KiB
PHP
105 lines
4.2 KiB
PHP
<?php
|
||
|
||
namespace Modules\Taxi\App\Models;
|
||
|
||
use Illuminate\Database\Eloquent\Model;
|
||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||
use Modules\Taxi\Database\factories\TaxiMainFactory;
|
||
//use Spatie\Activitylog\Traits\LogsActivity;
|
||
// use Spatie\Activitylog\LogOptions;
|
||
use App\Traits\LogsActivity_custom;
|
||
use Modules\Taxi\App\DTO\TaxiOrderDTO;
|
||
use App\Enums\LogBusinessEvents;
|
||
|
||
class TaxiMain extends Model
|
||
{
|
||
//use LogsActivity;
|
||
use LogsActivity_custom;
|
||
|
||
protected $table = 'taxi_main';
|
||
protected $guarded = [];
|
||
|
||
// protected $activityCustomProperties = [
|
||
// 'emp_login' => 'dgavrilov',
|
||
// ];
|
||
|
||
// public function getActivitylogOptions(): LogOptions
|
||
// {
|
||
// return LogOptions::defaults()
|
||
// ->logAll()
|
||
// ->logOnlyDirty()
|
||
// ->useLogName('Taxi')
|
||
// ->logExcept(['created_at', 'updated_at']);
|
||
|
||
// }
|
||
|
||
public function __construct()
|
||
{
|
||
parent::__construct();
|
||
//В трейте LogsActivity_custom это свойство отвечает за название приложения, события в котором логируются. Оно записывается в поле activity_log.log_name
|
||
$this->logActivity_custom__name = 'Taxi';
|
||
$this->addCustomLogProperties(['custom__test' => 'test']);
|
||
}
|
||
|
||
//ГАВРИЛОВ. сделай метод не статическим
|
||
public static function getFieldsTitle()
|
||
{
|
||
return [
|
||
'id' => 'Номер запроса',
|
||
'emp_login' => 'Логин сотрудника',
|
||
'emp_phone' => 'Телефон сотрудника',
|
||
'taxi_date' => 'Дата заказа',
|
||
'taxi_time' => 'Время заказа',
|
||
'taxi_address_from' => 'Адрес откуда',
|
||
'taxi_address_to' => 'Адрес куда',
|
||
'cancel_rqst' => 'Запрос отменен',
|
||
];
|
||
|
||
}
|
||
|
||
public function createOrder(TaxiOrderDTO $orderData): string
|
||
{
|
||
//ГАВРИЛОВ. проверь будет ли возвращаться ошибка без try catch
|
||
// try {
|
||
|
||
$this->logBusinessEvent(LogBusinessEvents::Create);
|
||
$newOrder = $this->create(
|
||
[
|
||
'emp_login' => $orderData->emp_login,
|
||
'taxi_date' => $orderData->taxi_date,
|
||
'emp_phone' => $orderData->emp_phone,
|
||
'taxi_time' => $orderData->taxi_time,
|
||
'taxi_address_from' => $orderData->taxi_address_from,
|
||
'taxi_address_to' => $orderData->taxi_address_to
|
||
]
|
||
);
|
||
return $newOrder->id;
|
||
// } catch (\Exception $e) {
|
||
// return $e->getMessage();
|
||
// }
|
||
}
|
||
|
||
// /**
|
||
// * @return string Метод нужен для переопределения параметра трейта. Простое переопределение вызывает конфликт
|
||
// */
|
||
//protected $logActivity_custom__name = 'Taxi';
|
||
// public function getLogName(): string
|
||
// {
|
||
// return 'Taxi';
|
||
// }
|
||
|
||
//protected $logActivity_custom__name;
|
||
|
||
// public function getActivitylogOptions(): LogOptions
|
||
// {
|
||
// //Через метод default() получаем параметры класса логирования по умолчанию. Ниже можем их переопределять в зависимости от специфики работы с моделью
|
||
// $logOptions = LogOptions::defaults()
|
||
// ->logOnly(['*']); //Устанавиваем список логируемых данных (полей модели), либо, как в этом случае, логируем все поля
|
||
// //->logExcept(['created_at', 'updated_at']) //Не логируем поля изменения и создания записи в ЛЮБОМ случае
|
||
// //->logOnlyDirty(); //Логируем только те поля, которые были изменены
|
||
// $logOptions->logName = 'Taxi'; //Устанавливаем значение для имени приложения
|
||
|
||
// return $logOptions;
|
||
// }
|
||
}
|