This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Cadastro\Localizacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Cadastro\Localizacao\BairroRequest;
|
||||
use App\Models\Cadastro\Localizacao\Bairro;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class BairroController extends Controller
|
||||
{
|
||||
protected $modulo = 'cadastro';
|
||||
protected $funcionalidade = 'bairro';
|
||||
|
||||
public function datatable()
|
||||
{
|
||||
$bairros = Bairro::with([]);
|
||||
|
||||
return datatables()->of($bairros)->skipTotalRecords()->toJson();
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$bairros = $this->get(Bairro::class)->orderBy('nome')->get();
|
||||
|
||||
return response()->json($bairros, Response::HTTP_OK);
|
||||
}
|
||||
|
||||
public function store(BairroRequest $request)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$bairro = Bairro::create($this->getParams($request));
|
||||
|
||||
return response()->json($bairro, Response::HTTP_CREATED);
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
return response()->json($this->get(Bairro::class, $id), Response::HTTP_OK);
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$bairro = Bairro::findOrFail($id);
|
||||
|
||||
return response()->json(
|
||||
[
|
||||
'model' => [
|
||||
'nome' => $bairro->nome,
|
||||
],
|
||||
],
|
||||
Response::HTTP_OK
|
||||
);
|
||||
}
|
||||
|
||||
public function update(BairroRequest $request, $id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$bairro = tap(Bairro::findOrFail($id))->update($this->getParams($request));
|
||||
|
||||
return response()->json($bairro->fresh(), Response::HTTP_OK);
|
||||
}
|
||||
|
||||
private function getParams($request)
|
||||
{
|
||||
return [
|
||||
'nome' => mb_strtoupper($request->nome)
|
||||
];
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
Bairro::findOrFail($id)->delete();
|
||||
|
||||
return response()->json(null, Response::HTTP_NO_CONTENT);
|
||||
}
|
||||
|
||||
public function autocomplete()
|
||||
{
|
||||
$bairros = Bairro::with([]);
|
||||
return datatables()->of($bairros)->toJson();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,275 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Cadastro\Localizacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Cadastro\Localizacao\LogradouroRequest;
|
||||
use App\Models\Cadastro\Localizacao\Bairro;
|
||||
use App\Models\Cadastro\Localizacao\Logradouro;
|
||||
use App\Models\Cadastro\Localizacao\LogradouroTipo;
|
||||
use App\Models\Cns\TermoInvalido;
|
||||
use App\Models\Intranet\Estado;
|
||||
use App\Utils\DataUtil;
|
||||
use App\Utils\MaskUtil;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class LogradouroController extends Controller
|
||||
{
|
||||
protected $modulo = 'cadastro';
|
||||
protected $funcionalidade = 'logradouro';
|
||||
|
||||
public function datatable()
|
||||
{
|
||||
$logradouros = DB::table('cadastro_logradouro')
|
||||
->whereNull('cadastro_logradouro.deleted_at')
|
||||
->select([
|
||||
'cadastro_logradouro.id',
|
||||
'cadastro_estado.uf AS estado_uf',
|
||||
'cadastro_municipio.nome AS municipio_nome',
|
||||
'cadastro_bairro.nome AS bairro_nome',
|
||||
'cadastro_logradouro_tipo.descricao as logradouro_tipo_descricao',
|
||||
'cadastro_logradouro.nome',
|
||||
'cadastro_logradouro.cep',
|
||||
'cadastro_logradouro.tipo_id',
|
||||
])
|
||||
->join('intranet.cadastro_municipio', 'cadastro_municipio.id', 'cadastro_logradouro.municipio_id')
|
||||
->join('intranet.cadastro_estado', 'cadastro_estado.id', 'cadastro_municipio.estado_id')
|
||||
->join('cadastro_bairro', 'cadastro_bairro.id', 'cadastro_logradouro.bairro_id')
|
||||
->join('cadastro_logradouro_tipo', 'cadastro_logradouro_tipo.id', 'cadastro_logradouro.tipo_id');
|
||||
|
||||
return datatables()
|
||||
->of($logradouros)
|
||||
->filterColumn('cep', function ($query, $keyword) {
|
||||
|
||||
$query
|
||||
->whereRaw("cadastro_logradouro.cep like ?", ["%{$keyword}%"])
|
||||
->orWhereRaw(
|
||||
"CONCAT(
|
||||
SUBSTR(cadastro_logradouro.cep,1,2),
|
||||
'.',
|
||||
SUBSTR(cadastro_logradouro.cep,3,3),
|
||||
'-',
|
||||
SUBSTR(cadastro_logradouro.cep,6,3)
|
||||
) like ?",
|
||||
["%{$keyword}%"]
|
||||
);
|
||||
})
|
||||
->skipTotalRecords()
|
||||
->toJson();
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$logradouros = $this->get(Logradouro::class)
|
||||
->where($this->getWhereFromQueryString(['cep', 'municipio_id']))
|
||||
->orderBy('nome')
|
||||
->get();
|
||||
|
||||
return response()->json($logradouros, Response::HTTP_OK);
|
||||
}
|
||||
|
||||
public function hasCep($cep)
|
||||
{
|
||||
return response()->json(Logradouro::where('cep', $cep)->exists(), Response::HTTP_OK);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
return response()->json(
|
||||
[
|
||||
'form' => $this->getFormData()
|
||||
],
|
||||
Response::HTTP_OK
|
||||
);
|
||||
}
|
||||
|
||||
public function store(LogradouroRequest $request)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$logradouro = null;
|
||||
|
||||
if (DataUtil::getBooleanValueFromStringBoolean($request->search_by_base_endereco_nacional) === true) {
|
||||
$tipo = LogradouroTipo::where('descricao', $request->logradouro_tipo_nome)->first();
|
||||
$bairro = Bairro::where('nome', $request->bairro_nome)->first();
|
||||
|
||||
if (is_null($tipo)) {
|
||||
$tipo = LogradouroTipo::create(['descricao' => $request->logradouro_tipo_nome])->fresh();
|
||||
}
|
||||
|
||||
if (is_null($bairro)) {
|
||||
$bairro = Bairro::create(['nome' => $request->bairro_nome])->fresh();
|
||||
}
|
||||
|
||||
$logradouro = Logradouro::where('municipio_id', $request->municipio_id)
|
||||
->where('bairro_id', $bairro->id)
|
||||
->where('tipo_id', $tipo->id)
|
||||
->where('nome', $request->logradouro_nome)
|
||||
->where('cep', $request->logradouro_cep)
|
||||
->first();
|
||||
|
||||
if (is_null($logradouro)) {
|
||||
$logradouro = Logradouro::create([
|
||||
'municipio_id' => $request->municipio_id,
|
||||
'tipo_id' => $tipo->id,
|
||||
'bairro_id' => $bairro->id,
|
||||
'nome' => $request->logradouro_nome,
|
||||
'cep' => $request->logradouro_cep,
|
||||
])->fresh();
|
||||
}
|
||||
} else {
|
||||
$logradouro = Logradouro::create($this->getParams($request))->fresh();
|
||||
}
|
||||
|
||||
return response()->json($logradouro, Response::HTTP_CREATED);
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
return response()->json($this->get(Logradouro::class, $id), Response::HTTP_OK);
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$logradouro = Logradouro::findOrFail($id);
|
||||
|
||||
return response()->json(
|
||||
[
|
||||
'form' => $this->getFormData(),
|
||||
'model' => [
|
||||
'tipo_id' => $logradouro->tipo_id,
|
||||
'bairro' => $logradouro->bairro,
|
||||
'estado_id' => $logradouro->municipio->estado_id,
|
||||
'municipio' => $logradouro->municipio,
|
||||
'cep' => MaskUtil::getCepMasked($logradouro->cep),
|
||||
'nome' => $logradouro->nome,
|
||||
],
|
||||
],
|
||||
Response::HTTP_OK
|
||||
);
|
||||
}
|
||||
|
||||
private function getFormData()
|
||||
{
|
||||
return [
|
||||
'termos_invalidos' => TermoInvalido::all()->map(fn ($termo) => $termo->descricao),
|
||||
'tipos' => LogradouroTipo::orderBy('descricao')->get()->map(fn ($tipo) => [
|
||||
'id' => $tipo->id,
|
||||
'descricao' => $tipo->descricao,
|
||||
]),
|
||||
'estados' => Estado::where('pais_id', 1)->orderBy('nome')->get()->map(fn ($estado) => [
|
||||
'id' => $estado->id,
|
||||
'uf' => $estado->uf,
|
||||
]),
|
||||
];
|
||||
}
|
||||
|
||||
public function update(LogradouroRequest $request, $id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$logradouro = tap(Logradouro::findOrFail($id))->update($this->getParams($request));
|
||||
|
||||
return response()->json($logradouro->fresh(), Response::HTTP_OK);
|
||||
}
|
||||
|
||||
private function getParams($request)
|
||||
{
|
||||
return [
|
||||
'tipo_id' => $request->tipo_id,
|
||||
'bairro_id' => $request->bairro_id,
|
||||
'estado_id' => $request->estado_id,
|
||||
'municipio_id' => $request->municipio_id,
|
||||
'cep' => $request->cep,
|
||||
'nome' => mb_strtoupper($request->nome)
|
||||
];
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
Logradouro::findOrFail($id)->delete();
|
||||
|
||||
return response()->json(null, Response::HTTP_NO_CONTENT);
|
||||
}
|
||||
|
||||
public function autocomplete()
|
||||
{
|
||||
if (isset(request()->search_by_base_endereco_nacional) && DataUtil::getBooleanValueFromStringBoolean(request()->search_by_base_endereco_nacional) === true) {
|
||||
$logradouros = DB::table('intranet.cadastro_logradouro')
|
||||
->select([
|
||||
'cadastro_estado.uf AS estado_uf',
|
||||
'cadastro_municipio.nome AS municipio_nome',
|
||||
'cadastro_bairro.nome AS bairro_nome',
|
||||
'cadastro_logradouro_tipo.id AS logradouro_tipo_id',
|
||||
'cadastro_logradouro_tipo.nome AS logradouro_tipo_nome',
|
||||
'cadastro_logradouro.nome AS logradouro_nome',
|
||||
DB::raw('COALESCE(cadastro_logradouro.cep, cadastro_municipio.cep) AS logradouro_cep'),
|
||||
])
|
||||
->join('intranet.cadastro_logradouro_tipo', 'cadastro_logradouro_tipo.id', 'cadastro_logradouro.tipo_id')
|
||||
->join('intranet.cadastro_bairro', 'cadastro_bairro.id', 'cadastro_logradouro.bairro_id')
|
||||
->join('intranet.cadastro_municipio', 'cadastro_municipio.id', 'cadastro_bairro.municipio_id')
|
||||
->join('intranet.cadastro_estado', 'cadastro_estado.id', 'cadastro_municipio.estado_id')
|
||||
->when(request()->municipio_id, fn ($q) => $q->where('cadastro_municipio.id', request()->municipio_id));
|
||||
} else {
|
||||
$logradouros = Logradouro::with([]);
|
||||
|
||||
if (is_numeric(request()->municipio_id)) {
|
||||
|
||||
$logradouros->where('municipio_id', request()->municipio_id);
|
||||
}
|
||||
|
||||
if (is_numeric(request()->cep)) {
|
||||
|
||||
$logradouros->where('cep', request()->cep);
|
||||
}
|
||||
|
||||
if (is_numeric(request()->tipo_id)) {
|
||||
|
||||
$logradouros->where('tipo_id', request()->tipo_id);
|
||||
}
|
||||
|
||||
if (is_numeric(request()->bairro_id)) {
|
||||
|
||||
$logradouros->where('bairro_id', request()->bairro_id);
|
||||
}
|
||||
|
||||
if (request()->with_domicilio) {
|
||||
|
||||
$logradouros->whereHas('enderecos', function ($query) {
|
||||
$query->whereHas('domicilios', function ($query) {
|
||||
$query->whereHas('cadastroDomiciliar');
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return datatables()
|
||||
->of($logradouros)
|
||||
->filterColumn('cadastro_logradouro.cep', function ($query, $keyword) {
|
||||
$query
|
||||
->whereRaw("COALESCE(cadastro_logradouro.cep, cadastro_municipio.cep) like ?", ["%{$keyword}%"])
|
||||
->orWhereRaw(
|
||||
"CONCAT(
|
||||
SUBSTR(COALESCE(cadastro_logradouro.cep, cadastro_municipio.cep),1,2),
|
||||
'.',
|
||||
SUBSTR(COALESCE(cadastro_logradouro.cep, cadastro_municipio.cep),3,3),
|
||||
'-',
|
||||
SUBSTR(COALESCE(cadastro_logradouro.cep, cadastro_municipio.cep),6,3)
|
||||
) like ?",
|
||||
["%{$keyword}%"]
|
||||
);
|
||||
})
|
||||
->toJson();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Cadastro\Localizacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Cadastro\Localizacao\LoteamentoRequest;
|
||||
use App\Models\Cadastro\Localizacao\Loteamento;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class LoteamentoController extends Controller
|
||||
{
|
||||
protected $modulo = 'cadastro';
|
||||
protected $funcionalidade = 'loteamento';
|
||||
|
||||
public function datatable()
|
||||
{
|
||||
$loteamentos = Loteamento::with([]);
|
||||
|
||||
return datatables()->of($loteamentos)->skipTotalRecords()->toJson();
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$loteamentos = $this->get(Loteamento::class)->orderBy('nome')->get();
|
||||
|
||||
return response()->json($loteamentos, Response::HTTP_OK);
|
||||
}
|
||||
|
||||
public function store(LoteamentoRequest $request)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$loteamento = Loteamento::create($this->getParams($request));
|
||||
|
||||
return response()->json($loteamento, Response::HTTP_CREATED);
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
return response()->json($this->get(Loteamento::class, $id), Response::HTTP_OK);
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$loteamento = Loteamento::findOrFail($id);
|
||||
|
||||
return response()->json(
|
||||
[
|
||||
'model' => [
|
||||
'nome' => $loteamento->nome,
|
||||
],
|
||||
],
|
||||
Response::HTTP_OK
|
||||
);
|
||||
}
|
||||
|
||||
public function update(LoteamentoRequest $request, $id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
$loteamento = tap(Loteamento::findOrFail($id))->update($this->getParams($request));
|
||||
|
||||
return response()->json($loteamento->fresh(), Response::HTTP_OK);
|
||||
}
|
||||
|
||||
private function getParams($request)
|
||||
{
|
||||
return [
|
||||
'nome' => mb_strtoupper($request->nome)
|
||||
];
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$this->auth(__FUNCTION__);
|
||||
|
||||
Loteamento::findOrFail($id)->delete();
|
||||
|
||||
return response()->json(null, Response::HTTP_NO_CONTENT);
|
||||
}
|
||||
|
||||
public function autocomplete()
|
||||
{
|
||||
$loteamentos = Loteamento::with([]);
|
||||
|
||||
return datatables()->of($loteamentos)->toJson();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user