65 lines
1.6 KiB
PHP
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);
|
|
}
|
|
}
|