<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Auth;
use App\Models\User;
use App\Models\Settings\Roles;
use App\Models\Settings\Permissions;
use App\Notifications\ScheduleNotification;
use App\Models\Notification\Notifications;
use App\Models\Training\Schedule;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        $active_user_count = User::where('status',1)->count();
        $user_record_pie = User::where('status',1)->get();
        $data_user_pie = [];
        foreach($user_record_pie as $user_record_pie_val) 
        {
            $data_user_pie['label'][] = $user_record_pie_val->name;
            $data_user_pie['data'][] = (int) $user_record_pie_val->count();
        }
        $datajson = json_encode($data_user_pie);

        $active_role_count = Roles::where('status',1)->count();
        $role_record_bar = Roles::where('status',1)->get();
        $data_role_bar = [];
        foreach($role_record_bar as $role_record_bar_val) 
        {
            $data_role_bar['label'][] = $role_record_bar_val->name;
            $data_role_bar['data'][] = (int) $role_record_bar_val->count();
        }
        $datajson_bar = json_encode($data_role_bar);
        return view('home', compact('datajson','active_user_count','datajson_bar','active_role_count'));
    }

    public function markNotification(Request $request)
    {
        Auth()->user()
            ->unreadNotifications
            ->when($request->input('id'), function ($query) use ($request) {
                return $query->where('id', $request->input('id'));
            })
            ->markAsRead();

        return response()->noContent();
    }
    public function notification_all()
    {
        $id = Auth::user()->id;
        $notifications = Notifications::where('notifiable_id',$id)->orderBy('created_at','desc')->get();
        return view('notification_all', compact('notifications'));
    }
    public function notification_view($nid)
    {
        $id = Auth::user()->id;
        $notifications = Notifications::where('id',$nid)->first();
        if(isset($notifications))
        {
            $notifications->read_at = date("Y-m-d");
            $notifications->save();
            ///get schedule_id////////////////
            $notification_data = $notifications->data;
            $notification_array = explode(",",$notification_data);
            $schedule_arr = $notification_array[5];
            $schedule_obj = explode(":",$schedule_arr);
            $sid_arr = $schedule_obj[1];
            $schedule_id = str_replace("}", "", $sid_arr);
        }
        $schedules = Schedule::where('id',$schedule_id)->with('organisation','department','section','material_type','schedule_role','schedule_participants')->first();
        return view('notification_view', compact('schedules'));
    }

    public function change(Request $request)
    {
        dd($request);
        $email = $request->email;
        $users = User::where('email',$email)->first();
        return view('change', compact('users'));
    }
}
