public function index(Ticket $ticket, Request $request) { if (!Entrust::can('manage_ticket')) { return redirect('/dashboard')->withErrors(config('constants.NA')); } if (Entrust::hasRole('admin')) { $query = $ticket::with('assignedUser'); } else { $query = $ticket::with('assignedUser')->whereHas('assignedUser', function ($query) { $query->where('user_id', '=', Auth::user()->id); }); } if ($request->input('department_id')) { $query->where('department_id', '=', $request->input('department_id')); } if ($request->input('ticket_type_id')) { $query->where('ticket_type_id', '=', $request->input('ticket_type_id')); } if ($request->input('ticket_priority')) { $query->where('ticket_priority', '=', $request->input('ticket_priority')); } if ($request->input('ticket_status')) { $query->where('ticket_status', '=', $request->input('ticket_status')); } if ($request->input('response_time_overdue')) { $query->where('response_due_time', '<', date('d M Y, H:i')); } if ($request->input('resolution_time_overdue')) { $query->where('resolution_due_time', '<', date('d M Y, H:i')); } if ($request->input('start_date')) { $query->where('created_at', '>=', $request->input('start_date')); } if ($request->input('end_date')) { $query->where('created_at', '<=', $request->input('end_date')); } if ($request->input('assigned') == 'assigned') { $query->Has('assignedUser'); } elseif ($request->input('assigned') == 'unassigned') { $query->doesntHave('assignedUser'); } if ($request->input('user_id')) { $query->whereHas('assignedUser', function ($query1) use($request) { $query1->whereIn('user_id', $request->input('user_id')); }); } $filter_data = ['start_date' => $request->input('start_date'), 'end_date' => $request->input('end_date'), 'assigned' => $request->input('assigned'), 'department_id' => $request->input('department_id'), 'ticket_type_id' => $request->input('ticket_type_id'), 'ticket_priority' => $request->input('ticket_priority'), 'ticket_status' => $request->input('ticket_status'), 'user_id' => $request->input('user_id'), 'response_time_overdue' => $request->input('response_time_overdue'), 'resolution_time_overdue' => $request->input('resolution_time_overdue')]; $tickets = $query->get(); $col_data = array(); $col_heads = array(trans('messages.Option'), trans('messages.Ticket #'), trans('messages.Name'), trans('messages.Subject'), trans('messages.Response Time'), trans('messages.Resolution Time'), trans('messages.Priority'), trans('messages.Status')); $col_heads = Helper::putCustomHeads($this->form, $col_heads); $col_ids = Helper::getCustomColId($this->form); $values = Helper::fetchCustomValues($this->form); foreach ($tickets as $ticket) { $cols = array('<div class="btn-group btn-group-xs">' . '<a href="/ticket/' . $ticket->id . '" class="btn btn-default btn-xs" data-toggle="tooltip" title="View"> <i class="fa fa-share"></i></a> ' . '<a href="/ticket/' . $ticket->id . '/edit" class="btn btn-default btn-xs" data-toggle="tooltip" title="Edit"> <i class="fa fa-edit"></i></a> ' . delete_form(['ticket.destroy', $ticket->id]) . '</div>', $ticket->ticket_no, $ticket->User->name, $ticket->ticket_subject, (strtotime($ticket->response_due_time) < time() ? '<span class="badge badge-danger">Overdue</span> ' : '') . Helper::showDateTime($ticket->response_due_time), (strtotime($ticket->resolution_due_time) < time() ? '<span class="badge badge-danger">Overdue</span> ' : '') . Helper::showDateTime($ticket->resolution_due_time), Helper::showTicketPriority($ticket->ticket_priority), Helper::showTicketStatus($ticket->ticket_status)); $id = $ticket->id; foreach ($col_ids as $col_id) { array_push($cols, isset($values[$id][$col_id]) ? $values[$id][$col_id] : ''); } $col_data[] = $cols; } $departments = Department::lists('department_name', 'id')->all(); $ticket_types = TicketType::lists('ticket_type_name', 'id')->all(); Helper::writeResult($col_data); $users = User::with('roles')->whereHas('roles', function ($query) { $query->where('roles.name', '!=', 'user'); })->lists('name', 'id')->all(); return view('ticket.index', compact('col_heads', 'departments', 'ticket_types', 'filter_data', 'users')); }