Updates
This commit is contained in:
185
app/Http/ViewComposers/AgentLayout.php
Normal file
185
app/Http/ViewComposers/AgentLayout.php
Normal file
@@ -0,0 +1,185 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\ViewComposers;
|
||||
|
||||
use Illuminate\View\View;
|
||||
use App\Model\helpdesk\Settings\Company;
|
||||
use Auth;
|
||||
use App\User;
|
||||
use App\Model\helpdesk\Ticket\Tickets;
|
||||
use App\Model\helpdesk\Agent\Department;
|
||||
|
||||
class AgentLayout {
|
||||
|
||||
/**
|
||||
* The user repository implementation.
|
||||
*
|
||||
* @var UserRepository
|
||||
*/
|
||||
protected $company;
|
||||
protected $users;
|
||||
protected $tickets;
|
||||
protected $department;
|
||||
|
||||
/**
|
||||
* Create a new profile composer.
|
||||
*
|
||||
* @param
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(Company $company, User $users, Tickets $tickets, Department $department) {
|
||||
$this->company = $company;
|
||||
$this->auth = Auth::user();
|
||||
$this->users = $users;
|
||||
$this->tickets = $tickets;
|
||||
$this->department = $department;
|
||||
}
|
||||
|
||||
/**
|
||||
* Bind data to the view.
|
||||
*
|
||||
* @param View $view
|
||||
* @return void
|
||||
*/
|
||||
public function compose(View $view) {
|
||||
$notifications = \App\Http\Controllers\Common\NotificationController::getNotifications();
|
||||
$view->with([
|
||||
'company' => $this->company,
|
||||
'notifications' => $notifications,
|
||||
'myticket' => $this->myTicket(),
|
||||
'unassigned' => $this->unassigned(),
|
||||
'followup_ticket' => $this->followupTicket(),
|
||||
'deleted' => $this->deleted(),
|
||||
'tickets' => $this->inbox(),
|
||||
'department' => $this->departments(),
|
||||
'overdues' => $this->overdues(),
|
||||
'due_today' => $this->getDueToday(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function users() {
|
||||
return $this->users->select('id', 'profile_pic');
|
||||
}
|
||||
|
||||
public function tickets() {
|
||||
return $this->tickets->select('id', 'ticket_number');
|
||||
}
|
||||
|
||||
public function departments() {
|
||||
$array = [];
|
||||
$tickets = $this->tickets;
|
||||
if (\Auth::user()->role == 'agent') {
|
||||
$tickets = $tickets->where('tickets.dept_id', '=', \Auth::user()->primary_dpt);
|
||||
}
|
||||
$tickets = $tickets
|
||||
->leftJoin('department as dep', 'tickets.dept_id', '=', 'dep.id')
|
||||
->leftJoin('ticket_status', 'tickets.status', '=', 'ticket_status.id')
|
||||
->select('dep.name as name', 'ticket_status.name as status', \DB::raw('COUNT(ticket_status.name) as count'))
|
||||
->groupBy('dep.name', 'ticket_status.name')
|
||||
->get();
|
||||
$grouped = $tickets->groupBy('name');
|
||||
$status = [];
|
||||
foreach ($grouped as $key => $group) {
|
||||
$status[$key] = $group->keyBy('status');
|
||||
}
|
||||
return collect($status);
|
||||
}
|
||||
|
||||
public function myTicket() {
|
||||
$ticket = $this->tickets();
|
||||
if ($this->auth->role == 'admin') {
|
||||
return $ticket->where('assigned_to', $this->auth->id)
|
||||
->where('status', '1');
|
||||
} elseif ($this->auth->role == 'agent') {
|
||||
return $ticket->where('assigned_to', $this->auth->id)
|
||||
->where('status', '1');
|
||||
}
|
||||
}
|
||||
|
||||
public function unassigned() {
|
||||
$ticket = $this->tickets();
|
||||
if ($this->auth->role == 'admin') {
|
||||
return $ticket->where('assigned_to', '=', null)
|
||||
->where('status', '=', '1')
|
||||
->select('id');
|
||||
} elseif ($this->auth->role == 'agent') {
|
||||
return $ticket->where('assigned_to', '=', null)
|
||||
->where('status', '=', '1')
|
||||
->where('dept_id', '=', $this->auth->primary_dpt)
|
||||
->select('id');
|
||||
}
|
||||
}
|
||||
|
||||
public function followupTicket() {
|
||||
$ticket = $this->tickets();
|
||||
if ($this->auth->role == 'admin') {
|
||||
return $ticket->where('status', '1')->where('follow_up', '1')->select('id');
|
||||
} elseif ($this->auth->role == 'agent') {
|
||||
return $ticket->where('status', '1')->where('follow_up', '1')->select('id');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function deleted() {
|
||||
$ticket = $this->tickets();
|
||||
if ($this->auth->role == 'admin') {
|
||||
return $ticket->where('status', '5')->select('id');
|
||||
} elseif ($this->auth->role == 'agent') {
|
||||
return $ticket->where('status', '5')->where('dept_id', '=', $this->auth->primary_dpt)
|
||||
->select('id');
|
||||
}
|
||||
}
|
||||
|
||||
public function inbox() {
|
||||
$ticket = $this->tickets();
|
||||
if ($this->auth->role == 'admin') {
|
||||
return $ticket->whereIn('status', array(1, 7))->select('id');
|
||||
} elseif ($this->auth->role == 'agent') {
|
||||
return $ticket->whereIn('status', array(1, 7))
|
||||
->where('dept_id', '=', $this->auth->primary_dpt)
|
||||
->orWhere('assigned_to', '=', Auth::user()->id)
|
||||
->select('id');
|
||||
}
|
||||
}
|
||||
|
||||
public function overdues() {
|
||||
$ticket = $this->tickets();
|
||||
if ($this->auth->role == 'admin') {
|
||||
return $ticket->where('status', '=', 1)
|
||||
->where('isanswered', '=', 0)
|
||||
->whereNotNull('tickets.duedate')
|
||||
->where('tickets.duedate', '!=', '00-00-00 00:00:00')
|
||||
->where('tickets.duedate', '<', \Carbon\Carbon::now())
|
||||
->select('tickets.id');
|
||||
} elseif ($this->auth->role == 'agent') {
|
||||
return $ticket->where('status', '=', 1)
|
||||
->where('isanswered', '=', 0)
|
||||
->whereNotNull('tickets.duedate')
|
||||
->where('dept_id', '=', $this->auth->primary_dpt)
|
||||
->where('tickets.duedate', '!=', '00-00-00 00:00:00')
|
||||
->where('tickets.duedate', '<', \Carbon\Carbon::now())
|
||||
->select('tickets.id');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function getDueToday()
|
||||
{
|
||||
$ticket = $this->tickets();
|
||||
if ($this->auth->role == 'admin') {
|
||||
return $ticket->where('status', '=', 1)
|
||||
->where('status','=',1 )
|
||||
->where('isanswered', '=', 0)
|
||||
->whereNotNull('duedate')
|
||||
->whereRaw('date(duedate) = ?', [date('Y-m-d')]);
|
||||
} elseif ($this->auth->role == 'agent') {
|
||||
return $ticket->where('status', '=', 1)
|
||||
->where('status','=',1 )
|
||||
->where('isanswered', '=', 0)
|
||||
->whereNotNull('duedate')
|
||||
->where('dept_id', '=', $this->auth->primary_dpt)
|
||||
->whereRaw('date(duedate) = ?', [date('Y-m-d')]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user