Files
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

86 lines
3.7 KiB
PHP

<?php
namespace App\Services\Parametrizacao;
use App\Enums\Log\Operacao;
use App\Models\Integracao\Bnafar\Medicamento;
use App\Models\Log\CadastroMaterialIntegracaoBnafarMedicamento;
use App\Services\Service;
use Illuminate\Support\Facades\DB;
class TabelaObmService extends Service
{
public static function show($id)
{
$materiais = DB::table('cadastro_material')
->select([
'cadastro_material.id',
'cadastro_material.descricao',
])
->join('cadastro_material_integracao_bnafar_medicamento', 'cadastro_material_integracao_bnafar_medicamento.material_id', 'cadastro_material.id')
->where('cadastro_material_integracao_bnafar_medicamento.medicamento_id', $id)
->get();
$log = DB::table('cadastro_material')
->select([
DB::raw("DATE_FORMAT(log_cadastro_material_integracao_bnafar_medicamento.created_at, '%d/%m/%Y %h:%i') AS data_hora"),
'log_operacao.nome AS operacao_nome',
'cadastro_material.descricao AS material_descricao',
'cadastro_cidadao.nome AS usuario_nome',
])
->join('log_cadastro_material_integracao_bnafar_medicamento', 'log_cadastro_material_integracao_bnafar_medicamento.material_id', 'cadastro_material.id')
->join('log_operacao', 'log_operacao.id', 'log_cadastro_material_integracao_bnafar_medicamento.operacao_id')
->join('cadastro_lotacao', 'cadastro_lotacao.id', 'log_cadastro_material_integracao_bnafar_medicamento.created_lotacao_id')
->join('cadastro_usuario', 'cadastro_usuario.id', 'cadastro_lotacao.usuario_id')
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id')
->where('log_cadastro_material_integracao_bnafar_medicamento.medicamento_id', $id)
->get();
return [
'materiais' => $materiais,
'log' => $log,
];
}
public static function store($request)
{
$medicamento = Medicamento::find($request->medicamento_id);
$sync = $medicamento->materiais()->sync($request->materiais);
foreach ($sync['attached'] as $value) {
CadastroMaterialIntegracaoBnafarMedicamento::create([
'operacao_id' => Operacao::INCLUSAO,
'medicamento_id' => $medicamento->id,
'material_id' => $value,
]);
}
foreach ($sync['detached'] as $value) {
CadastroMaterialIntegracaoBnafarMedicamento::create([
'operacao_id' => Operacao::EXCLUSAO,
'medicamento_id' => $medicamento->id,
'material_id' => $value,
]);
}
}
public static function datatable()
{
return DB::table('integracao_bnafar_medicamento')
->select([
'integracao_bnafar_medicamento.id AS medicamento_id',
'integracao_bnafar_medicamento.codigo AS medicamento_codigo',
'integracao_bnafar_medicamento.descricao AS medicamento_descricao',
DB::raw("GROUP_CONCAT(DISTINCT cadastro_material.descricao SEPARATOR ', ') AS material_descricao"),
])
->leftJoin('cadastro_material_integracao_bnafar_medicamento', 'cadastro_material_integracao_bnafar_medicamento.medicamento_id', 'integracao_bnafar_medicamento.id')
->leftJoin('cadastro_material', 'cadastro_material.id', 'cadastro_material_integracao_bnafar_medicamento.material_id')
->groupBy([
'integracao_bnafar_medicamento.id',
'integracao_bnafar_medicamento.codigo',
'integracao_bnafar_medicamento.descricao',
]);
}
}