724 lines
26 KiB
PHP
724 lines
26 KiB
PHP
<?php
|
|
|
|
namespace Modules\Essentials\Http\Controllers;
|
|
|
|
use App\Media;
|
|
use App\User;
|
|
use App\Utils\ModuleUtil;
|
|
use App\Utils\Util;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\Routing\Controller;
|
|
use Illuminate\Support\Facades\View;
|
|
use Modules\Essentials\Entities\EssentialsTodoComment;
|
|
use Modules\Essentials\Entities\ToDo;
|
|
use Modules\Essentials\Notifications\NewTaskCommentNotification;
|
|
use Modules\Essentials\Notifications\NewTaskDocumentNotification;
|
|
use Modules\Essentials\Notifications\NewTaskNotification;
|
|
use Spatie\Activitylog\Models\Activity;
|
|
use Yajra\DataTables\Facades\DataTables;
|
|
|
|
class ToDoController extends Controller
|
|
{
|
|
/**
|
|
* All Utils instance.
|
|
*/
|
|
protected $commonUtil;
|
|
|
|
protected $moduleUtil;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param CommonUtil
|
|
* @return void
|
|
*/
|
|
public function __construct(Util $commonUtil, ModuleUtil $moduleUtil)
|
|
{
|
|
$this->commonUtil = $commonUtil;
|
|
$this->moduleUtil = $moduleUtil;
|
|
|
|
$this->priority_colors = [
|
|
'low' => 'bg-green',
|
|
'medium' => 'bg-yellow',
|
|
'high' => 'bg-orange',
|
|
'urgent' => 'bg-red',
|
|
];
|
|
|
|
$this->status_colors = [
|
|
'new' => 'bg-yellow',
|
|
'in_progress' => 'bg-light-blue',
|
|
'on_hold' => 'bg-red',
|
|
'completed' => 'bg-green',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function index(Request $request)
|
|
{
|
|
$business_id = request()->session()->get('user.business_id');
|
|
if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module'))) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
$is_admin = $this->moduleUtil->is_admin(auth()->user(), $business_id);
|
|
$auth_id = auth()->user()->id;
|
|
|
|
$task_statuses = ToDo::getTaskStatus();
|
|
$priorities = ToDo::getTaskPriorities();
|
|
|
|
if (request()->ajax()) {
|
|
$todos = ToDo::where('business_id', $business_id)
|
|
->with(['users', 'assigned_by'])
|
|
->select('*');
|
|
|
|
if (! empty($request->priority)) {
|
|
$todos->where('priority', $request->priority);
|
|
}
|
|
|
|
if (! empty($request->status)) {
|
|
$todos->where('status', $request->status);
|
|
}
|
|
|
|
//If not admin show only assigned task
|
|
if (! $is_admin) {
|
|
$todos->where(function ($query) use ($auth_id) {
|
|
$query->where('created_by', $auth_id)
|
|
->orWhereHas('users', function ($q) use ($auth_id) {
|
|
$q->where('user_id', $auth_id);
|
|
});
|
|
});
|
|
}
|
|
|
|
//Filter by user id.
|
|
if (! empty($request->user_id)) {
|
|
$user_id = $request->user_id;
|
|
$todos->whereHas('users', function ($q) use ($user_id) {
|
|
$q->where('user_id', $user_id);
|
|
});
|
|
}
|
|
|
|
//Filter by date.
|
|
if (! empty($request->start_date) && ! empty($request->end_date)) {
|
|
$start = $request->start_date;
|
|
$end = $request->end_date;
|
|
$todos->whereDate('date', '>=', $start)
|
|
->whereDate('date', '<=', $end);
|
|
}
|
|
|
|
return Datatables::of($todos)
|
|
->addColumn(
|
|
'action',
|
|
function ($row) {
|
|
$html = '<div class="btn-group">
|
|
<button type="button" class="btn btn-info dropdown-toggle btn-xs" data-toggle="dropdown" aria-expanded="false">'.__('messages.actions').'<span class="caret"></span><span class="sr-only">Toggle Dropdown</span>
|
|
</button>
|
|
<ul class="dropdown-menu dropdown-menu-right" role="menu">';
|
|
|
|
if (auth()->user()->can('essentials.edit_todos')) {
|
|
$html .= '<li><a href="#" data-href="'.action([\Modules\Essentials\Http\Controllers\ToDoController::class, 'edit'], [$row->id]).'" class="btn-modal" data-container="#task_modal"><i class="glyphicon glyphicon-edit"></i> '.__('messages.edit').'</a></li>';
|
|
}
|
|
|
|
if (auth()->user()->can('essentials.delete_todos')) {
|
|
$html .= '<li><a href="#" data-href="'.action([\Modules\Essentials\Http\Controllers\ToDoController::class, 'destroy'], [$row->id]).'" class="delete_task" ><i class="fa fa-trash"></i> '.__('messages.delete').'</a></li>';
|
|
}
|
|
|
|
$html .= '<li><a href="'.action([\Modules\Essentials\Http\Controllers\ToDoController::class, 'show'], [$row->id]).'" ><i class="fa fa-eye"></i> '.__('messages.view').'</a></li>';
|
|
|
|
$html .= '<li><a href="#" class="change_status" data-status="'.$row->status.'" data-task_id="'.$row->id.'"><i class="fas fa-check-circle"></i> '.__('essentials::lang.change_status').'</a></li>';
|
|
|
|
$html .= '</ul></div>';
|
|
|
|
return $html;
|
|
}
|
|
)
|
|
->editColumn('task', function ($row) use ($priorities) {
|
|
$html = '<a href="'.action([\Modules\Essentials\Http\Controllers\ToDoController::class, 'show'], [$row->id]).'" >'.$row->task.'</a> <br>
|
|
<a data-href="'.action([\Modules\Essentials\Http\Controllers\ToDoController::class, 'viewSharedDocs'], [$row->id]).'" class="btn btn-primary btn-xs view-shared-docs">'.__('essentials::lang.docs').'</a>';
|
|
|
|
if (! empty($row->priority)) {
|
|
$bg_color = ! empty($this->priority_colors[$row->priority]) ? $this->priority_colors[$row->priority] : 'bg-gray';
|
|
|
|
$html .= ' <span class="label '.$bg_color.'"> '.$priorities[$row->priority].'</span>';
|
|
}
|
|
|
|
return $html;
|
|
})
|
|
->addColumn('assigned_by', function ($row) {
|
|
return $row->assigned_by?->user_full_name;
|
|
})
|
|
->editColumn('users', function ($row) {
|
|
$users = [];
|
|
foreach ($row->users as $user) {
|
|
$users[] = $user->user_full_name;
|
|
}
|
|
|
|
return implode(', ', $users);
|
|
})
|
|
->editColumn('created_at', '@format_datetime($created_at)')
|
|
->editColumn('date', '@format_datetime($date)')
|
|
->editColumn('end_date', '@if(!empty($end_date)) @format_datetime($end_date) @endif')
|
|
->editColumn('status', function ($row) use ($task_statuses) {
|
|
$html = '';
|
|
if (! empty($task_statuses[$row->status])) {
|
|
$bg_color = ! empty($this->status_colors[$row->status]) ? $this->status_colors[$row->status] : 'bg-gray';
|
|
|
|
$html = '<a href="#" class="change_status" data-status="'.$row->status.'" data-task_id="'.$row->id.'"><span class="label '.$bg_color.'"> '.$task_statuses[$row->status].'</span></a>';
|
|
}
|
|
|
|
return $html;
|
|
})
|
|
->removeColumn('id')
|
|
->rawColumns(['task', 'action', 'status'])
|
|
->make(true);
|
|
}
|
|
|
|
$users = [];
|
|
if (auth()->user()->can('essentials.assign_todos')) {
|
|
$users = User::forDropdown($business_id, false);
|
|
}
|
|
|
|
return view('essentials::todo.index')->with(compact('users', 'task_statuses', 'priorities'));
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function create()
|
|
{
|
|
$business_id = request()->session()->get('user.business_id');
|
|
|
|
if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module')) && ! auth()->user()->can('essentials.add_todos')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
$users = [];
|
|
if (auth()->user()->can('essentials.assign_todos')) {
|
|
$users = User::forDropdown($business_id, false);
|
|
}
|
|
if (! empty(request()->input('from_calendar'))) {
|
|
$users = [];
|
|
}
|
|
|
|
$task_statuses = ToDo::getTaskStatus();
|
|
$priorities = ToDo::getTaskPriorities();
|
|
|
|
return view('essentials::todo.create')->with(compact('users', 'task_statuses', 'priorities'));
|
|
}
|
|
|
|
/**
|
|
* Show the specified resource.
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function show($id)
|
|
{
|
|
$business_id = request()->session()->get('user.business_id');
|
|
if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module'))) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
$is_admin = $this->moduleUtil->is_admin(auth()->user(), $business_id);
|
|
|
|
$query = ToDo::where('business_id', $business_id)
|
|
->with([
|
|
'assigned_by',
|
|
'comments',
|
|
'comments.added_by',
|
|
'media',
|
|
'users',
|
|
'media.uploaded_by_user',
|
|
]);
|
|
|
|
//If not admin show only assigned task
|
|
if (! $is_admin) {
|
|
$query->where(function ($query) {
|
|
$query->where('created_by', auth()->user()->id)
|
|
->orWhereHas('users', function ($q) {
|
|
$q->where('user_id', auth()->user()->id);
|
|
});
|
|
});
|
|
}
|
|
|
|
$todo = $query->findOrFail($id);
|
|
|
|
$users = [];
|
|
foreach ($todo->users as $user) {
|
|
$users[] = $user->user_full_name;
|
|
}
|
|
$task_statuses = ToDo::getTaskStatus();
|
|
$priorities = ToDo::getTaskPriorities();
|
|
|
|
$activities = Activity::forSubject($todo)
|
|
->with(['causer', 'subject'])
|
|
->latest()
|
|
->get();
|
|
|
|
return view('essentials::todo.view')->with(compact(
|
|
'todo',
|
|
'users',
|
|
'task_statuses',
|
|
'priorities',
|
|
'activities'
|
|
));
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function edit($id)
|
|
{
|
|
$business_id = request()->session()->get('user.business_id');
|
|
if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module')) && ! auth()->user()->can('essentials.edit_todos')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
$user_id = auth()->user()->id;
|
|
$query = ToDo::where('business_id', $business_id);
|
|
|
|
//Non admin can update only assigned tasks
|
|
$is_admin = $this->moduleUtil->is_admin(auth()->user(), $business_id);
|
|
if (! $is_admin) {
|
|
$query->where(function ($query) {
|
|
$query->where('created_by', auth()->user()->id)
|
|
->orWhereHas('users', function ($q) {
|
|
$q->where('user_id', auth()->user()->id);
|
|
});
|
|
});
|
|
}
|
|
|
|
$todo = $query->with(['users'])->findOrFail($id);
|
|
|
|
$users = [];
|
|
if (auth()->user()->can('essentials.assign_todos')) {
|
|
$users = User::forDropdown($business_id, false);
|
|
}
|
|
$task_statuses = ToDo::getTaskStatus();
|
|
$priorities = ToDo::getTaskPriorities();
|
|
|
|
return view('essentials::todo.edit')->with(compact('users', 'todo', 'task_statuses', 'priorities'));
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
$business_id = $request->session()->get('user.business_id');
|
|
|
|
if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module')) && ! auth()->user()->can('essentials.add_todos')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
if (request()->ajax()) {
|
|
try {
|
|
$created_by = $request->session()->get('user.id');
|
|
$input = $request->only(
|
|
'task',
|
|
'date',
|
|
'description',
|
|
'estimated_hours',
|
|
'priority',
|
|
'status',
|
|
'end_date'
|
|
);
|
|
|
|
$input['date'] = $this->commonUtil->uf_date($input['date'], true);
|
|
$input['end_date'] = ! empty($input['end_date']) ? $this->commonUtil->uf_date($input['end_date'], true) : null;
|
|
$input['business_id'] = $business_id;
|
|
$input['created_by'] = $created_by;
|
|
$input['status'] = ! empty($input['status']) ? $input['status'] : 'new';
|
|
|
|
$users = $request->input('users');
|
|
//Can add only own tasks if permission not given
|
|
if (! auth()->user()->can('essentials.assign_todos') || empty($users)) {
|
|
$users = [$created_by];
|
|
}
|
|
|
|
$ref_count = $this->commonUtil->setAndGetReferenceCount('essentials_todos');
|
|
//Generate reference number
|
|
$settings = request()->session()->get('business.essentials_settings');
|
|
$settings = ! empty($settings) ? json_decode($settings, true) : [];
|
|
$prefix = ! empty($settings['essentials_todos_prefix']) ? $settings['essentials_todos_prefix'] : '';
|
|
$input['task_id'] = $this->commonUtil->generateReferenceNumber('essentials_todos', $ref_count, null, $prefix);
|
|
|
|
$to_dos = ToDo::create($input);
|
|
|
|
$to_dos->users()->sync($users);
|
|
|
|
//Exclude created user from notification
|
|
$users = $to_dos->users->filter(function ($item) use ($created_by) {
|
|
return $item->id != $created_by;
|
|
});
|
|
|
|
$this->commonUtil->activityLog($to_dos, 'added');
|
|
|
|
\Notification::send($users, new NewTaskNotification($to_dos));
|
|
|
|
$output = [
|
|
'success' => true,
|
|
'msg' => __('lang_v1.success'),
|
|
'todo_id' => $to_dos->id,
|
|
];
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = [
|
|
'success' => false,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return $output;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function update(Request $request, $id)
|
|
{
|
|
$business_id = $request->session()->get('user.business_id');
|
|
if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module')) && ! auth()->user()->can('essentials.edit_todos')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
if (request()->ajax()) {
|
|
try {
|
|
if (! $request->has('only_status')) {
|
|
$input = $request->only(
|
|
'task',
|
|
'date',
|
|
'description',
|
|
'estimated_hours',
|
|
'priority',
|
|
'status',
|
|
'end_date'
|
|
);
|
|
|
|
$input['date'] = $this->commonUtil->uf_date($input['date'], true);
|
|
$input['end_date'] = ! empty($input['end_date']) ? $this->commonUtil->uf_date($input['end_date'], true) : null;
|
|
|
|
$input['status'] = ! empty($input['status']) ? $input['status'] : 'new';
|
|
} else {
|
|
$input = ['status' => ! empty($request->input('status')) ? $request->input('status') : null];
|
|
}
|
|
|
|
$query = ToDo::where('business_id', $business_id);
|
|
|
|
//Non admin can update only assigned tasks
|
|
$is_admin = $this->moduleUtil->is_admin(auth()->user(), $business_id);
|
|
if (! $is_admin) {
|
|
$query->where(function ($query) {
|
|
$query->where('created_by', auth()->user()->id)
|
|
->orWhereHas('users', function ($q) {
|
|
$q->where('user_id', auth()->user()->id);
|
|
});
|
|
});
|
|
}
|
|
|
|
$todo = $query->findOrFail($id);
|
|
|
|
$todo_before = $todo->replicate();
|
|
|
|
$todo->update($input);
|
|
|
|
if (auth()->user()->can('essentials.assign_todos') && ! $request->has('only_status')) {
|
|
$users = $request->input('users');
|
|
$todo->users()->sync($users);
|
|
}
|
|
|
|
$this->commonUtil->activityLog($todo, 'edited', $todo_before);
|
|
|
|
$output = [
|
|
'success' => true,
|
|
'msg' => __('lang_v1.success'),
|
|
];
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = [
|
|
'success' => false,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return $output;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function destroy($id)
|
|
{
|
|
$business_id = request()->session()->get('user.business_id');
|
|
if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module')) && ! auth()->user()->can('essentials.delete_todos')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
if (request()->ajax()) {
|
|
try {
|
|
$is_admin = $this->moduleUtil->is_admin(auth()->user(), $business_id);
|
|
|
|
$todo = ToDo::where('business_id', $business_id);
|
|
//Can destroy only own created tasks if not admin
|
|
if (! $is_admin) {
|
|
$todo->where('created_by', auth()->user()->id);
|
|
}
|
|
$todo->where('id', $id)
|
|
->delete();
|
|
|
|
$output = [
|
|
'success' => true,
|
|
'msg' => __('lang_v1.success'),
|
|
];
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = [
|
|
'success' => false,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return $output;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add comment to the task
|
|
*
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function addComment(Request $request)
|
|
{
|
|
$business_id = request()->session()->get('user.business_id');
|
|
if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module'))) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
if (request()->ajax()) {
|
|
try {
|
|
$input = $request->only(['task_id', 'comment']);
|
|
$query = ToDo::where('business_id', $business_id)
|
|
->with('users');
|
|
$auth_id = auth()->user()->id;
|
|
|
|
//Non admin can add comment to only assigned tasks
|
|
$is_admin = $this->moduleUtil->is_admin(auth()->user(), $business_id);
|
|
if (! $is_admin) {
|
|
$query->where(function ($query) {
|
|
$query->where('created_by', auth()->user()->id)
|
|
->orWhereHas('users', function ($q) {
|
|
$q->where('user_id', auth()->user()->id);
|
|
});
|
|
});
|
|
}
|
|
|
|
$todo = $query->findOrFail($input['task_id']);
|
|
|
|
$input['comment_by'] = $auth_id;
|
|
|
|
$comment = EssentialsTodoComment::create($input);
|
|
|
|
$comment_html = view('essentials::todo.comment')
|
|
->with(compact('comment'))
|
|
->render();
|
|
$output = [
|
|
'success' => true,
|
|
'comment_html' => $comment_html,
|
|
'msg' => __('lang_v1.success'),
|
|
];
|
|
|
|
//Remove auth user from users collection
|
|
$users = $todo->users->filter(function ($user) use ($auth_id) {
|
|
return $user->id != $auth_id;
|
|
});
|
|
|
|
\Notification::send($users, new NewTaskCommentNotification($comment));
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = [
|
|
'success' => false,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return $output;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Upload documents for a task
|
|
*
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function uploadDocument(Request $request)
|
|
{
|
|
$business_id = request()->session()->get('user.business_id');
|
|
if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module'))) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
try {
|
|
$task_id = $request->input('task_id');
|
|
$query = ToDo::with('users')->where('business_id', $business_id);
|
|
$auth_id = auth()->user()->id;
|
|
|
|
//Non admin can add comment to only assigned tasks
|
|
$is_admin = $this->moduleUtil->is_admin(auth()->user(), $business_id);
|
|
if (! $is_admin) {
|
|
$query->where(function ($query) {
|
|
$query->where('created_by', auth()->user()->id)
|
|
->orWhereHas('users', function ($q) {
|
|
$q->where('user_id', auth()->user()->id);
|
|
});
|
|
});
|
|
}
|
|
|
|
$todo = $query->findOrFail($task_id);
|
|
|
|
Media::uploadMedia($todo->business_id, $todo, $request, 'documents');
|
|
|
|
//Remove auth user from users collection
|
|
$users = $todo->users->filter(function ($user) use ($auth_id) {
|
|
return $user->id != $auth_id;
|
|
});
|
|
|
|
$data = [
|
|
'task_id' => $todo->task_id,
|
|
'uploaded_by' => $auth_id,
|
|
'id' => $todo->id,
|
|
'uploaded_by_user_name' => auth()->user()->user_full_name,
|
|
];
|
|
|
|
\Notification::send($users, new NewTaskDocumentNotification($data));
|
|
|
|
$output = [
|
|
'success' => true,
|
|
'msg' => __('lang_v1.success'),
|
|
];
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = [
|
|
'success' => false,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return back()->with('status', $output);
|
|
}
|
|
|
|
/**
|
|
* Delete comment of a task
|
|
*
|
|
* @param int $id
|
|
* @return Response
|
|
*/
|
|
public function deleteComment($id)
|
|
{
|
|
$business_id = request()->session()->get('user.business_id');
|
|
if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module'))) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
try {
|
|
$comment = EssentialsTodoComment::where('comment_by', auth()->user()->id)
|
|
->where('id', $id)
|
|
->delete();
|
|
$output = [
|
|
'success' => true,
|
|
'msg' => __('lang_v1.success'),
|
|
];
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = [
|
|
'success' => false,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return $output;
|
|
}
|
|
|
|
/**
|
|
* Delete comment of a task
|
|
*
|
|
* @param int $id
|
|
* @return Response
|
|
*/
|
|
public function deleteDocument($id)
|
|
{
|
|
$business_id = request()->session()->get('user.business_id');
|
|
if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module'))) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
try {
|
|
$media = Media::findOrFail($id);
|
|
if ($media->model_type == 'Modules\Essentials\Entities\ToDo') {
|
|
$todo = ToDo::findOrFail($media->model_id);
|
|
|
|
//Can delete document only if task is assigned by or assigned to the user
|
|
if (in_array(auth()->user()->id, [$todo->user_id, $todo->created_by])) {
|
|
unlink($media->display_path);
|
|
$media->delete();
|
|
}
|
|
}
|
|
$output = [
|
|
'success' => true,
|
|
'msg' => __('lang_v1.success'),
|
|
];
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = [
|
|
'success' => false,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return $output;
|
|
}
|
|
|
|
public function viewSharedDocs($id)
|
|
{
|
|
if (request()->ajax()) {
|
|
$business_id = request()->session()->get('user.business_id');
|
|
|
|
$module_data = $this->moduleUtil->getModuleData('getSharedSpreadsheetForGivenData', ['business_id' => $business_id, 'shared_with' => 'todo', 'shared_id' => $id]);
|
|
|
|
$sheets = [];
|
|
if (! empty($module_data['Spreadsheet'])) {
|
|
$sheets = $module_data['Spreadsheet'];
|
|
}
|
|
|
|
$todo = ToDo::findOrFail($id);
|
|
|
|
return view('essentials::todo.view_shared_docs')
|
|
->with(compact('sheets', 'todo'));
|
|
}
|
|
}
|
|
}
|