/home/awneajlw/.trash/app.1/Http/Controllers/SubAdmin/SubUserController.php
<?php

namespace App\Http\Controllers\SubAdmin;

use Carbon\Carbon;
use App\Models\User;
use Illuminate\Http\Request;
use Yajra\DataTables\DataTables;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;

class SubUserController extends Controller
{
    public function index()
    {
        $user = Auth::user();

        $users = User::where('branch_id',$user->branch_id)->where('role_id',3)->count();
        return view('admin.subAdmin.user',compact('users'));
    }


    // yajra pagination
    public function getUsers(Request $request)
    {
        if ($request->ajax()) {
            $user = Auth::user();

            $fromDate = $request->input('from_date');
            $toDate = $request->input('to_date');

            if($fromDate == null && $toDate == null){

                $data = User::where('branch_id',$user->branch_id)->where('role_id',3)->with('branch')->get();
            }

            else{
                //Date Filter
                $data = User::where('branch_id',$user->branch_id)->where('role_id',3)->with('branch')->whereBetween('created_at', [$fromDate, $toDate])->get();
            }

            return Datatables::of($data)
                ->addIndexColumn()

                ->addColumn('action', function ($row) {

                    $btn = '<button class="btn btn-sm  btn-info ml-2 my-3 edit" value="' . $row->id . '" type="button"><i class="fa fa-edit"></i></button>';
                    $btn = $btn .  '<a class="btn btn-sm btn-danger ml-2 my-3" href="'.url('/sub-user-delete/'.$row->id).'" role="button"><i class="fa fa-trash"></i></a>';
                    return $btn;
                })
                ->addColumn('created', function ($row) {

                    $created_at = $row->created_at;

                    $formatted_date = Carbon::parse($created_at)->format('Y-m-d H:i:s');
                    return $formatted_date;
                })
                ->rawColumns(['action', 'created'])
                ->make(true);

        }
    }


    public function addUser(Request $req){
        $user = Auth::user();

        $password = $req->user_password;
        $hashedPassword = Hash::make($password);

        User::insert([
            'name' => $req->user_name,
            'email' => $req->user_email,
            'password' => $hashedPassword,
            'branch_id' => $user->branch_id,
            'status' => $req->user_status,
            'role_id' => 3,
            'created_at' => now(),

        ]);


        return redirect()->back();
    }



    // edit
    public function editUser($id){

        $user = User::find($id);

        return response()->json([
            'user'=>$user,
        ]);
    }


    // update user
    public function updateUser(Request $req){

        $user = User::find($req->userId);

        $user->name = $req->name;

        $user->email = $req->email;
        $user->status = $req->status;
        $user->role_id = 3;
        $user->branch_id = Auth::User()->branch_id;


        if($req->password != null){
            $password = $req->password;
            $hashedPassword = Hash::make($password);

            $user->password= $hashedPassword;
        }

        $user->update();


        return redirect()->back();

    }


    // delete user
    public function deleteUser($id){

        $user=User::find($id);

        if ($user) {
            $user->delete();
        }

        session()->flash('message', 'User deleted successfully!');

        return redirect()->back();
    }


}