File: /var/www/matriculas_api_dev/app/Http/Controllers/ExcelUploadLineController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\ExcelUpload\BulkDeleteLinesRequest;
use App\Services\ExcelUploadLineService;
use App\Services\ExcelUploadService;
use Exception;
class ExcelUploadLineController extends Controller
{
protected $excelUploadLineService;
public function __construct(ExcelUploadLineService $excelUploadLineService)
{
$this->excelUploadLineService = $excelUploadLineService;
}
/**
* Listar líneas con filtros
* GET /api/upload-lines
*/
public function list(Request $request)
{
try {
$data = $this->excelUploadLineService->list($request);
return genericResponse(['data' => $data, 'message' => 'ok', 'code' => 200], 200);
} catch (Exception $e) {
$errorCode = $e->getCode();
return genericResponse(['error' => $e->getMessage()], $errorCode ? $errorCode : 500);
}
}
/**
* Obtener detalle de una línea
* GET /api/upload-lines/{id}
*/
public function show($id)
{
try {
$data = $this->excelUploadLineService->show($id);
return genericResponse(['data' => $data, 'message' => 'ok', 'code' => 200], 200);
} catch (Exception $e) {
$errorCode = $e->getCode();
return genericResponse(['error' => $e->getMessage()], $errorCode ? $errorCode : 500);
}
}
/**
* Actualizar múltiples líneas
* POST /api/upload-lines/bulk-update
*/
public function bulkUpdate(Request $request)
{
try {
$data = $this->excelUploadLineService->bulkUpdate($request);
return genericResponse(['data' => $data, 'message' => 'Líneas actualizadas correctamente', 'code' => 200], 200);
} catch (Exception $e) {
$errorCode = $e->getCode();
return genericResponse(['error' => $e->getMessage()], $errorCode ? $errorCode : 500);
}
}
/**
* Restaurar línea a datos originales
* POST /api/upload-lines/{id}/restore
*/
public function restore($id)
{
try {
$data = $this->excelUploadLineService->restore($id);
return genericResponse(['data' => $data, 'message' => 'Línea restaurada a datos originales', 'code' => 200], 200);
} catch (Exception $e) {
$errorCode = $e->getCode();
return genericResponse(['error' => $e->getMessage()], $errorCode ? $errorCode : 500);
}
}
/**
* Eliminar una línea específica
* DELETE /api/excel-uploads/{uploadId}/lines/{lineNumber}
*/
public function deleteLine($uploadId, $lineNumber)
{
try {
$excelUploadService = new ExcelUploadService();
$data = $excelUploadService->deleteLine($uploadId, $lineNumber);
$message = !empty($data['upload_cancelled'])
? 'Línea eliminada. La carga fue cancelada porque no quedan registros.'
: 'Línea eliminada correctamente';
return genericResponse(['data' => $data, 'message' => $message, 'code' => 200], 200);
} catch (Exception $e) {
$errorCode = $e->getCode();
return genericResponse(['error' => $e->getMessage()], $errorCode ? $errorCode : 500);
}
}
/**
* Eliminar múltiples líneas
* POST /api/excel-uploads/{uploadId}/lines/bulk-delete
*/
public function bulkDeleteLines($uploadId, BulkDeleteLinesRequest $request)
{
try {
$excelUploadService = new ExcelUploadService();
$data = $excelUploadService->bulkDeleteLines($uploadId, $request);
return genericResponse(['data' => $data, 'message' => 'Líneas eliminadas correctamente', 'code' => 200], 200);
} catch (Exception $e) {
$errorCode = $e->getCode();
return genericResponse(['error' => $e->getMessage()], $errorCode ? $errorCode : 500);
}
}
}