select([ 'cadastro_usuario.id', 'cadastro_cidadao.nome AS cidadao_nome', 'cadastro_cidadao.cns AS cidadao_cns', 'cadastro_cidadao.cpf AS cidadao_cpf', 'cadastro_usuario.registro_tipo_id', 'cadastro_usuario.registro_numero', ]) ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id') ->whereNull('cadastro_usuario.deleted_at') ->when(request()->query('infraestrutura_id'), function ($query) { $query->whereExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_lotacao') ->whereColumn('cadastro_lotacao.usuario_id', 'cadastro_usuario.id') ->where('infraestrutura_id', request()->query('infraestrutura_id')); }); }) ->when(request()->query('unidade_id'), function ($query) { $query->whereExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_lotacao') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'cadastro_lotacao.infraestrutura_id') ->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id') ->whereColumn('cadastro_lotacao.usuario_id', 'cadastro_usuario.id') ->where('unidade_id', request()->query('unidade_id')); }); }) ->when(request()->query('registro_estado_id'), function ($query) { $query->where('cadastro_usuario.registro_estado_id', request()->query('registro_estado_id')); }); if (DataUtil::isStringBoolean(request()->query('aplicador'))) { $usuarios->whereExists(function ($query) { $query->select(DB::raw(1)) ->from('imunizacao_parametrizacao_ocupacao') ->join('cadastro_lotacao', 'cadastro_lotacao.ocupacao_id', 'imunizacao_parametrizacao_ocupacao.ocupacao_id') ->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.infraestrutura_id', 'cadastro_lotacao.infraestrutura_id') ->whereColumn('cadastro_lotacao.usuario_id', 'cadastro_usuario.id') ->where('imunizacao_sala_vacinacao.id', request()->get('sala_vacinacao_id')) ->when(is_array(request()->not_in), fn ($q) => $q->whereNotIn('cadastro_cidadao.cns', request()->not_in));; }); } if (DataUtil::isStringBoolean(request()->query('with_atencao_basica_equipe'))) { $usuarios->whereExists(function ($query) { $query->select(DB::raw(1)) ->from('atencao_basica_parametrizacao_equipe_usuario') ->whereColumn('atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'cadastro_usuario.id'); }); } if (is_numeric(request()->query('with_atencao_basica_permissao'))) { $usuarios->whereExists(function ($query) { $query->select(DB::raw(1)) ->from('atencao_basica_parametrizacao_outros_permissao_ocupacao') ->join('cadastro_lotacao', 'cadastro_lotacao.usuario_id', 'cadastro_usuario.id') ->join('sigtap.ocupacao', 'sigtap.ocupacao.id', 'cadastro_lotacao.ocupacao_id') ->where('atencao_basica_parametrizacao_outros_permissao_ocupacao.permissao_id', request()->query('with_atencao_basica_permissao')) ->whereColumn('atencao_basica_parametrizacao_outros_permissao_ocupacao.ocupacao', 'sigtap.ocupacao.codigo'); }); } if (is_numeric(request()->query('not_usuario_id'))) { $usuarios->whereNotIn('cadastro_usuario.id', [request()->query('not_usuario_id')]); } else if (is_array(request()->query('not_usuario_id'))) { $usuarios->whereNotIn('cadastro_usuario.id', request()->query('not_usuario_id')); } if (!DataUtil::isStringTrue(request()->query('with_not_regularized'))) { $usuarios->whereNotNull('cadastro_cidadao.cns'); } if (is_array(request()->query('especialidades'))) { $usuarios->whereExists(function ($query) { $query->select(DB::raw(1)) ->from('cadastro_lotacao') ->join('cadastro_especialidade', 'cadastro_especialidade.ocupacao_id', 'cadastro_lotacao.ocupacao_id') ->whereColumn('cadastro_lotacao.usuario_id', 'cadastro_usuario.id') ->whereIn('cadastro_especialidade.id', request()->query('especialidades')); }); } if (DataUtil::isStringBoolean(request()->query('coleta'))) { $usuarios->whereExists(function($query) { $query->select(DB::raw(1)) ->from('cadastro_lotacao') ->join('sigtap.procedimento_ocupacao', 'sigtap.procedimento_ocupacao.ocupacao_id', 'cadastro_lotacao.ocupacao_id') ->join('sigtap.procedimento', 'sigtap.procedimento.id', 'sigtap.procedimento_ocupacao.procedimento_id') ->whereColumn('cadastro_lotacao.usuario_id', 'cadastro_usuario.id') ->where('sigtap.procedimento.codigo', ProcedimentoEnum::COLETA_DE_MATERIAL_PARA_EXAME_LABORATORIAL) ->where('sigtap.procedimento_ocupacao.competencia_id', function ($query) { $query->select('sigtap.competencia.id') ->from('sigtap.competencia') ->orderBy('id') ->limit(1); }) ->whereNull('deleted_at'); }); } return $usuarios; } public static function assinatura($request) { $assinatura = UsuarioAssinatura::where('usuario_id', $request['id']) ->first() ?? new UsuarioAssinatura(); $assinatura->usuario_id = $request['id']; $assinatura->arquivo = strtoupper($request['arquivo']); $assinatura->save(); DB::transaction(function () use ($request) { if($request->files->get('assinatura') != '') { foreach ($request->files->get('assinatura') as $profissional) { $arquivo = strtoupper($profissional->getClientOriginalName()); $pasta = storage_path('app' . DIRECTORY_SEPARATOR . 'exame-laboratorial' . DIRECTORY_SEPARATOR . 'assinaturas' . DIRECTORY_SEPARATOR . app('config')->get('database.default')); $profissional->move($pasta, $arquivo); } } }); return $assinatura; } public static function destroyAssinatura($id) { $assinatura = UsuarioAssinatura::findOrFail($id); if(Storage::exists('exame-laboratorial' . DIRECTORY_SEPARATOR . 'assinaturas' . DIRECTORY_SEPARATOR . app('config')->get('database.default') . $assinatura->arquivo)) { Storage::delete('exame-laboratorial' . DIRECTORY_SEPARATOR . 'assinaturas' . DIRECTORY_SEPARATOR . app('config')->get('database.default') . $assinatura->arquivo); } UsuarioAssinatura::findOrFail($id)->delete(); } public static function downloadAssinatura($id) { $assinatura = UsuarioAssinatura::findOrFail($id); return [ 'nome' => $assinatura->arquivo, 'arquivo' => Storage::path('exame-laboratorial' . DIRECTORY_SEPARATOR . 'assinaturas' . DIRECTORY_SEPARATOR . app('config')->get('database.default') . DIRECTORY_SEPARATOR . $assinatura->arquivo), ]; } public static function buscarMedicos() { } }