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 / 129
ShiftController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
812
0.00% covered (danger)
0.00%
0 / 129
 index
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 6
 shiftlistdata
0.00% covered (danger)
0.00%
0 / 1
182
0.00% covered (danger)
0.00%
0 / 53
 create
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 7
 store
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 19
 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 / 11
 update
0.00% covered (danger)
0.00%
0 / 1
72
0.00% covered (danger)
0.00%
0 / 28
 destroy
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 4
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Admin\Shift;
use App\Models\Admin\BufferOn;
use App\Models\Admin\Weekend;
use Illuminate\Support\Facades\Validator;
use App\Models\Auth\UserShift;
use App\Models\Admin\UserDetail;
use Session;
use Carbon\Carbon;
use App\Models\Admin\TeamShiftDetail;
use App\Models\Admin\UserDetailShift;
use App\Helpers\AttendanceHelper;
class ShiftController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $title = '/Setup/Shift';
        $backurl = route('home');
        // For Attendance Marking
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        return view('administrationForms.Shift.ShiftTable', compact('title','backurl','val','valTeam','valUser'));
    }
    public function shiftlistdata(Request $request)
    {
        $column_key = array("0"=>"shift","1"=>"start_time","2" =>"end_time");
        $where_condition = "1 = 1";
        $order_key              =   $request->input('order')[0]['column'];
        $order                  =   $column_key[$order_key];
        $dir                    =   $request->input('order')[0]['dir'];
        if(trim($dir)==''){
            $dir = 'desc';   
        }
        if ($order != '') {
            $orderBy = " ORDER BY ".$order." ".$dir;
        }
        if(null !==($request->input('search.value')) && trim($request->input('search.value'))!=''){
            $search = $request->input('search.value');
            $where_condition .= " AND (shift Like '%$search%' OR start_time Like '%$search%' OR end_time Like '%$search%')";
        }
        $count_model = Shift::whereRaw($where_condition)->count();
        $total_app_count        =   $count_model;
        $totalFiltered          =   $count_model; 
        $data_model = Shift::whereRaw($where_condition)
              ->orderBy($order , $dir)
              ->offset( intval($request->input('start')))->limit(intval($request->input('length')))
              ->get();
     
        $data = array();
        if(count($data_model)>0){
            foreach($data_model as $database_model){
                $nestedData['name'] = $database_model->shift;
                $shiftStartTime = Carbon::parse($database_model->start_time,config('app.timezone'));
                    $shiftStartTime->setTimezone(Config('settings.time_zone')); 
                    $shiftStartTime = $shiftStartTime->toTimeString();
                    $shiftStartTime =  date(Config('settings.time_format'), strtotime($shiftStartTime));
                    $shiftEndTime = Carbon::parse($database_model->end_time,config('app.timezone'));
                    $shiftEndTime->setTimezone(Config('settings.time_zone')); 
                    $shiftEndTime = $shiftEndTime->toTimeString();
                    $shiftEndTime =  date(Config('settings.time_format'), strtotime($shiftEndTime));
                $nestedData['starttime'] = $shiftStartTime;
                $nestedData['endtime'] = $shiftEndTime;
                $nestedData['action'] = '-';
                $edit_link = '';
                if(auth()->user()->can('Edit Shifts module'))
                {
                    $edit_route =  route('shift.edit',$database_model->id);
                    $edit_link = '<a href="'.$edit_route.'" data-original-title="Edit"> <i class="icon-pencil7" title="edit" style="color:#3699FF !important;"></i> </a>';
                    $nestedData['action'] = $edit_link;
                }
                if(auth()->user()->can('Delete Shifts module'))
                {
                    $userShift = UserDetailShift::where('shift_id','=',$database_model->id)->count();
                    $isused = '0';
                    $teamshift = TeamShiftDetail::where('shift_id','=',$database_model->id)->count();
                    if((isset($userShift) && !empty($userShift)) || (isset($teamshift) && !empty($teamshift)))
                    {
                        $isused = '1';
                    }
                    $delete_link = '<a href="#" title="Delete" data-original-title="Delete" style="padding-left: 5px"; onclick="deleteShift('.$database_model->id.','.$isused.');" ><i class="icon-bin" style="color:#dc3545 !important;"></i></a>';
                     $nestedData['action'] = $edit_link.'&nbsp;'.$delete_link;
                }
                
                $data[] = $nestedData;
            }
        }
       $json_data = array(
        "draw"            => intval( $request->input('draw')),   
        "recordsTotal"    => intval( $total_app_count ),  
        "recordsFiltered" => intval($total_app_count ),
        "data"            => $data,   // total data array
      );
      echo json_encode($json_data);exit;
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request)
    {
        $title = '/Setup/Create Shift';
        $backurl = route('shift.index');
        $buffers = BufferOn::all();
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        return view('administrationForms.Shift.ShiftForm',compact('title','buffers','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(), [
            'shift' => 'required|unique:shifts,shift|max:255',
            'start_time' => 'required',
            'end_time' => 'required',
            'buffer_on_checkin' => 'required',
            'buffer_on_checkout' => 'required',
           // 'buffer_on_id' => 'required',
       
        ]);
        if ($validator->fails())
        {
            return redirect()->route('shift.create')->withErrors($validator);
        }
        else
        {
            $request->start_time = Carbon::parse($request->start_time,config('settings.time_zone'));
            $request->start_time->setTimezone(Config('app.timezone'));
            $start_time = $request->start_time->toTimeString();
            $request->end_time = Carbon::parse($request->end_time,config('settings.time_zone'));
            $request->end_time->setTimezone(Config('app.timezone'));
            $end_time = $request->end_time->toTimeString();
            $request->request->add(['buffer_on_checkin' => $request->buffer_on_checkin.':00']);
            $request->request->add(['start_time' => $start_time]);
            $request->request->add(['end_time' => $end_time]);
            $request->request->add(['buffer_on_checkout' => $request->buffer_on_checkout.':00']);
            $shift = Shift::create($request->all());
            /**
             * Add entry of weekend
            **/
            $request->request->add(['shift_id' => $shift->id]);  //add shift id
            $weekend = Weekend::create($request->all());
            Session::flash('success', 'Shift Added Successfully!');
            return redirect()->route('shift.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 Shift';
        $backurl = route('shift.index');
        $shift = Shift::find($id);
        $shift->weekend;
        $buffersEdits = BufferOn::all();
        $bufferArr = $shift;
        Session::flash('warning', 'Edit Shift');
        // For Attendance Marking
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        return view('administrationForms.Shift.ShiftForm', compact('shift','title','buffersEdits','bufferArr','backurl','val','valTeam','valUser'));
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        /**
         * Checked the value exist in the request or not
        **/
        if($request->monday == null) { $request['monday'] = "0"; }
        if($request->tuesday == null) { $request['tuesday'] = "0";}
        if($request->wednesday == null) { $request['wednesday'] = "0";}
        if($request->thursday == null) { $request['thursday'] = "0"; }
        if($request->friday == null) { $request['friday'] = "0"; }
        if($request->saturday == null) { $request['saturday'] = "0"; }
        if($request->sunday == null) { $request['sunday'] = "0"; }
        $this->validate($request,[
            'shift' => 'required|max:190|unique:shifts,shift,' . $id,
            'start_time' => 'required',
            'end_time' => 'required',
            'buffer_on_checkin' => 'required',
            'buffer_on_checkout' => 'required',
           // 'buffer_on_id' => 'required',
        ]);
        $request->start_time = Carbon::parse($request->start_time,config('settings.time_zone'));
        $request->start_time->setTimezone(Config('app.timezone'));
        $start_time = $request->start_time->toTimeString();
        $request->end_time = Carbon::parse($request->end_time,config('settings.time_zone'));
        $request->end_time->setTimezone(Config('app.timezone'));
        $end_time = $request->end_time->toTimeString();
        //exit;
        $shift = Shift::find($id);
        $request->request->add(['buffer_on_checkin' => $request->buffer_on_checkin.':00']);
        $request->request->add(['start_time' => $start_time]);
        $request->request->add(['end_time' => $end_time]);
        $request->request->add(['buffer_on_checkout' => $request->buffer_on_checkout.':00']);
        $shift->update($request->only(['shift','start_time','end_time','buffer_on_checkin','buffer_on_checkout']));
        $shift->weekend->update($request->only(['monday','tuesday','wednesday','thursday','friday','saturday','sunday']));
        Session::flash('success', 'Shift Updated Successfully!');
        return redirect()->route('shift.index')->withErrors($this);
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy(Request $request)
    {
        $id = $request->id;
        $shift = Shift::find($id);
        $shift->delete();
        return response()->json(['success_flag'=>1,'success_message'=>'Shift Deleted Successfully']); 
    }
}