86 lines
3.7 KiB
PHP
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',
|
|
]);
|
|
}
|
|
}
|