Skip to content

Commit

Permalink
added close ticket feature,
Browse files Browse the repository at this point in the history
code style
added new widget for ticketStatus
  • Loading branch information
kokspflanze committed Aug 30, 2015
1 parent 60f2b63 commit 0d6f377
Show file tree
Hide file tree
Showing 14 changed files with 231 additions and 78 deletions.
1 change: 0 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
language: php

php:
- 5.4
- 5.5
- 5.6
- 7
Expand Down
5 changes: 2 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,13 @@
}
],
"require": {
"php": ">=5.4",
"php": ">=5.5",
"doctrine/doctrine-orm-module": "0.*",
"zf-commons/zfc-user-doctrine-orm": "0.*",
"kokspflanze/small-user": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "~4.0",
"zendframework/zendframework": "~2.4",
"zendframework/zendframework": "~2.0",
"fabpot/php-cs-fixer": "~1.0",
"satooshi/php-coveralls": "dev-master",
"phpunit/phpcov": "~2.0"
Expand Down
50 changes: 38 additions & 12 deletions src/ZfcTicketSystem/Controller/AdminController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,44 +6,70 @@

class AdminController extends BaseController
{

/**
* @return array
*/
public function indexAction()
{
$type = $this->params()->fromRoute( 'type' );

return array(
'ticketList' => $this->getTicketService()->getTickets4Type( $type )
);
return [
'ticketList' => $this->getTicketService()->getTickets4Type($type)
];
}

/**
* @return array|\Zend\Http\Response
*/
public function viewAction()
{
$ticketId = $this->params()->fromRoute( 'id' );
$ticketSubject = $this->getTicketService()->getTicketSubject4Admin( $ticketId );
$ticketSubject = $this->getTicketService()->getTicketSubject4Admin($ticketId);
// Fallback if not task
if (!$ticketSubject) {
return $this->redirect()->toRoute( 'zfc-ticketsystem-admin', array( 'type' => 0 ) );
return $this->redirect()->toRoute( 'zfc-ticketsystem-admin', ['type' => TicketSubject::TYPE_NEW] );
}

$form = $this->getTicketService()->getTicketSystemEntryForm();

/** @var \Zend\Http\Request $request */
$request = $this->getRequest();

if ($request->isPost()) {
$ticketSubject->setType( TicketSubject::TYPE_OPEN );
$oTicketSystem = $this->getTicketService()->newEntry( $this->params()->fromPost(), $this->getAuthService()->getIdentity(),
$ticketSubject );
if ($oTicketSystem) {
return $this->redirect()->toRoute( 'zfc-ticketsystem-admin', array( 'id' => $ticketId, 'action' => 'view' ) );
$ticketSystem = $this->getTicketService()->newEntry(
$this->params()->fromPost(),
$this->getAuthService()->getIdentity(),
$ticketSubject
);

if ($ticketSystem) {
return $this->redirect()->toRoute( 'zfc-ticketsystem-admin', ['id' => $ticketId, 'action' => 'view'] );
}
}

$entry = $ticketSubject->getTicketEntry();

return array(
return [
'form' => $form,
'ticket' => $ticketSubject,
'entry' => $entry
);
];
}

/**
* @return \Zend\Http\Response
*/
public function closeTicketAction()
{
$ticketId = $this->params()->fromRoute( 'id' );
$ticketSubject = $this->getTicketService()->getTicketSubject4Admin($ticketId);

if ($ticketSubject) {
$this->getTicketService()->closeTicket($ticketSubject);
}

return $this->redirect()->toRoute( 'zfc-ticketsystem-admin', ['type' => TicketSubject::TYPE_NEW] );
}

}
50 changes: 40 additions & 10 deletions src/ZfcTicketSystem/Controller/TicketSystemController.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,67 +8,97 @@
class TicketSystemController extends BaseController
{

/**
* @return ViewModel
*/
public function indexAction()
{
$view = new ViewModel( array(
$view = new ViewModel( [
'ticketList' => $this->getTicketService()->getTickets4User( $this->getLoggedInUserId() )
) );
]);
$view->setTemplate( 'zfc-ticket-system/index' );

return $view;
}

/**
* @return \Zend\Http\Response|ViewModel
*/
public function newAction()
{

$form = $this->getTicketService()->getTicketSystemNewForm();

/** @var \Zend\Http\Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$ticketSystem = $this->getTicketService()->newTicket( $this->params()->fromPost(), $this->getAuthService()->getIdentity() );
if ($ticketSystem) {
return $this->redirect()->toRoute( 'zfc-ticketsystem' );
}
}
$view = new ViewModel( array( 'form' => $form ) );
$view = new ViewModel( ['form' => $form] );
$view->setTemplate( 'zfc-ticket-system/new' );

return $view;
}

/**
* @return \Zend\Http\Response|ViewModel
*/
public function viewAction()
{
$ticketId = $this->params()->fromRoute( 'id' );
$ticketSubject = $this->getTicketService()->getTicketSubject( $this->getLoggedInUserId(), $ticketId );
// Fallback if not task
// Fallback if no task
if (!$ticketSubject) {
return $this->redirect()->toRoute( 'zfc-ticketsystem' );
}

$form = $this->getTicketService()->getTicketSystemEntryForm();

/** @var \Zend\Http\Request $request */
$request = $this->getRequest();

if ($request->isPost()) {
$ticketSubject->setType( TicketSubject::TYPE_NEW );
$ticketSystem = $this->getTicketService()->newEntry( $this->params()->fromPost(), $this->getAuthService()->getIdentity(),
$ticketSubject );
$ticketSystem = $this->getTicketService()->newEntry(
$this->params()->fromPost(),
$this->getAuthService()->getIdentity(),
$ticketSubject
);

if ($ticketSystem) {
return $this->redirect()->toRoute( 'zfc-ticketsystem', array( 'id' => $ticketId, 'action' => 'view' ) );
return $this->redirect()->toRoute( 'zfc-ticketsystem', ['id' => $ticketId, 'action' => 'view'] );
}
}

$entry = $ticketSubject->getTicketEntry();

$view = new ViewModel( array(
$view = new ViewModel( [
'form' => $form,
'ticket' => $ticketSubject,
'entry' => $entry
) );
]);
$view->setTemplate( 'zfc-ticket-system/view' );

return $view;
}

/**
* @return \Zend\Http\Response
*/
public function closeTicketAction()
{
$ticketId = $this->params()->fromRoute( 'id' );
$ticketSubject = $this->getTicketService()->getTicketSubject( $this->getLoggedInUserId(), $ticketId );

if ($ticketSubject) {
$this->getTicketService()->closeTicket($ticketSubject);
}

return $this->redirect()->toRoute( 'zfc-ticketsystem' );
}

/**
* @return int
*/
Expand Down
3 changes: 3 additions & 0 deletions src/ZfcTicketSystem/Module.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ public function getViewHelperConfig()
'numberOfNewTickets' => function ( AbstractPluginManager $pluginManager ) {
return new View\Helper\NewTicketWidget( $pluginManager->getServiceLocator() );
},
'ticketStatus' => function ( AbstractPluginManager $pluginManager ) {
return new View\Helper\TicketStatus( $pluginManager->getServiceLocator() );
},
]
];
}
Expand Down
37 changes: 26 additions & 11 deletions src/ZfcTicketSystem/Service/TicketSystem.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Zend\ServiceManager\ServiceManagerAwareInterface;
use ZfcTicketSystem\Mapper\HydratorTicketEntry;
use ZfcTicketSystem\Mapper\HydratorTicketSubject;
use ZfcTicketSystem\Entity\TicketSubject;

class TicketSystem implements ServiceManagerAwareInterface
{
Expand All @@ -24,7 +25,7 @@ class TicketSystem implements ServiceManagerAwareInterface
/**
* @param array $data
* @param UserInterface $user
* @return bool|\ZfcTicketSystem\Entity\TicketSubject
* @return bool|TicketSubject
*/
public function newTicket( array $data, UserInterface $user )
{
Expand All @@ -38,7 +39,7 @@ public function newTicket( array $data, UserInterface $user )
return false;
}

/** @var \ZfcTicketSystem\Entity\TicketSubject $ticketSubject */
/** @var TicketSubject $ticketSubject */
$ticketSubject = $form->getData();
$ticketCategory = $this->getTicketCategory4Id( $data['categoryId'] );

Expand All @@ -57,12 +58,12 @@ public function newTicket( array $data, UserInterface $user )
}

/**
* @param array $data
* @param UserInterface $user
* @param \ZfcTicketSystem\Entity\TicketSubject $subject
* @param array $data
* @param UserInterface $user
* @param TicketSubject $subject
* @return bool|\ZfcTicketSystem\Entity\TicketEntry
*/
public function newEntry( array $data, UserInterface $user, \ZfcTicketSystem\Entity\TicketSubject $subject )
public function newEntry( array $data, UserInterface $user, TicketSubject $subject )
{
$form = $this->getTicketSystemEntryForm();
$form->setHydrator( new HydratorTicketEntry() );
Expand All @@ -88,9 +89,24 @@ public function newEntry( array $data, UserInterface $user, \ZfcTicketSystem\Ent
return $ticketEntry;
}

/**
* @param TicketSubject $ticketSubject
* @return TicketSubject
*/
public function closeTicket($ticketSubject)
{
$ticketSubject->setType(TicketSubject::TYPE_CLOSED);

$entityManager = $this->getEntityManager();
$entityManager->persist( $ticketSubject );
$entityManager->flush();

return $ticketSubject;
}

/**
* @param $userId
* @return \ZfcTicketSystem\Entity\TicketSubject[]|null
* @return TicketSubject[]|null
*/
public function getTickets4User( $userId )
{
Expand All @@ -104,7 +120,7 @@ public function getTickets4User( $userId )
/**
* @param $userId
* @param $ticketId
* @return \ZfcTicketSystem\Entity\TicketSubject
* @return TicketSubject
*/
public function getTicketSubject( $userId, $ticketId )
{
Expand All @@ -116,9 +132,8 @@ public function getTicketSubject( $userId, $ticketId )
}

/**
* @param $userId
* @param $ticketId
* @return \ZfcTicketSystem\Entity\TicketSubject
* @return TicketSubject
*/
public function getTicketSubject4Admin( $ticketId )
{
Expand All @@ -131,7 +146,7 @@ public function getTicketSubject4Admin( $ticketId )

/**
* @param $type
* @return \ZfcTicketSystem\Entity\TicketSubject[]
* @return TicketSubject[]
*/
public function getTickets4Type( $type )
{
Expand Down
41 changes: 41 additions & 0 deletions src/ZfcTicketSystem/View/Helper/InvokerBase.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

namespace ZfcTicketSystem\View\Helper;

use Zend\View\Helper\AbstractHelper;
use Zend\ServiceManager\ServiceLocatorInterface;

class InvokerBase extends AbstractHelper
{
/** @var ServiceLocatorInterface */
protected $serviceLocator;

/**
* @param ServiceLocatorInterface $serviceLocatorInterface
*/
public function __construct( ServiceLocatorInterface $serviceLocatorInterface )
{
$this->setServiceLocator( $serviceLocatorInterface );
}

/**
* @return ServiceLocatorInterface
*/
protected function getServiceLocator()
{
return $this->serviceLocator;
}

/**
* @param ServiceLocatorInterface $serviceLocator
*
* @return $this
*/
protected function setServiceLocator( ServiceLocatorInterface $serviceLocator )
{
$this->serviceLocator = $serviceLocator;

return $this;
}

}
Loading

0 comments on commit 0d6f377

Please sign in to comment.