File: /var/www/vhost/disk-apps/comfama.sports-crowd.com/app/Services/AcademyDocumentService.php
<?php
namespace App\Services;
use App\AcademyDocument;
use App\AcademyDocumentUser;
use Illuminate\Support\Facades\Storage;
class AcademyDocumentService
{
private $academyService;
public function __construct()
{
$this->academyService = new AcademyService;
}
public function find($id)
{
return AcademyDocument::find($id);
}
public function getExternalFormId($documentId)
{
$academyDocument = AcademyDocument::find($documentId);
return $academyDocument->external_form_id;
}
public function uploadUserAcademyDocumentExternal($parameters)
{
try {
$academyUser = $this->academyService->find($parameters->user);
if ($academyUser)
$academyUserId = $academyUser->id;
else
return;
$academyDocument = $this->find($parameters->document);
if ($academyDocument)
$academyDocumentId = $academyDocument->id;
else
return;
$extension = $parameters->extension ?? 'pdf';
$filenametostore = 'document' . $academyUserId . '_' . $academyDocumentId . '.' . $extension;
$file = $parameters->file;
$file = base64_decode($file);
if (Storage::disk('s3')->exists(config('s3.academy_documents') . $filenametostore)) {
Storage::disk('s3')->delete(config('s3.academy_documents') . $filenametostore);
}
Storage::disk('s3')->put(config('s3.academy_documents') . $filenametostore, $file, 'public');
$url = config('filesystems.disks.s3.url') . '/academy/academy_documents/' . $filenametostore;
$data = [
'academy_user_id' => $academyUserId,
'academy_document_id' => $academyDocumentId,
'link' => $url,
];
AcademyDocumentUser::updateOrCreate(
[
'academy_user_id' => $academyUserId,
'academy_document_id' => $academyDocumentId
],
$data
);
return array('r' => true, 'data' => $data, 'm' => 'Documento cargado exitosamente!');
} catch (\Throwable $th) {
return array('r' => false, 'm' => $th->getMessage());
}
}
}