67 lines
2.2 KiB
PHP
67 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace Leantime\Domain\Tickets\Controllers;
|
|
|
|
use Illuminate\Contracts\Container\BindingResolutionException;
|
|
use Leantime\Core\Auth\Permissions\RequiresPermission;
|
|
use Leantime\Core\Controller\Controller;
|
|
use Leantime\Core\Controller\Frontcontroller as FrontcontrollerCore;
|
|
use Leantime\Domain\Projects\Services\Projects as ProjectService;
|
|
use Leantime\Domain\Tickets\Permissions\TicketsPermissions;
|
|
use Leantime\Domain\Tickets\Services\Tickets as TicketService;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
class MoveTicket extends Controller
|
|
{
|
|
private TicketService $ticketService;
|
|
|
|
private ProjectService $projectService;
|
|
|
|
public function init(
|
|
TicketService $ticketService,
|
|
ProjectService $projectService
|
|
): void {
|
|
$this->ticketService = $ticketService;
|
|
$this->projectService = $projectService;
|
|
}
|
|
|
|
/**
|
|
* @throws BindingResolutionException
|
|
*/
|
|
#[RequiresPermission(TicketsPermissions::EDIT)]
|
|
public function get($params): Response
|
|
{
|
|
$ticketId = $params['id'] ?? '';
|
|
|
|
$ticket = $this->ticketService->getTicket($ticketId);
|
|
|
|
if (! $ticket) {
|
|
return $this->tpl->displayPartial('errors.error404', responseCode: 404);
|
|
}
|
|
|
|
$projects = $this->projectService->getProjectsAssignedToUser(session('userdata.id'));
|
|
|
|
$this->tpl->assign('ticket', $ticket);
|
|
$this->tpl->assign('projects', $projects);
|
|
|
|
return $this->tpl->displayPartial('tickets.moveTicket');
|
|
}
|
|
|
|
/**
|
|
* @throws BindingResolutionException
|
|
*/
|
|
#[RequiresPermission(TicketsPermissions::EDIT)]
|
|
public function post($params): Response
|
|
{
|
|
if (! empty($ticketId = (int) $_GET['id']) && ! empty($projectId = (int) $params['projectId'])) {
|
|
if ($this->ticketService->moveTicket($ticketId, $projectId)) {
|
|
$this->tpl->setNotification($this->language->__('text.ticket_moved'), 'success');
|
|
} else {
|
|
$this->tpl->setNotification($this->language->__('text.move_problem'), 'error');
|
|
}
|
|
}
|
|
|
|
return FrontcontrollerCore::redirect(BASE_URL.'/tickets/moveTicket/'.$ticketId.'?closeModal=true');
|
|
}
|
|
}
|