HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/teamdemo.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' => __('messages.academy_document.document_uploaded_successfully'));
        } catch (\Throwable $th) {
            return array('r' => false, 'm' => $th->getMessage());
        }
    }

    public function validateDocumentStatus($request)
    {
        $academyDocumentUser = $this->academyDocumentUser($request);
        if (!$academyDocumentUser) {
            return array('r' => false, 'm' => __('messages.academy_document.document_user_not_found'));
        } else if ($academyDocumentUser->link == 'pending') {
            return array('r' => false, 'm' => __('messages.academy_document.document_signing_process'));
        }
        return array("r" => true, "m" => __('messages.academy_document.sign_url_found_successfully'), "d" => $academyDocumentUser->link);
    }

    public function updateDocumentLink($request, $link)
    {
        $academyDocumentUser = $this->academyDocumentUser($request);
        if (!$academyDocumentUser) {
            return array('r' => false, 'm' => __('messages.academy_document.document_user_not_found'));
        }
        $academyDocumentUser->link = $link;
        $academyDocumentUser->update();
    }

    public function academyDocumentUser($request)
    {
        if (!$request->get('documentId') || !$request->get('academyUserId')) {
            return false;
        }

        $academyDocumentUser = AcademyDocumentUser::where('academy_document_id', $request->get('documentId'))->where('academy_user_id', $request->get('academyUserId'))->first();
        if (!$academyDocumentUser) {
            return false;
        }

        return $academyDocumentUser;
    }
}