feat: API de reportes, fix distancia espacial y protección OneSignal
- GET/POST /api/contracts/reports y /api/postulations/reports
- GET/POST /api/contracts/reports/{id}/comments con verificación de autoría
- Fix distancia withinDistanceTo: 0.5 grados → 5000 metros (SRID 4326)
- Fix FK Report::finishedcontracts() → contract_id
- Wrap todas las llamadas OneSignal en try/catch para evitar crashes
- Chat UI de comentarios: burbujas por rol, botón veredicto fijo, estilos
- Botón veredicto movido de reports/index a reports/comments
- Ruta POST veredict y restructura reports/{id}/comments en web
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2,111 +2,51 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Report;
|
||||
use App\Models\ReportComment;
|
||||
use App\Models\FinishedContracts;
|
||||
use App\Models\NoHome;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class ReportCommentController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Request $request, $id, $contract_id)
|
||||
public function index(Request $request, $id)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
$report = Report::find($id);
|
||||
$contract = FinishedContracts::with(['user', 'suppliers.user', 'categories'])->find($report->contract_id);
|
||||
$nohome = NoHome::where('contract_id', $contract->id)->first();
|
||||
$comments = ReportComment::with('user')
|
||||
->where('report_id', $id)
|
||||
->orderBy('created_at', 'asc')
|
||||
->paginate(50);
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$contract = FinishedContracts::where('id', $contract_id)->first();
|
||||
$nohome = NoHome::where('contract_id', $contract_id)->first();
|
||||
$comments = new ReportComment();
|
||||
$comments = $comments->where('report_id', $id)
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->isMethod('get'))
|
||||
return view('reports.comments', compact('comments', 'contract', 'nohome'));
|
||||
return view('reports.comments', compact('comments', 'contract', 'nohome', 'report'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create()
|
||||
public function store(Request $request, $id)
|
||||
{
|
||||
//
|
||||
$validator = Validator::make($request->all(), [
|
||||
'comment' => 'required|string',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withErrors($validator);
|
||||
}
|
||||
|
||||
$comment = new ReportComment();
|
||||
$comment->report_id = $id;
|
||||
$comment->user_id = Auth::id();
|
||||
$comment->comment = strip_tags($request->comment);
|
||||
$comment->save();
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
public function destroy($id, $comment_id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param \App\ReportComment $reportComment
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show(ReportComment $reportComment)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param \App\ReportComment $reportComment
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit(ReportComment $reportComment)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\ReportComment $reportComment
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, ReportComment $reportComment)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param \App\ReportComment $reportComment
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id, $contract_id)
|
||||
{
|
||||
//
|
||||
ReportComment::destroy($id);
|
||||
return redirect('reports/comments/'.$id.'/'.$contract_id);
|
||||
ReportComment::destroy($comment_id);
|
||||
return redirect('reports/' . $id . '/comments');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user