Regista aceitacao funcional do primeiro incremento PGC-NIRF e preserva as dependencias documentais e tecnicas existentes. A validacao do calculo fiscal continua separada e pendente. Sem credenciais, bases operacionais ou publicacao.
38 lines
2.7 KiB
PHP
38 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Modules\Services\Http;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Modules\Services\DocumentPreview;
|
|
use Illuminate\Http\Request;
|
|
|
|
final class DocumentPreviewController extends Controller
|
|
{
|
|
public function calculate(Request $request, int $id, \App\Modules\Services\ServiceCalculation $calculation)
|
|
{
|
|
abort_if(array_diff(array_keys($request->all()), ['draft_version','preparation_version','profile_id','profile_version']) !== [], 422);
|
|
$data = $request->validate(['draft_version'=>'required|integer|min:1','preparation_version'=>'required|integer|min:0','profile_id'=>'required|integer|min:1','profile_version'=>'required|integer|min:1']);
|
|
return $this->response($calculation->calculate($id,$request->user()->id,array_map('intval',$data)));
|
|
}
|
|
private function response(array $data) { return response()->json($data)->header('Cache-Control', 'no-store, private, max-age=0')->header('Pragma', 'no-cache')->header('Vary', 'Cookie'); }
|
|
public function model(Request $request, DocumentPreview $preview) { return $this->response($preview->configuration($request->user()->id)); }
|
|
public function configure(Request $request, DocumentPreview $preview)
|
|
{
|
|
abort_if(array_diff(array_keys($request->all()), ['version', ...array_keys(DocumentPreview::DEFAULT_MODEL)]) !== [], 422, 'Campo não configurável: aviso e pendências são obrigatórios.');
|
|
$rules = ['version' => 'required|integer|min:0', 'contact_text' => 'nullable|string|max:2000', 'observations' => 'nullable|string|max:2000'];
|
|
foreach (['show_logo','show_contacts','show_observations','show_payment_instructions'] as $field) { $rules[$field] = 'required|boolean'; }
|
|
$data = $request->validate($rules); $data['version'] = (int) $data['version'];
|
|
foreach (['show_logo','show_contacts','show_observations','show_payment_instructions'] as $field) { $data[$field] = (bool) $data[$field]; }
|
|
$data['contact_text'] ??= ''; $data['observations'] ??= '';
|
|
return $this->response($preview->configure($request->user()->id, $data));
|
|
}
|
|
public function draft(Request $request, int $id, DocumentPreview $preview) { return $this->response($preview->read($id, $request->user()->id)); }
|
|
public function historical(Request $request, int $id, DocumentPreview $preview) { return $this->response($preview->read($id, $request->user()->id, true)); }
|
|
public function revision(Request $request, string $mode, int $id, DocumentPreview $preview)
|
|
{
|
|
abort_unless(in_array($mode, ['draft','history'], true), 404);
|
|
$result = $preview->read($id, $request->user()->id, $mode === 'history');
|
|
return $this->response(['revision' => $result['revision']]);
|
|
}
|
|
}
|