65 lines
1.6 KiB
PHP

<?php
namespace App\Http\Controllers\Repuve;
use App\Http\Controllers\Controller;
use App\Http\Requests\Repuve\ApkStorageRequest;
use Illuminate\Support\Facades\Storage;
use Notsoweb\ApiResponse\Enums\ApiResponse;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class AppController extends Controller
{
/**
* Middleware
*/
public static function middleware(): array
{
return [
self::can('apk.upload', ['upload']),
self::can('apk.download', ['download']),
];
}
/**
* Subir APK de la aplicación móvil
*/
public function upload(ApkStorageRequest $request)
{
$file = $request->file('apk');
// Eliminar APK anterior si existe
$existingFiles = Storage::disk('public')->files('apk');
foreach ($existingFiles as $existingFile) {
Storage::disk('public')->delete($existingFile);
}
// Guardar el nuevo APK
$fileName = 'repuve-app-' . now()->format('Y-m-d') . '.apk';
$file->storeAs('apk', $fileName, 'public');
return ApiResponse::OK->response([
'message' => 'APK subido correctamente',
'file' => $fileName,
]);
}
/**
* Descargar APK de la aplicación móvil
*/
public function download(): BinaryFileResponse
{
$files = Storage::disk('public')->files('apk');
if (empty($files)) {
abort(404, 'No hay APK disponible para descargar.');
}
$latestFile = end($files);
$path = Storage::disk('public')->path($latestFile);
return response()->download($path);
}
}