Browse Source

listing message

feature/tickets
charly 3 years ago
parent
commit
e07102c1cd
9 changed files with 100 additions and 8 deletions
  1. +45
    -7
      Controller/Ticket/TicketAdminController.php
  2. +19
    -0
      Factory/Ticket/TicketFactory.php
  3. +14
    -0
      Model/Ticket/TicketModel.php
  4. +4
    -0
      Resources/config/routes.yaml
  5. +1
    -1
      Resources/translations/admin.fr.yaml
  6. +1
    -0
      Resources/views/admin/ticket/index-email.html.twig
  7. +7
    -0
      Resources/views/admin/ticket/index-lastmessage.html.twig
  8. +8
    -0
      Resources/views/admin/ticket/index-status.html.twig
  9. +1
    -0
      Resources/views/admin/ticket/index-username.html.twig

+ 45
- 7
Controller/Ticket/TicketAdminController.php View File

@@ -3,10 +3,14 @@
namespace Lc\SovBundle\Controller\Ticket;

use App\Entity\Ticket\Ticket;
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Config\Filters;
use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\DateField;
use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use Lc\SovBundle\Field\StatusField;
use Lc\SovBundle\Model\Ticket\TicketInterface;
@@ -22,16 +26,23 @@ abstract class TicketAdminController extends AbstractAdminController

public function configureFields(string $pageName): iterable
{

return [
TextField::new('id')->hideOnForm(),
DateField::new('createdAt')->setFormat('short')->hideOnForm(),
TextField::new('visitorFirstName')->hideOnForm(),
TextField::new('visitorLastName')->hideOnForm(),
TextField::new('visitorEmail')->hideOnForm(),
IntegerField::new('id')
->hideOnForm(),
DateField::new('createdAt')->setFormat('short')
->hideOnForm(),
TextField::new('visitorFirstName')
->setTemplatePath('@LcSov/admin/ticket/index-username.html.twig')
->hideOnForm(),
TextField::new('visitorEmail')
->setTemplatePath('@LcSov/admin/ticket/index-email.html.twig')
->hideOnForm(),
AssociationField::new('user')
->hideOnIndex(),
TextField::new('subject'),
TextField::new('lastMessage')
->setTemplatePath('@LcSov/admin/ticket/index-lastmessage.html.twig')
->hideOnForm(),
ChoiceField::new('type')
->autocomplete()
->setChoices(
@@ -40,7 +51,34 @@ abstract class TicketAdminController extends AbstractAdminController
'entity.Ticket.fields.typeOptions.' . Ticket::TYPE_TECHNICAL_PROBLEM => Ticket::TYPE_TECHNICAL_PROBLEM,
]
),
StatusField::new('status')->setRequired(false)->hideOnForm(),
ChoiceField::new('status')
->autocomplete()
->setChoices(
[
'entity.Ticket.fields.statusOptions.' . Ticket::TICKET_STATUS_OPEN => Ticket::TICKET_STATUS_OPEN,
'entity.Ticket.fields.statusOptions.' . Ticket::TICKET_STATUS_BEING_PROCESSED => Ticket::TICKET_STATUS_BEING_PROCESSED,
'entity.Ticket.fields.statusOptions.' . Ticket::TICKET_STATUS_CLOSED => Ticket::TICKET_STATUS_CLOSED,
]
)
->setTemplatePath('@LcSov/admin/ticket/index-status.html.twig')
->hideOnForm(),
];
}

// public function configureCrud(Crud $crud): Crud
// {
// $crud
// ->overrideTemplate('layout', '@LcSov/admin/layout.html.twig');
//// ->overrideTemplate('layout', '@LcCaracole/adminlte/layout.html.twig');
//
// return parent::configureCrud($crud);
// }

public function configureActions(Actions $actions): Actions
{
$actions
->add(Crud::PAGE_INDEX, Action::DETAIL);
// ->remove(Crud::PAGE_EDIT, Action::EDIT);
return parent::configureActions($actions);
}
}

+ 19
- 0
Factory/Ticket/TicketFactory.php View File

@@ -0,0 +1,19 @@
<?php

namespace Lc\SovBundle\Factory\Ticket;

use Lc\SovBundle\Factory\AbstractFactory;
use Lc\SovBundle\Model\Ticket\TicketInterface;

class TicketFactory extends AbstractFactory
{
public function getEntityClass()
{
return TicketInterface::class;
}

public function create($params = array())
{
return parent::create($params);
}
}

+ 14
- 0
Model/Ticket/TicketModel.php View File

@@ -101,12 +101,26 @@ abstract class TicketModel extends AbstractLightEntity implements TicketInterfac
}
}

public function getEmail()
{
if ($this->getUser()) {
return $this->getUser()->getEmail();
} else {
return $this->getVisitorEmail();
}
}

public function getVisitorInfos()
{
return strtoupper($this->getVisitorLastname()) . ' ' . $this->getVisitorFirstname(
) . ' (' . $this->getVisitorEmail() . ')';
}

public function getLastMessage()
{
return $this->getTicketMessages()->last();
}

public function getType(): ?string
{
return $this->type;

+ 4
- 0
Resources/config/routes.yaml View File

@@ -26,3 +26,7 @@ sov_admin_setting_global:
path: /admin/setting/global
controller: Lc\SovBundle\Controller\Setting\SettingAdminController::manageGlobal

sov_admin_create_ticket:
path: /admin/ticket/create
controller: Lc\SovBundle\Controller\Ticket\TicketAdminController::createTicket


+ 1
- 1
Resources/translations/admin.fr.yaml View File

@@ -73,7 +73,7 @@ entity:
position: Position
description: Description
file: Fichier
status: Statut
status: Status
email: Email
value: Valeur
metaTitle: Meta title

+ 1
- 0
Resources/views/admin/ticket/index-email.html.twig View File

@@ -0,0 +1 @@
{{ entity.instance.getEmail() }}

+ 7
- 0
Resources/views/admin/ticket/index-lastmessage.html.twig View File

@@ -0,0 +1,7 @@
{% set ticketMessage = entity.instance.getLastMessage() %}
{% if ticketMessage.answerByAdmin != true %}
<span class="badge badge-danger">
New
</span>
{% endif %}
{{ ticketMessage.createdAt|date('d/m/Y H:i') }} par {{ ticketMessage.createdBy }} {{ ticketMessage.message }}

+ 8
- 0
Resources/views/admin/ticket/index-status.html.twig View File

@@ -0,0 +1,8 @@
{% set status = entity.instance.status %}
{% if status == 'open' %}
<span class="badge badge-success">{{ entity.instance.status|trans }}</span>
{% elseif status == 'being-processed' %}
<span class="badge badge-warning">{{ entity.instance.status|trans }}</span>
{% elseif status == 'closed' %}
<span class="badge badge-danger">{{ entity.instance.status|trans }}</span>
{% endif %}

+ 1
- 0
Resources/views/admin/ticket/index-username.html.twig View File

@@ -0,0 +1 @@
{{ entity.instance.getUsername() }}

Loading…
Cancel
Save