/home/smartonegroup/public_html/veroserv/system/controllers/tasks.php
<?php
/*
|--------------------------------------------------------------------------
| Controller
|--------------------------------------------------------------------------
|
*/
_auth();
$ui->assign('selected_navigation', 'tasks');
$ui->assign('_title', $_L['Tasks'] . '- ' . $config['CompanyName']);
$action = route(1, 'list');
$user = authenticate_admin();
Event::trigger('accounts');
switch ($action) {
case 'list':
$mdate = date('Y-m-d');
$ui->assign('mdate', $mdate);
$contacts = Contact::select(['id', 'account'])
->get()
->groupBy('id')
->all();
$tickets = Ticket::select(['id', 'tid'])
->get()
->groupBy('id')
->all();
// $tasks_not_started = ORM::for_table('sys_tasks')
// ->select('title')
// ->select('aid')
// ->select('cid')
// ->select('tid')
// ->select('priority')
// ->where('status', 'Not Started')
// ->select('id')
// ->select('created_at')
// ->select('due_date')
// ->select('created_by')
// ->order_by_desc('id');
$tasks_not_started = Task::query()->where('status', 'Not Started')->orderBy('id', 'desc');
if (!has_access($user->roleid, 'tasks', 'all_data')) {
$tasks_not_started = $tasks_not_started->where('aid', $user->id);
}
$tasks_not_started = $tasks_not_started->get()->toArray();
$ui->assign('tasks_not_started', $tasks_not_started);
// $tasks_in_progress = ORM::for_table('sys_tasks')
// ->select('title')
// ->select('aid')
// ->select('cid')
// ->select('tid')
// ->select('priority')
// ->where('status', 'In Progress')
// ->select('id')
// ->select('created_at')
// ->select('due_date')
// ->select('created_by')
// ->order_by_desc('id');
$tasks_in_progress = Task::query()->where('status', 'In Progress')->orderBy('id', 'desc');
if (!has_access($user->roleid, 'tasks', 'all_data')) {
$tasks_in_progress = $tasks_in_progress->where('aid', $user->id);
}
$tasks_in_progress = $tasks_in_progress->get()->toArray();
$ui->assign('tasks_in_progress', $tasks_in_progress);
// $tasks_completed = ORM::for_table('sys_tasks')
// ->select('title')
// ->select('aid')
// ->select('cid')
// ->select('tid')
// ->select('priority')
// ->where('status', 'Completed')
// ->select('id')
// ->select('created_at')
// ->select('due_date')
// ->select('created_by')
// ->order_by_desc('id');
$tasks_completed = Task::query()->where('status', 'Completed')->orderBy('id', 'desc');
if (!has_access($user->roleid, 'tasks', 'all_data')) {
$tasks_completed = $tasks_completed->where('aid', $user->id);
}
$tasks_completed = $tasks_completed->get()->toArray();
$ui->assign('tasks_completed', $tasks_completed);
// $tasks_deferred = ORM::for_table('sys_tasks')
// ->select('title')
// ->select('aid')
// ->select('cid')
// ->select('tid')
// ->select('priority')
// ->where('status', 'Deferred')
// ->select('id')
// ->select('created_at')
// ->select('due_date')
// ->select('created_by')
// ->order_by_desc('id');
$tasks_deferred = Task::query()->where('status', 'Deferred')->orderBy('id', 'desc');
if (!has_access($user->roleid, 'tasks', 'all_data')) {
$tasks_deferred = $tasks_deferred->where('aid', $user->id);
}
$tasks_deferred = $tasks_deferred->get()->toArray();
$ui->assign('tasks_deferred', $tasks_deferred);
// $tasks_waiting = ORM::for_table('sys_tasks')
// ->select('title')
// ->select('aid')
// ->select('cid')
// ->select('tid')
// ->select('priority')
// ->where('status', 'Waiting')
// ->select('id')
// ->select('created_at')
// ->select('due_date')
// ->select('created_by')
// ->order_by_desc('id');
$tasks_waiting = Task::query()->where('status', 'Waiting')->orderBy('id', 'desc');
if (!has_access($user->roleid, 'tasks', 'all_data')) {
$tasks_waiting = $tasks_waiting->where('aid', $user->id);
}
$tasks_waiting = $tasks_waiting->get()->toArray();
$ui->assign('tasks_waiting', $tasks_waiting);
view('tasks', [
'contacts' => $contacts,
'tickets' => $tickets,
]);
break;
case 'create':
$id = route(2, 0);
$id = str_replace('e_', '', $id);
$id = (int) $id;
$project_id = route(3, 0);
$customers_all_data = has_access(
$user->roleid,
'customers',
'all_data'
);
// $c = ORM::for_table('crm_accounts')
// ->select('id')
// ->select('account')
// ->select('company')
// ->select('email')
// ->order_by_desc('id');
$c = Contact::query()->orderBy('id', 'desc');
if (!$customers_all_data) {
$c->where('o', $user->id);
}
// $c = $c->find_many();
$c = $c->get();
$edit = false;
$relations = ['Customer', 'Invoice', 'Quote', 'Lead'];
$app->emit('internalRelatedTo', [&$relations]);
$mdate = date('Y-m-d');
if (!$id) {
$task = [];
$task['id'] = '';
$task['cid'] = '';
$task['title'] = '';
$task['description'] = '';
$task['status'] = 'Not Started';
$task['priority'] = '';
$task['created_at'] = '';
$task['created_by'] = '';
$task['updated_at'] = '';
$task['updated_by'] = '';
$task['due_date'] = '';
$task['is_public'] = '';
$task['started'] = $mdate;
$task['due_date'] = $mdate;
} else {
$task = Task::find($id);
if ($task) {
$edit = true;
}
}
$ui->assign('edit', $edit);
$ui->assign('task', $task);
$ui->assign('relations', $relations);
$ui->assign('val', $task);
$admin_users = User::all()->keyBy('id')->all();
view('modal_task_create', [
'c' => $c,
'project_id' => $project_id,
'admin_users' => $admin_users,
]);
break;
case 'post':
$title = _post('title');
$msg = '';
if ($title == '') {
$msg .= 'Title is required';
}
if ($msg == '') {
$data = ib_posted_data();
$data['aid'] = $data['aid'] ?? $user->id;
$data['created_by'] = $user->fullname;
$task = Tasks::create($data);
if ($task) {
echo $task;
} else {
echo 'An error occurred';
}
} else {
echo $msg;
}
break;
case 'set_status':
$id = _post('task_id');
$id = str_replace('item_', '', $id);
$d = ORM::for_table('sys_tasks')->find($id);
$target = _post('target');
switch ($target) {
case 'not_started':
$status = 'Not Started';
if ($d->tid) {
$ticket = Ticket::find($d->tid);
if ($ticket) {
$ticket->status = 'Open';
$ticket->save();
}
}
break;
case 'in_progress':
$status = 'In Progress';
if ($d->tid) {
$ticket = Ticket::find($d->tid);
if ($ticket) {
$ticket->status = 'Open';
$ticket->save();
}
}
break;
case 'completed':
$status = 'Completed';
$d->date_finished = date('Y-m-d');
if ($d->tid) {
$ticket = Ticket::find($d->tid);
if ($ticket) {
$ticket->status = 'Closed';
$ticket->save();
}
}
break;
case 'deferred':
$status = 'Deferred';
break;
case 'waiting_on_someone':
$status = 'Waiting';
break;
default:
$status = 'Not Started';
}
if ($d) {
$d->status = $status;
$d->save();
echo $d->id();
}
break;
case 'view':
$id = route(2);
$id = str_replace('v_', '', $id);
$d = ORM::for_table('sys_tasks')->find($id);
if ($d) {
$has_delete_permission = true;
$has_edit_permission = true;
if (!has_access($user->roleid, 'tasks', 'delete')) {
$has_delete_permission = false;
}
if (!has_access($user->roleid, 'tasks', 'edit')) {
$has_edit_permission = false;
}
$ui->assign('d', $d);
$contact_id = $d->cid;
$ticket_id = $d->tid;
$contact = false;
$ticket = false;
if ($contact_id != '' || $contact_id != 0) {
$contact = Contact::find($contact_id);
}
if ($ticket_id != '' || $ticket_id != 0) {
$ticket = Ticket::find($ticket_id);
}
view('modal_task_view', [
'contact' => $contact,
'ticket' => $ticket,
'has_delete_permission' => $has_delete_permission,
'has_edit_permission' => $has_edit_permission,
]);
}
break;
case 'ajax_tasks':
$reportrange = _post('reportrange');
if ($reportrange != '') {
$reportrange = explode('-', $reportrange);
$from_date = date('Y-m-d', strtotime(trim($reportrange[0])));
$to_date = date('Y-m-d', strtotime(trim($reportrange[1])));
}
$mdate = date('Y-m-d');
$ui->assign('mdate', $mdate);
$contacts = Contact::select(['id', 'account'])
->get()
->groupBy('id')
->all();
$tickets = Ticket::select(['id', 'tid'])
->get()
->groupBy('id')
->all();
$tasks_not_started = ORM::for_table('sys_tasks')
->select('title')
->select('aid')
->select('cid')
->select('tid')
->select('priority')
->where('status', 'Not Started')
->select('id')
->select('created_at')
->select('due_date')
->select('created_by')
->order_by_desc('id');
if (!has_access($user->roleid, 'tasks', 'all_data')) {
$tasks_not_started = $tasks_not_started->where('aid', $user->id);
}
$tasks_not_started = $tasks_not_started->find_array();
$ui->assign('tasks_not_started', $tasks_not_started);
$tasks_in_progress = ORM::for_table('sys_tasks')
->select('title')
->select('aid')
->select('cid')
->select('tid')
->select('priority')
->where('status', 'In Progress')
->select('id')
->select('created_at')
->select('due_date')
->select('created_by')
->order_by_desc('id');
if (!has_access($user->roleid, 'tasks', 'all_data')) {
$tasks_in_progress = $tasks_in_progress->where('aid', $user->id);
}
$tasks_in_progress = $tasks_in_progress->find_array();
$ui->assign('tasks_in_progress', $tasks_in_progress);
$tasks_completed = ORM::for_table('sys_tasks')
->select('title')
->select('aid')
->select('cid')
->select('tid')
->select('priority')
->where('status', 'Completed')
->select('id')
->select('created_at')
->select('due_date')
->select('created_by')
->order_by_desc('id');
if (!has_access($user->roleid, 'tasks', 'all_data')) {
$tasks_completed = $tasks_completed->where('aid', $user->id);
}
$tasks_completed = $tasks_completed->find_array();
$ui->assign('tasks_completed', $tasks_completed);
$tasks_deferred = ORM::for_table('sys_tasks')
->select('title')
->select('aid')
->select('cid')
->select('tid')
->select('priority')
->where('status', 'Deferred')
->select('id')
->select('created_at')
->select('due_date')
->select('created_by')
->order_by_desc('id');
if (!has_access($user->roleid, 'tasks', 'all_data')) {
$tasks_deferred = $tasks_deferred->where('aid', $user->id);
}
$tasks_deferred = $tasks_deferred->find_array();
$ui->assign('tasks_deferred', $tasks_deferred);
$tasks_waiting = ORM::for_table('sys_tasks')
->select('title')
->select('aid')
->select('cid')
->select('tid')
->select('priority')
->where('status', 'Waiting')
->select('id')
->select('created_at')
->select('due_date')
->select('created_by')
->order_by_desc('id');
if (!has_access($user->roleid, 'tasks', 'all_data')) {
$tasks_waiting = $tasks_waiting->where('aid', $user->id);
}
$tasks_waiting = $tasks_waiting->find_array();
$ui->assign('tasks_waiting', $tasks_waiting);
view('ajax-tasks', []);
break;
default:
echo 'action not defined';
}