/home/awneajlw/.trash/app.2/Http/Controllers/SubAdmin/AttendanceController.php
<?php

namespace App\Http\Controllers\SubAdmin;

use Carbon\Carbon;
use App\Models\User;
use Illuminate\Http\Request;
use App\Models\UserAttandance;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;

class AttendanceController extends Controller
{

    public function index(){

        $userId = Auth::id();

        $user = User::where('id',$userId)->first();


        $todayDate = Carbon::now()->toDateString();

        $startData = UserAttandance::where('user_id', $userId)
        ->where('status', 'Start')
        ->whereDate('created_at', $todayDate)
        ->first();

        $endData = UserAttandance::where('user_id', $userId)
        ->where('status', 'End for today')
        ->whereDate('created_at', $todayDate)
        ->first();

        $Break = UserAttandance::where('user_id', $userId)
        ->whereDate('created_at', $todayDate)
        ->orderBy('id','desc')
        ->first();

        // dd($Break);


        // last seven day employee activity

        $todayDate = Carbon::now();
        $sevenDaysAgo = $todayDate->subDays(7);

        $sevenDayActivity = UserAttandance::where('user_id', $userId)
            ->whereDate('created_at', '>=', $sevenDaysAgo)
            ->orderBy('created_at')
            ->get();

        $data = [];

        foreach ($sevenDayActivity as $activity) {
            if ($activity->status == 'Start') {
                $data[] = [
                    'startTime' => $activity->created_at,
                    'endTime' => null,
                    'totalBreakTime' => 0,
                ];
            } elseif ($activity->status == 'End for today') {
                if (!empty($data)) {
                    $data[count($data) - 1]['endTime'] = $activity->created_at;
                }
            } elseif ($activity->status == 'Break') {
                if (!empty($data)) {
                    $data[count($data) - 1]['breakStartTime'] = $activity->created_at;
                }
            } elseif ($activity->status == 'Break end') {
                if (!empty($data) && isset($data[count($data) - 1]['breakStartTime'])) {
                    $breakEndTime = $activity->created_at;
                    $breakStartTime = $data[count($data) - 1]['breakStartTime'];
                    $breakTime = $breakEndTime->diffInMinutes($breakStartTime);
                    $data[count($data) - 1]['totalBreakTime'] += $breakTime;
                    unset($data[count($data) - 1]['breakStartTime']);

                }
            }
        }




        return view('admin.subAdmin.userAttendance.index',compact('startData','endData','Break','data','user'));

    }


    public function loadData(Request $request){

        $latitude = $request->lat;
        $longitude = $request->lng;
        $buttonvalue = $request->query('buttonvalue');


        $ip = $request->ip();

        $userId = Auth::id();

        $todayDate = Carbon::now()->toDateString();

        // dd($buttonvalue);

        if( $buttonvalue == 'Start' ){
            $startData = UserAttandance::where('user_id', $userId)
            ->where('status', $buttonvalue)
            ->whereDate('created_at', $todayDate)
            ->first();

            if($startData == Null){
                UserAttandance::insert([
                    'latlng'=>$latitude.','.$longitude,
                    'user_id'=>$userId,
                    'ip_address'=>$ip,
                    'status'=>$buttonvalue,
                    'created_at'=>now()
                ]);

                return response()->json(['message'=>'Start']);
            }else{
                return response()->json(['message'=>'Start']);
            }
        }else if( $buttonvalue == 'End for today' ){
            $EndDate = UserAttandance::where('user_id', $userId)
            ->where('status', $buttonvalue)
            ->whereDate('created_at', $todayDate)
            ->first();

            if($EndDate == Null){
                UserAttandance::insert([
                    'latlng'=>$latitude.','.$longitude,
                    'user_id'=>$userId,
                    'ip_address'=>$ip,
                    'status'=>$buttonvalue,
                    'created_at'=>now()
                ]);

                return response()->json(['message'=>'End for today']);
            }else{
                return response()->json(['message'=>'End for today']);
            }
        }else if( $buttonvalue == 'Break' ){
            $Checkend = UserAttandance::where('user_id', $userId)
            ->where('status', 'End for today')
            ->whereDate('created_at', $todayDate)
            ->first();

            // dd($Checkend);

            if($Checkend == null){
                UserAttandance::insert([
                    'latlng'=>$latitude.','.$longitude,
                    'user_id'=>$userId,
                    'ip_address'=>$ip,
                    'status'=>$buttonvalue,
                    'created_at'=>now()
                ]);

                return response()->json(['message'=>'Break']);

            }else{
                return response()->json(['message'=>'Today job done']);
            }
        }
        else if( $buttonvalue == 'Break end' ){
            $Checkend = UserAttandance::where('user_id', $userId)
            ->where('status', 'End for today')
            ->whereDate('created_at', $todayDate)
            ->first();

            if($Checkend == null){

                UserAttandance::insert([
                    'latlng'=>$latitude.','.$longitude,
                    'user_id'=>$userId,
                    'ip_address'=>$ip,
                    'status'=>$buttonvalue,
                    'created_at'=>now()
                ]);

                return response()->json(['message'=>'Break end']);

            }else{
                return response()->json(['message'=>'Today job done']);
            }
        }

    }

}