Al-HUWAITI Shell
Al-huwaiti


Server : nginx/1.18.0
System : Linux localhost 6.14.3-x86_64-linode168 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 19:47:55 EDT 2025 x86_64
User : www-data ( 33)
PHP Version : 8.0.16
Disable Function : 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,
Directory :  /var/www/ecommerce/app/Http/Controllers/Shop/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/ecommerce/app/Http/Controllers/Shop/TrainingController.php
<?php

namespace App\Http\Controllers\Shop;

use App\Models\Training;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;

class TrainingController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $trainings = Training::with('course')
                        ->latest()
                        ->paginate(10);

        return view('backend.training.index')
                ->with('trainings', $trainings);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     *
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate(
            $request,
            [
                'number_of_participant' => 'required|numeric',
                'firstname' => 'required|string',
                'lastname' => 'required|string',
                'address' => 'required|string',
                'email' => 'required|string|email',
                'phone' => 'required|string',
                'occupation' => 'required|string',
                'institution' => 'required|string',
                'evidence' => 'required|mimes:pdf',
                'id_card' => 'sometimes|mimes:pdf',
                'participant_name' => 'sometimes|array',
                'participant_name.*' => 'sometimes|string',
                'participant_email' => 'sometimes|array',
                'participant_email.*' => 'sometimes|string',
                'course_id' => 'required|exists:products,id',
            ]
        );

        $data = $request->all();
        $training = Training::create($data);

        if ($training) {
            $path = "training/{$training->id}/";
            $disk = Storage::disk('local');

            $documents = [
                'participants' => [],
                'evidence' => [],
            ];

            foreach(array_keys($request->input('participant_name')) as $id) {
                $documents['participants'][] = [
                    'name' => $request->input("participant_name.$id"),
                    'email' => $request->input("participant_email.$id")
                ];
            }

            if ($request->file('evidence')) {
                $saveAs = 'evidence' . md5(uniqid(true));
                $file = $request->file('evidence');

                $documents['evidence'] = [
                    'saveAs' => "{$saveAs}.".$file->getClientOriginalExtension(),
                    'originalFile' => $file->getClientOriginalName(),
                ];

                $disk->putFileAs(
                    $path,
                    $file,
                    $documents['evidence']['saveAs']
                );
            }

            if ($request->file('id_card')) {
                $saveAs = 'id_card' . md5(uniqid(true));
                $file = $request->file('id_card');

                $documents['id_card'] = [
                    'saveAs' => "{$saveAs}.".$file->getClientOriginalExtension(),
                    'originalFile' => $file->getClientOriginalName(),
                ];

                $disk->putFileAs(
                    $path,
                    $file,
                    $documents['id_card']['saveAs']
                );
            }

            $training->update(['documents' => $documents]);

            return redirect()
                    ->to(url()->previous())
                    ->with('success', 'Training data submitted Successfully');
        }

        return redirect()
                ->to(url()->previous())
                ->with('error', 'Error occurred while submitting data');
    }

    public function csv(Request $request)
    {
        $trainings = Training::all();

        $headers = [
            'Content-Encoding' => 'UTF-8',
            'Content-type' => 'text/csv; charset=UTF-8',
            'Content-Disposition' => "attachment; filename=etiqa-trainings.csv",
            'Pragma' => 'no-cache',
            'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0',
            'Expires' => '0',
        ];

        return response()->stream(function () use ($trainings) {
            $file = fopen('php://output', 'w');
            fprintf($file, chr(0xEF) . chr(0xBB) . chr(0xBF));
            fputcsv($file, array_keys($trainings->first()->toCsv()));

            foreach ($trainings as $training) {
                fputcsv($file, $training->toCsv());
            }

            fclose($file);
        }, 200, $headers);
    }

    public function downloadDocument(Request $request)
    {
        $training = Training::findOrFail($request->input('training_id'));
        $doc = $request->input('name');
        $fullPath = "training/{$training->id}/{$doc}";
        $content = Storage::disk('local')->get($fullPath);

        return response()
            ->stream(
                function () use ($content) {
                    echo $content;
                },
                200,
                ['Content-Type' => 'application/pdf']
            );
    }
}

Al-HUWAITI Shell