Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
CRAP
0.00% covered (danger)
0.00%
0 / 71
LeavelogController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
462
0.00% covered (danger)
0.00%
0 / 71
 index
0.00% covered (danger)
0.00%
0 / 1
42
0.00% covered (danger)
0.00%
0 / 28
 viewLog
0.00% covered (danger)
0.00%
0 / 1
90
0.00% covered (danger)
0.00%
0 / 37
 create
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 store
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 show
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 edit
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 update
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 destroy
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Auth\User;
use App\Models\Leave\LeaveEntitlement;
use App\Models\Admin\Leave;
use DB;
use Carbon\CarbonPeriod;
use Carbon\Carbon;
use Auth;
use Session;
use GetShiftDetailHelper;
use App\Models\Admin\UserDetail;
use App\Helpers\AttendanceHelper;
use App\Models\Leave\ApplyLeave;
class LeavelogController extends Controller
{
     //private $dataArr, $columnHeaders;
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {   
        
        $title = '/Administration/Log/Leave';
        $users = User::with('userdetailWithTeam')->get();
        $leaves = DB::table('leaves')->whereNull('deleted_at')->get();
        foreach ($users as $user) {
            # code...
            $leaveBalances = [];
            // return $user->userdetailWithTeam;
            //$user['team'] = isset($user['userdetailWithTeam']['teams'][0]) ? $user['userdetailWithTeam']['teams'][0]->team : '';
            $user['team'] = !empty($user->userdetail->primaryTeamName->team)  ? $user->userdetail->primaryTeamName->team : '-';
            $engagement = $user->userdetail->Engagement_type ?? '-';
            $user['engagement'] = $engagement;         
            foreach ($leaves as $leave) {
                $leaveEntitlementQuery = array(
                    'user_id' => $user->id,
                    'year' => Carbon::now()->year,
                    'leave_id' => $leave->id
                );
                $leaveEntitlementArr = LeaveEntitlement::where($leaveEntitlementQuery)->get();
                $leaveBalance = null;
                foreach ($leaveEntitlementArr as $leaveEntitlement) {
                    $leaveBalance = $leaveEntitlement->leave_balance;
                }
                if ($leaveBalance == null) {
                    $leaveBalance = 0;
                }
                $leaveBalances[] = array(
                    'id' => $leave->id,
                    'name' => $leave->name,
                    'abbr' => $leave->abbr,
                    'leave_balance' => $leaveBalance
                );
            }
            $user['leaveBalances'] = $leaveBalances;
            // print_r($leaveBalances);
        }
        // For Attendance Marking
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        // return $users;
        return view('administrationForms.LeaveLog.LeaveLog',compact('users','title','val','valTeam','valUser'));
    }
   
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function viewLog(Request $request,$id)
    {
        $user = User::with(['leavelog' => function ($query) {
            $query->latest('id');
        }])->find($id);
        $title = '/Administration/Log/Leave/'.$user->name;
        // dd($user->team);
        $leaves = DB::table('leaves')->whereNull('deleted_at')->get();
        foreach ($leaves as $leave) {
            $leaveEntitlementQuery = array(
                'user_id' => $user->id,
                'year' => Carbon::now()->year,
                'leave_id' => $leave->id
            );
            $leaveEntitlementArr = LeaveEntitlement::where($leaveEntitlementQuery)->get();
            $leaveBalance = null;
            foreach ($leaveEntitlementArr as $leaveEntitlement) {
                $leaveBalance = $leaveEntitlement->leave_balance;
            }
            if ($leaveBalance == null) {
                $leaveBalance = 0;
            }
            $leaveBalances[] = array(
                'id' => $leave->id,
                'name' => $leave->name,
                'abbr' => $leave->abbr,
                'leave_balance' => $leaveBalance
            );
        }
        $userleavebalance['leaveBalances'] = $leaveBalances;
        //dd($leaveBalances);
        $leavesData = $user->leavelog->map(function ($leave){
            $abbr = $leave->leave->abbr ?? '-';
            $details = (in_array($leave->operation, ['ADDED'])) ? '+' : '-';
            $updatedByUser = User::find($leave->updated_by_user);
            if ($leave->comments === 'Leave add-on' || $leave->comments === 'Leave deduction' && $updatedByUser) {
                $updatedByUserName = "Manual ({$updatedByUser->name} {$updatedByUser->lastName})";
            } else {
                $updatedByUserName = $updatedByUser ? "Rejected By ({$updatedByUser->name} {$updatedByUser->lastName})" : 'Auto';
            }
            return [
                'date' => date(config('settings.php_date_format'), strtotime($leave->created_at)),
                'details' => $leave->comments,
                'account' => $details. $leave->amount,
                'leave_type' =>$abbr,
                'current_balance' =>$leave->updated_balance,
                'updated_by_user' =>$updatedByUserName,
            ];
        });
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        return view('administrationForms.LeaveLog.LeaveLogDetails',['leavesData' => $leavesData,'val' => $val, 'valTeam' => $valTeam, 'valUser' => $valUser,'user'=>$user,'userleavebalance'=>$userleavebalance,'title'=>$title]);           
    }   
         
     public function create()
    {
        //
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
    }
    /**
     * Remove the specified resource from storage.
     *
     * @return \Illuminate\Http\Response
     */
    
  
}