92 lines
3.1 KiB
PHP
92 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\PainelSenha;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\PainelSenha\ParametrizacaoRequest;
|
|
use App\Models\Administracao\Modulo;
|
|
use App\Models\Cadastro\Estabelecimento\Infraestrutura;
|
|
use App\Models\Cadastro\Estabelecimento\Unidade;
|
|
use App\Models\PainelSenha\ParametrizacaoInfraestrutura;
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class ParametrizacaoController extends Controller
|
|
{
|
|
protected $modulo = 'painel-senha';
|
|
protected $funcionalidade = 'parametrizacao';
|
|
|
|
public function create()
|
|
{
|
|
$this->auth(__FUNCTION__);
|
|
|
|
return response()->json(
|
|
[
|
|
'form' => [
|
|
'unidades' => Unidade::orderBy('nome_fantasia')->get(['id', 'nome_fantasia']),
|
|
'infraestruturas' => [],
|
|
'modulos' => Modulo::orderBy('nome')->get(['id', 'nome']),
|
|
],
|
|
'model' => [
|
|
'infraestruturas' => ParametrizacaoInfraestrutura::get(['id', 'infraestrutura_id'])
|
|
->map(fn ($parametrizacao) => [
|
|
'id' => $parametrizacao->infraestrutura_id,
|
|
'nome' => $parametrizacao->infraestrutura->nome,
|
|
'unidade_id' => $parametrizacao->infraestrutura->unidade->id,
|
|
'unidade_nome_fantasia' => $parametrizacao->infraestrutura->unidade->nome_fantasia,
|
|
'modulos' => $parametrizacao->modulos->map(fn ($modulo) => [
|
|
'id' => $modulo->id,
|
|
'nome' => $modulo->nome,
|
|
]),
|
|
]),
|
|
]
|
|
],
|
|
Response::HTTP_OK
|
|
);
|
|
}
|
|
|
|
public function list()
|
|
{
|
|
$data = null;
|
|
|
|
switch (request()->listar) {
|
|
|
|
case 'infraestruturas': {
|
|
|
|
return Infraestrutura::setEagerLoads([])
|
|
->where('unidade_id', request()->unidade_id)
|
|
->get(['id', 'nome', 'principal', 'unidade_id'])
|
|
->map(fn ($infraestrutura) => [
|
|
'id' => $infraestrutura->id,
|
|
'nome' => $infraestrutura->nome,
|
|
])
|
|
->sortBy('nome')
|
|
->values();
|
|
}
|
|
}
|
|
|
|
return response()->json($data, Response::HTTP_OK);
|
|
}
|
|
|
|
public function store(ParametrizacaoRequest $request)
|
|
{
|
|
$this->auth(__FUNCTION__);
|
|
|
|
DB::transaction(function () use ($request) {
|
|
|
|
ParametrizacaoInfraestrutura::whereNotIn('id', collect($request->infraestruturas)->pluck('id'))->delete();
|
|
|
|
collect($request->infraestruturas)->each(function ($infraestrutura) {
|
|
|
|
$parametrizacao = ParametrizacaoInfraestrutura::updateOrCreate([
|
|
'infraestrutura_id' => $infraestrutura['id']
|
|
]);
|
|
|
|
$parametrizacao->modulos()->sync($infraestrutura['modulos']);
|
|
});
|
|
});
|
|
|
|
return response()->json(null, Response::HTTP_CREATED);
|
|
}
|
|
}
|