92 lines
3.2 KiB
PHP
92 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace Modules\ProfessionalProject\Http\Controllers;
|
|
|
|
use App\Utils\ModuleUtil;
|
|
use App\Utils\Util;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Modules\ProfessionalProject\Entities\PpTask;
|
|
use Modules\ProfessionalProject\Entities\PpTaskStatus;
|
|
use Modules\ProfessionalProject\Utils\ProfessionalProjectUtil;
|
|
|
|
class TaskStatusController extends Controller
|
|
{
|
|
protected $commonUtil;
|
|
protected $ppUtil;
|
|
protected $moduleUtil;
|
|
|
|
public function __construct(Util $commonUtil, ProfessionalProjectUtil $ppUtil, ModuleUtil $moduleUtil)
|
|
{
|
|
$this->commonUtil = $commonUtil;
|
|
$this->ppUtil = $ppUtil;
|
|
$this->moduleUtil = $moduleUtil;
|
|
}
|
|
|
|
protected function authorizeModule()
|
|
{
|
|
$business_id = request()->session()->get('user.business_id');
|
|
if (! auth()->user()->can('professionalproject.manage_task_statuses')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
$this->ppUtil->ensureTaskStatuses($business_id, auth()->user()->id);
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
$this->authorizeModule();
|
|
$business_id = request()->session()->get('user.business_id');
|
|
$statuses = PpTaskStatus::where('business_id', $business_id)->orderBy('position')->get();
|
|
|
|
return view('professionalproject::task_status.index')->with(compact('statuses'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$this->authorizeModule();
|
|
$business_id = $request->session()->get('user.business_id');
|
|
|
|
PpTaskStatus::create([
|
|
'business_id' => $business_id,
|
|
'title' => $request->input('title'),
|
|
'color' => $request->input('color', '#3498db'),
|
|
'position' => (PpTaskStatus::where('business_id', $business_id)->max('position') ?? 0) + 1,
|
|
'is_completed' => ! empty($request->input('is_completed')),
|
|
'created_by' => auth()->user()->id,
|
|
]);
|
|
|
|
return ['success' => true, 'msg' => __('lang_v1.success')];
|
|
}
|
|
|
|
public function update(Request $request, $id)
|
|
{
|
|
$this->authorizeModule();
|
|
$business_id = $request->session()->get('user.business_id');
|
|
$status = PpTaskStatus::where('business_id', $business_id)->findOrFail($id);
|
|
|
|
$status->update([
|
|
'title' => $request->input('title', $status->title),
|
|
'color' => $request->input('color', $status->color),
|
|
'position' => $request->input('position', $status->position),
|
|
'is_completed' => $request->has('is_completed') ? ! empty($request->input('is_completed')) : $status->is_completed,
|
|
]);
|
|
|
|
return ['success' => true, 'msg' => __('lang_v1.success')];
|
|
}
|
|
|
|
public function destroy($id)
|
|
{
|
|
$this->authorizeModule();
|
|
$business_id = request()->session()->get('user.business_id');
|
|
$status = PpTaskStatus::where('business_id', $business_id)->findOrFail($id);
|
|
|
|
if (PpTask::where('status_id', $status->id)->exists()) {
|
|
return ['success' => false, 'msg' => __('professionalproject::lang.status_has_tasks')];
|
|
}
|
|
|
|
$status->delete();
|
|
|
|
return ['success' => true, 'msg' => __('lang_v1.success')];
|
|
}
|
|
}
|