- Removido README.md padrão do Laravel (backend) - Removidos scripts de deploy (não mais necessários) - Atualizado copilot-instructions.md para novo fluxo - Adicionada documentação de auditoria do servidor - Sincronizado código de produção com repositório Novo workflow: - Trabalhamos diretamente em /root/webmoney (symlink para /var/www/webmoney) - Mudanças PHP são instantâneas - Mudanças React requerem 'npm run build' - Commit após validação funcional
52 lines
1.1 KiB
PHP
Executable File
52 lines
1.1 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
|
|
class CostCenterKeyword extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $fillable = [
|
|
'cost_center_id',
|
|
'keyword',
|
|
'is_case_sensitive',
|
|
'is_active',
|
|
];
|
|
|
|
protected $casts = [
|
|
'is_case_sensitive' => 'boolean',
|
|
'is_active' => 'boolean',
|
|
];
|
|
|
|
/**
|
|
* Relação com o centro de custo
|
|
*/
|
|
public function costCenter(): BelongsTo
|
|
{
|
|
return $this->belongsTo(CostCenter::class);
|
|
}
|
|
|
|
/**
|
|
* Scope para keywords ativas
|
|
*/
|
|
public function scopeActive($query)
|
|
{
|
|
return $query->where('is_active', true);
|
|
}
|
|
|
|
/**
|
|
* Verifica se o texto contém esta palavra-chave
|
|
*/
|
|
public function matchesText(string $text): bool
|
|
{
|
|
if ($this->is_case_sensitive) {
|
|
return str_contains($text, $this->keyword);
|
|
}
|
|
return str_contains(strtolower($text), strtolower($this->keyword));
|
|
}
|
|
}
|