This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
<?php
|
||||
|
||||
use App\Enums\Administracao\Modulo;
|
||||
use App\Models\Administracao\Papel;
|
||||
use App\Models\Cadastro\SujeitoAtencao\Lotacao;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class TransferPermissionsFromAmbulatorioAcolhimentoToAtendimentoEnfermagem_20250429150152 extends Seeder
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
DB::transaction(function () {
|
||||
|
||||
$this->transferPermissions();
|
||||
$this->deletePreAtendimento();
|
||||
});
|
||||
}
|
||||
|
||||
private function transferPermissions()
|
||||
{
|
||||
$permissoesAtendimentoEnfermagem = DB::table('administracao_permissao AS permissao')
|
||||
->join('administracao_funcionalidade AS funcionalidade', 'funcionalidade.id', 'permissao.funcionalidade_id')
|
||||
->join('administracao_modulo AS modulo', 'modulo.id', 'funcionalidade.modulo_id')
|
||||
->where('modulo.identificador', Modulo::AMBULATORIO)
|
||||
->where('funcionalidade.identificador', 'atendimento-enfermagem')
|
||||
->select(
|
||||
'permissao.id',
|
||||
'permissao.crud_acao_id'
|
||||
)
|
||||
->get();
|
||||
|
||||
DB::table('administracao_papel AS papel')
|
||||
->join('administracao_papel_permissao AS papel_permissao', 'papel_permissao.papel_id', 'papel.id')
|
||||
->join('administracao_permissao AS permissao', 'permissao.id', 'papel_permissao.permissao_id')
|
||||
->join('administracao_funcionalidade AS funcionalidade', 'funcionalidade.id', 'permissao.funcionalidade_id')
|
||||
->join('administracao_modulo AS modulo', 'modulo.id', 'funcionalidade.modulo_id')
|
||||
->where('modulo.identificador', Modulo::AMBULATORIO)
|
||||
->where('funcionalidade.identificador', 'pre-atendimento')
|
||||
->select(
|
||||
'papel.id',
|
||||
'papel.nome',
|
||||
'permissao.crud_acao_id'
|
||||
)
|
||||
->orderBy('papel.id')
|
||||
->orderBy('permissao.crud_acao_id')
|
||||
->get()
|
||||
->each(function ($papel) use ($permissoesAtendimentoEnfermagem) {
|
||||
|
||||
$papelModel = Papel::findOrFail($papel->id);
|
||||
$permissaoAtendimentoEnfermagem = $permissoesAtendimentoEnfermagem->where('crud_acao_id', $papel->crud_acao_id)->first();
|
||||
|
||||
if (!$papelModel->permissoes()->where('id', $permissaoAtendimentoEnfermagem->id)->exists()) {
|
||||
|
||||
$papelModel->permissoes()->attach($permissaoAtendimentoEnfermagem->id);
|
||||
}
|
||||
});
|
||||
|
||||
DB::table('cadastro_lotacao AS lotacao')
|
||||
->join('cadastro_usuario AS usuario', 'usuario.id', 'lotacao.usuario_id')
|
||||
->join('cadastro_cidadao AS cidadao', 'cidadao.id', 'usuario.cidadao_id')
|
||||
->join('sigtap.ocupacao AS ocupacao', 'ocupacao.id', 'lotacao.ocupacao_id')
|
||||
->join('cadastro_infraestrutura AS infraestrutura', 'infraestrutura.id', 'lotacao.infraestrutura_id')
|
||||
->join('cadastro_unidade AS unidade', 'unidade.id', 'infraestrutura.unidade_id')
|
||||
->join('administracao_lotacao_permissao AS lotacao_permissao', 'lotacao_permissao.lotacao_id', 'lotacao.id')
|
||||
->join('administracao_permissao AS permissao', 'permissao.id', 'lotacao_permissao.permissao_id')
|
||||
->join('administracao_funcionalidade AS funcionalidade', 'funcionalidade.id', 'permissao.funcionalidade_id')
|
||||
->join('administracao_modulo AS modulo', 'modulo.id', 'funcionalidade.modulo_id')
|
||||
->where('modulo.identificador', Modulo::AMBULATORIO)
|
||||
->where('funcionalidade.identificador', 'pre-atendimento')
|
||||
->select(
|
||||
'lotacao.id',
|
||||
'unidade.nome_fantasia AS unidade',
|
||||
'infraestrutura.nome AS infraestrutura',
|
||||
'cidadao.nome AS usuario',
|
||||
'ocupacao.nome',
|
||||
'permissao.crud_acao_id'
|
||||
)
|
||||
->orderBy('lotacao.id')
|
||||
->orderBy('permissao.crud_acao_id')
|
||||
->get()
|
||||
->each(function ($lotacao) use ($permissoesAtendimentoEnfermagem) {
|
||||
|
||||
$lotacaoModel = Lotacao::findOrFail($lotacao->id);
|
||||
$permissaoAtendimentoEnfermagem = $permissoesAtendimentoEnfermagem->where('crud_acao_id', $lotacao->crud_acao_id)->first();
|
||||
|
||||
if (!$lotacaoModel->permissoes()->where('id', $permissaoAtendimentoEnfermagem->id)->exists()) {
|
||||
|
||||
$lotacaoModel->permissoes()->attach($permissaoAtendimentoEnfermagem->id);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private function deletePreAtendimento()
|
||||
{
|
||||
$modulo = 'ambulatorio';
|
||||
$funcionalidade = 'pre-atendimento';
|
||||
|
||||
DB::table('administracao_lotacao_permissao_historico')
|
||||
->whereExists(function($query) use ($modulo, $funcionalidade) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('administracao_permissao')
|
||||
->join('administracao_funcionalidade', 'administracao_funcionalidade.id', 'administracao_permissao.funcionalidade_id')
|
||||
->join('administracao_modulo', 'administracao_modulo.id', 'administracao_funcionalidade.modulo_id')
|
||||
->where('administracao_modulo.identificador', $modulo)
|
||||
->where('administracao_funcionalidade.identificador', $funcionalidade)
|
||||
->whereColumn('administracao_permissao.id', 'administracao_lotacao_permissao_historico.permissao_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
DB::table('administracao_papel_permissao_historico')
|
||||
->whereExists(function($query) use ($modulo, $funcionalidade) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('administracao_permissao')
|
||||
->join('administracao_funcionalidade', 'administracao_funcionalidade.id', 'administracao_permissao.funcionalidade_id')
|
||||
->join('administracao_modulo', 'administracao_modulo.id', 'administracao_funcionalidade.modulo_id')
|
||||
->where('administracao_modulo.identificador', $modulo)
|
||||
->where('administracao_funcionalidade.identificador', $funcionalidade)
|
||||
->whereColumn('administracao_permissao.id', 'administracao_papel_permissao_historico.permissao_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
DB::table('administracao_lotacao_permissao')
|
||||
->whereExists(function($query) use ($modulo, $funcionalidade) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('administracao_permissao')
|
||||
->join('administracao_funcionalidade', 'administracao_funcionalidade.id', 'administracao_permissao.funcionalidade_id')
|
||||
->join('administracao_modulo', 'administracao_modulo.id', 'administracao_funcionalidade.modulo_id')
|
||||
->where('administracao_modulo.identificador', $modulo)
|
||||
->where('administracao_funcionalidade.identificador', $funcionalidade)
|
||||
->whereColumn('administracao_permissao.id', 'administracao_lotacao_permissao.permissao_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
DB::table('administracao_papel_permissao')
|
||||
->whereExists(function($query) use ($modulo, $funcionalidade) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('administracao_permissao')
|
||||
->join('administracao_funcionalidade', 'administracao_funcionalidade.id', 'administracao_permissao.funcionalidade_id')
|
||||
->join('administracao_modulo', 'administracao_modulo.id', 'administracao_funcionalidade.modulo_id')
|
||||
->where('administracao_modulo.identificador', $modulo)
|
||||
->where('administracao_funcionalidade.identificador', $funcionalidade)
|
||||
->whereColumn('administracao_permissao.id', 'administracao_papel_permissao.permissao_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
DB::table('administracao_permissao')
|
||||
->whereExists(function($query) use ($modulo, $funcionalidade) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('administracao_funcionalidade')
|
||||
->join('administracao_modulo', 'administracao_modulo.id', 'administracao_funcionalidade.modulo_id')
|
||||
->where('administracao_modulo.identificador', $modulo)
|
||||
->where('administracao_funcionalidade.identificador', $funcionalidade)
|
||||
->whereColumn('administracao_funcionalidade.id', 'administracao_permissao.funcionalidade_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
DB::table('administracao_menu')
|
||||
->whereExists(function($query) use ($modulo, $funcionalidade) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('administracao_funcionalidade')
|
||||
->join('administracao_modulo', 'administracao_modulo.id', 'administracao_funcionalidade.modulo_id')
|
||||
->where('administracao_modulo.identificador', $modulo)
|
||||
->where('administracao_funcionalidade.identificador', $funcionalidade)
|
||||
->whereColumn('administracao_funcionalidade.id', 'administracao_menu.funcionalidade_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
DB::table('administracao_funcionalidade')
|
||||
->whereExists(function($query) use ($modulo) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('administracao_modulo')
|
||||
->where('administracao_modulo.identificador', $modulo)
|
||||
->whereColumn('administracao_modulo.id', 'administracao_funcionalidade.modulo_id');
|
||||
})
|
||||
->where('administracao_funcionalidade.identificador', $funcionalidade)
|
||||
->delete();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
use App\Enums\WebService\Laboratorio\Cliente\PedidoStatus;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class SetWebServiceLaboratorioClientePedidoStatusIdOnExameLaboratorialAgendamento_20250606092649 extends Seeder
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
DB::table('exame_laboratorial_agendamento')->update([
|
||||
'web_service_laboratorio_cliente_pedido_status_id' => PedidoStatus::AGUARDANDO_PROCESSAMENTO
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user