HEX
Server: Apache/2.4.46 (Ubuntu)
System: Linux localhost 5.11.0-49-generic #55-Ubuntu SMP Wed Jan 12 17:36:34 UTC 2022 x86_64
User: root (0)
PHP: 7.4.16
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/fieldsblaze-heroku/app/Http/Controllers/AttendanceController.php
<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Models\Attendance;
use App\Models\UserAuth;
use Illuminate\Http\Request;
use App\Library\UserLib;

class AttendanceController extends Controller
{
    protected $userLib;
    public function __construct(UserLib $userLib)
    {
        $this->userLib = $userLib;
    }

    ### All Records
    public function allAttendance()
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        
        $Attendance = Attendance::select('tbl_attendance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_admin', 'tbl_attendance.CreatedById', '=', 'tbl_admin.UserId')
            ->leftJoin('tbl_user', 'tbl_attendance.OwnerId', '=', 'tbl_user.UserId')
            ->where('tbl_attendance.IsDeleted', '=', '0')
            ->orderBy('tbl_attendance.id', 'desc')
            ->get();

            
        $TrashAttendance = Attendance::select('tbl_attendance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_admin', 'tbl_attendance.LastModifiedById', '=', 'tbl_admin.UserId')
            ->leftJoin('tbl_user', 'tbl_attendance.OwnerId', '=', 'tbl_user.UserId')
            ->where('tbl_attendance.IsDeleted', '=', '1')
            ->orderBy('tbl_attendance.id', 'desc')
            ->get();

        return view('admin.attendance', ['Attendance' => $Attendance, 'TrashAttendance' => $TrashAttendance]);

    }

    ### Trash Record
    public function TrashAttendance()
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $Attendance = Attendance::select('tbl_attendance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_admin', 'tbl_attendance.LastModifiedById', '=', 'tbl_admin.UserId')
            ->leftJoin('tbl_user', 'tbl_attendance.OwnerId', '=', 'tbl_user.UserId')
            ->where('tbl_attendance.IsDeleted', '=', '0')
            ->orderBy('tbl_attendance.id', 'desc')
            ->get();

        $TrashAttendance = Attendance::select('tbl_attendance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_admin', 'tbl_attendance.LastModifiedById', '=', 'tbl_admin.UserId')
            ->leftJoin('tbl_user', 'tbl_attendance.OwnerId', '=', 'tbl_user.UserId')
            ->where('tbl_attendance.IsDeleted', '=', '1')
            ->orderBy('tbl_attendance.id', 'desc')
            ->get();

        return view('admin.trash-attendance', ['Attendance' => $Attendance, 'TrashAttendance' => $TrashAttendance]);

    }


    ### View Record
    public function ViewAttendance($AttendanceId)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $ViewAttendance = Attendance::select('tbl_attendance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->where('AttendanceId', '=', $AttendanceId)
            ->leftJoin('tbl_admin', 'tbl_attendance.LastModifiedById', '=', 'tbl_admin.UserId')
            ->leftJoin('tbl_user', 'tbl_attendance.OwnerId', '=', 'tbl_user.UserId')
            ->get()->first();

        return view('admin.view-attendance', ['ViewAttendance' => $ViewAttendance]);

    }


    ### Store New Attendance
    public function storeAttendance(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $AttendanceDate = '';
        if ($request->input('AttendanceDate')) {
            $Date = str_replace('/', '-', $request->input('AttendanceDate'));
        }
        $AttendanceDate = date('d-m-Y', strtotime($Date));

        $data['AttendanceId'] =  $this->userLib->useridGenrator();
        $data['OwnerId'] =  $request->input('UserName'); 
        $data['AttendanceDateTime'] = $AttendanceDate;   
        
        $GetCheckInTime = $request->input('CheckIn');
        $CheckInTime = date('h:i A', strtotime($GetCheckInTime));
        $data['CheckInDateTime'] = $CheckInTime; 

        $data['IsDeleted'] = 0;
        $data['Status'] = 1;
        $data['CreatedById'] = session('UserId');
        $data['Created_by'] = session('UserId');
        $data['CreatedDate'] = date('Y-m-d H:i:s', time());
        $data['Created_at'] = date('Y-m-d H:i:s', time());
        $data['LastModifiedById'] = session('UserId');
        $data['Updated_by'] = session('UserId');
        $data['Updated_at'] = date('Y-m-d H:i:s', time());
        $data['ModifiedDate'] = date('Y-m-d H:i:s', time());
        
        $Attendance = Attendance::insert($data);
        if ($Attendance) {
            return response()->json('status_success');
        } else {
            return response()->json('status_failed');
        }
    }

    ### Update Record
    public function updateAttendance(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $AttendanceId = $request->input('AttendanceId');
        $AttendanceDate = '';
        if ($request->input('AttendanceDate')) {
            $Date = str_replace('/', '-', $request->input('AttendanceDate'));
        }
        $AttendanceDate = date('d-m-Y', strtotime($Date));

        $data['OwnerId'] =  $request->input('UserName'); 
        $data['AttendanceDateTime'] = $AttendanceDate; 
        
        $GetCheckInTime = $request->input('CheckIn');
        $CheckInTime = date('h:i A', strtotime($GetCheckInTime));
        $data['CheckInDateTime'] = $CheckInTime;

        if ($request->input('CheckOut')) {
            $GetCheckOutTime = $request->input('CheckOut');
            $CheckOutTime = date('h:i A', strtotime($GetCheckOutTime));
            $data['CheckOutDateTime'] = $CheckOutTime;
        }

        if ($request->input('Location')) {
            $data['Location'] = $request->input('Location');  
        }
        $data['LastModifiedById'] = session('UserId');
        $data['Updated_by'] = session('UserId');
        $data['Updated_at'] = date('Y-m-d H:i:s', time());
        
        $Attendance = Attendance::where('AttendanceId', $AttendanceId)->update($data);
        if ($Attendance) {
            return response()->json('status_success');
        } else {
            return response()->json('status_failed');
        }
    }

    #### Delete Attendance
    public function deleteAttendance($id)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $CreatedDate = date('Y-m-d H:i:s', time());

        $data = array();
        $data['LastModifiedDate'] = $CreatedDate;
        $data['LastModifiedById'] = session('UserId');
        $data['IsDeleted'] = '1';

        $Attendance_delete = Attendance::where('AttendanceId', $id)->update($data);
        if ($Attendance_delete) {
            return response()->json('status_success');
        } else {
            echo 'failed';
        }
    }

    #### Delete Permanent
    public function destroyAttendance($id)
    {   
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $destroyData = Attendance::where('AttendanceId', $id);
        $destroyData->delete();
    }
    #### Restore Attendance
    public function restoreAttendance($id)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $CreatedDate = date('Y-m-d H:i:s', time());

        $data = array();
        $data['LastModifiedDate'] = $CreatedDate;
        $data['LastModifiedById'] = session('UserId');
        $data['IsDeleted'] = '0';

        $Attendance_restore = Attendance::where('AttendanceId', $id)->update($data);
        if ($Attendance_restore) {
            return response()->json('status_success');
        } else {
            echo 'failed';
        }
    }

    #### Delete Selected Record
    public function deleteSelectedAttendance(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $id = $request->input('SelectedAttendance');
        if ($id) {
            foreach ($id as $AttendanceId) {
                $checkData = Attendance::select('tbl_attendance.*')
                    ->where('AttendanceId', '=', $AttendanceId)
                    ->get()->first();
                if ($checkData->IsDeleted == '0') {
                    $UpdatedDate = date(
                        'Y-m-d H:i:s',
                        time()
                    );
                    $data = array();
                    $data['Updated_at'] = $UpdatedDate;
                    $data['IsDeleted'] = '1';
    
                    $selected_entry = Attendance::where('AttendanceId', $AttendanceId)->update($data);
                    if ($selected_entry) {
                        echo '1';
                    } else {
                        echo '0';
                    }
                } else {
                    $selected_entry = Attendance::select('tbl_attendance.*')
                        ->where('AttendanceId', '=', $AttendanceId)
                        ->get()->first();
                    $selected_entry->delete();
                }
            }
        }

        return redirect()->back()->with('status_success');
    }

    #### CheckOut Attendance
    public function checkoutAttendance($id)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $UpdateDate = date('Y-m-d H:i:s', time());
        $CheckOut = date('h:i A');
        $data = array();
        $data['LastModifiedDate'] = $UpdateDate;
        $data['CheckOutDateTime'] = $CheckOut;
        $data['CheckOutDate'] = date('d-m-Y', time());
        $data['LastModifiedById'] = session('UserId');
        
        $Attendance_checkout = Attendance::where('AttendanceId', $id)->update($data);
        if ($Attendance_checkout) {

            $AttendanceData = Attendance::where('AttendanceId', $id)
            ->get()->first();
            $OwnerId = $AttendanceData->OwnerId;
            if($OwnerId)
            {                 
                $UserAuthData = UserAuth::where('UserId', $OwnerId)->delete();
            }
            if ($UserAuthData) {
                return response()->json('status_success');
            } else {
                return response()->json('status_failed');
            }
        } 
    }
    #### CheckOut Late Attendance
    public function checkoutLateAttendance(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $AttendanceId = $request->input('AttendanceId');
        $UpdateDate = date('Y-m-d H:i:s', time());

        $CheckOutTime = '';
        if ($request->input('CheckOutTime')) {
            $GetCheckOut = $request->input('CheckOutTime');
            $CheckOutTime = date('h:i A', strtotime($GetCheckOut));
        }

        $CheckOutDate = '';
        if ($request->input('checkOutDate')) {
            $Date = str_replace('/', '-', $request->input('checkOutDate'));
        }
        $CheckOutDate = date('d-m-Y', strtotime($Date));
        

        $data = array();
        $data['LastModifiedDate'] = $UpdateDate;
        $data['CheckOutDateTime'] = $CheckOutTime;
        $data['CheckOutDate'] = $CheckOutDate;
        $data['LastModifiedById'] = session('UserId');
        
        $Attendance_checkout = Attendance::where('AttendanceId', $AttendanceId)->update($data);
        if ($Attendance_checkout) {

            $AttendanceData = Attendance::where('AttendanceId', $AttendanceId)
            ->get()->first();
            $OwnerId = $AttendanceData->OwnerId;
            if($OwnerId)
            {                 
                $UserAuthData = UserAuth::where('UserId', $OwnerId)->delete();
            }
            if ($UserAuthData) {
                return response()->json('status_success');
            } else {
                return response()->json('status_failed');
            }
        } 
    }

    ### Edit Records
    public function editAttendance($id)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $Attendance = Attendance::select('tbl_attendance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName')->where('AttendanceId', '=', $id)
        ->leftJoin('tbl_user', 'tbl_attendance.OwnerId', '=', 'tbl_user.UserId')
            ->get()->first();
        return response()->json([
            'status' => 200,
            'Attendance' => $Attendance,
        ]);
    }
}