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 / 7
CRAP
0.00% covered (danger)
0.00%
0 / 68
HolidayListController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 7
272
0.00% covered (danger)
0.00%
0 / 68
 index
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 7
 create
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 10
 store
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 20
 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
6
0.00% covered (danger)
0.00%
0 / 13
 update
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 14
 destroy
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 3
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Admin\HolidayList;
use App\Models\Admin\Holiday;
use Illuminate\Support\Facades\Validator;
use Session;
use Carbon\Carbon;
use App\Helpers\AttendanceHelper;
class HolidayListController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $title = '/Setup/Holiday Lists';
        $backurl = route('home');
        // For Attendance Marking
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        return view('administrationForms.HolidayList.HolidayListTable', compact('title','backurl','val',
        'valTeam','valUser'))->with('holiday_lists', HolidayList::all());
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request) {
        $title = '/Setup/Create Holiday List';
        $backurl = route('holiday-list.index');
        $todayYear = Carbon::now();
        $holidays = Holiday::whereYear( 'date', $todayYear)->orderBy('date')->get();
        $attachedHolidays=[];
        // For Attendance Marking
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        return view('administrationForms.HolidayList.HolidayListForm',compact('title','holidays', 'attachedHolidays',
                    'backurl','val','valTeam','valUser'));
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required|unique:holiday_lists',
        ]);
        $count = HolidayList::where('is_default','=','1')->count();
        if($count < 1)
        {
            $request->is_default = '1';
        }
        if ($validator->fails())
        {
            return redirect()->route('holiday-list.create')->withErrors($validator);
        }
        else
        {
            if($request->is_default == '1')
            {
                HolidayList::where('is_default','=',1)
                ->update(['is_default'=>0]);
            }
            //check if is default is null
            if($request->is_default == null){
                $is_default = 0;
            }else{
                $is_default = $request->is_default;
            }
            $holidayList = HolidayList::create([
                'name' => $request->name,
                'is_default' => $is_default
            ]);
            $holidays = $request->holidays;
            $holidayList->holidays()->sync($holidays);
            Session::flash('success', 'Holiday Lists added successfully!');
            return redirect()->route('holiday-list.index');
        }
    }
    /**
     * 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(Request $request,$id)
    {
        $title = '/Setup/Edit Holiday Lists';
        $backurl = route('holiday-list.index');
        $holidayList = HolidayList::where('id', $id)->with('holidays')->first();
        // return $holidayList;
        $todayYear = Carbon::now();
        $holidays = Holiday::whereYear( 'date', $todayYear)->orderBy('date')->get();
        // get already attached Holidays
        $attachedHolidays = [];
        foreach ($holidayList->holidays as $value)
        {
            $attachedHolidays[] = $value->id;
        }
        // For Attendance Marking
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        // Session::flash('warning', 'Edit Holiday Lists');
        return view('administrationForms.HolidayList.HolidayListForm', compact('title', 'holidayList', 'holidays',
                    'attachedHolidays','backurl','val','valTeam','valUser'))->with('holidayList',HolidayList::find($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)
    // {
    //     $this->validate($request,[
    //          'name'  => 'required|unique:holiday_lists,name,' . $id
    //     ]);
    //     $count = HolidayList::where('is_default','=','1')->count();
    //     if($count <= 1)
    //     {
    //         $request->is_default = '1';
    //     }
    //     if($request->is_default == '1')
    //     {
           
    //         HolidayList::where('is_default','=',1)
    //                     ->update(['is_default'=>0]);
    //         $is_default = 1;
    //     }else{
    //         $is_default = 0;
            
    //     }
    //     $holidayList =  HolidayList::find($id);
    //     $holidayList->update(['name'=>$request->name, 'is_default'=> $is_default]);
    //     $holidays = $request->holidays;
    //     // just sync those.
    //     $holidayList->holidays()->sync($holidays);
    //     Session::flash('success', 'Holiday List Updated Successfully!');
    //     return redirect()->route('holiday-list.index')->withErrors($this);
    // }
    public function update(Request $request, $id)
{
    $this->validate($request, [
        'name' => 'required|unique:holiday_lists,name,' . $id
    ]);
    $count = HolidayList::where('is_default', '=', '1')->count();
    
    // Check if is_default is manually set in the request
    $is_default = $request->has('is_default') ? $request->is_default : 0;
    // If there's only one default or none, allow setting is_default manually
    if ($count <= 1 || $is_default) {
        if ($is_default) {
            // If manually set as default, update other default holiday lists
            HolidayList::where('is_default', '=', 1)->update(['is_default' => 0]);
        }
    } else {
        // If there's more than one default and is_default is not manually set, don't change it
        $is_default = 0;
    }
    $holidayList = HolidayList::find($id);
    $holidayList->update(['name' => $request->name, 'is_default' => $is_default]);
    $holidays = $request->holidays;
    // Just sync those.
    $holidayList->holidays()->sync($holidays);
    Session::flash('success', 'Holiday List Updated Successfully!');
    return redirect()->route('holiday-list.index')->withErrors($this);
}
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $holidayList = HolidayList::find($id);
        $holidayList->delete();
        return redirect()->route('holiday-list.index')->with('success','Holiday List Deleted Successfully');
    }
}