Browse Source

listing user

packProduct
Charly 3 years ago
parent
commit
d350c8f664
4 changed files with 90 additions and 36 deletions
  1. +66
    -36
      Definition/Field/User/UserFieldDefinition.php
  2. +4
    -0
      Resources/translations/admin.fr.yaml
  3. +12
    -0
      Resources/views/admin/user/field/count_order.html.twig
  4. +8
    -0
      Resources/views/admin/user/field/total_spent.html.twig

+ 66
- 36
Definition/Field/User/UserFieldDefinition.php View File

namespace Lc\CaracoleBundle\Definition\Field\User; namespace Lc\CaracoleBundle\Definition\Field\User;


use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField; use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
use Lc\CaracoleBundle\Context\MerchantContextTrait; use Lc\CaracoleBundle\Context\MerchantContextTrait;
use Lc\CaracoleBundle\Field\AssociationField; use Lc\CaracoleBundle\Field\AssociationField;
use Lc\CaracoleBundle\Repository\Newsletter\NewsletterStore; use Lc\CaracoleBundle\Repository\Newsletter\NewsletterStore;
protected GroupUserStore $groupUserStore; protected GroupUserStore $groupUserStore;
protected NewsletterStore $newsletterStore; protected NewsletterStore $newsletterStore;


public function __construct(TranslatorAdmin $translatorAdmin, RolesDefinition $rolesDefinition, GroupUserStore $groupUserStore, NewsletterStore $newsletterStore)
{
public function __construct(
TranslatorAdmin $translatorAdmin,
RolesDefinition $rolesDefinition,
GroupUserStore $groupUserStore,
NewsletterStore $newsletterStore
) {
parent::__construct($translatorAdmin, $rolesDefinition); parent::__construct($translatorAdmin, $rolesDefinition);


$this->groupUserStore = $groupUserStore; $this->groupUserStore = $groupUserStore;
$this->newsletterStore = $newsletterStore; $this->newsletterStore = $newsletterStore;
} }


public function configureIndex(): array
{
return [
'id',
'gender',
'lastname',
'firstname',
'email',
'groupUsers',
'birthdate',
'countOrder',
'totalSpent',
];
}

public function configureForm(): array public function configureForm(): array
{ {
return [ return [
'gender',
'lastname',
'firstname',
'email',
'phone',
'birthdate',
'groupUsers',
'isSaleAlwaysOpen',
'newsletters',
'ticketTypesNotification'
'gender',
'lastname',
'firstname',
'email',
'phone',
'birthdate',
'groupUsers',
'isSaleAlwaysOpen',
'newsletters',
'ticketTypesNotification',
]; ];
} }


$groupUsers = $this->groupUserStore->setMerchant($this->merchant)->getAll(); $groupUsers = $this->groupUserStore->setMerchant($this->merchant)->getAll();
$newsletters = $this->newsletterStore->getAll(); $newsletters = $this->newsletterStore->getAll();


return array_merge(parent::configureFields(),[
'isSaleAlwaysOpen' => BooleanField::new('isSaleAlwaysOpen'),
'newsletters' => AssociationField::new('newsletters')
->setFormTypeOption('choices', $newsletters)
->setFormTypeOption('choice_label', function ($choice) {
return $choice->getTitle(). '['.$choice->getSection()->getMerchant().']';
})
->setSortable(true),
'groupUsers' => AssociationField::new('groupUsers')
->setFormTypeOption('choices', $groupUsers)
->setFormTypeOption('choice_label', function ($choice) {
return $choice->getTitle(). '['.$choice->getMerchant().']';
})
->setSortable(true),
'ticketTypesNotification' => ChoiceField::new('ticketTypesNotification')
->setSortable(true)
->setFormTypeOption('expanded', false)
->setFormTypeOption('multiple', true)
->setChoices($this->translatorAdmin->transChoices(
TicketSolver::getTypeChoices(),
'Ticket',
'type'
)),

return array_merge(parent::configureFields(), [
'isSaleAlwaysOpen' => BooleanField::new('isSaleAlwaysOpen'),
'newsletters' => AssociationField::new('newsletters')
->setFormTypeOption('choices', $newsletters)
->setFormTypeOption('choice_label', function ($choice) {
return $choice->getTitle() . '[' . $choice->getSection()->getMerchant() . ']';
})
->setSortable(true),
'groupUsers' => AssociationField::new('groupUsers')
->setFormTypeOption('choices', $groupUsers)
->setTemplatePath('@LcSov/adminlte/crud/field/association_many.html.twig')
->setFormTypeOption('choice_label', function ($choice) {
return $choice->getTitle() . '[' . $choice->getMerchant() . ']';
})
->setSortable(true),
'ticketTypesNotification' => ChoiceField::new('ticketTypesNotification')
->setSortable(true)
->setFormTypeOption('expanded', false)
->setFormTypeOption('multiple', true)
->setChoices(
$this->translatorAdmin->transChoices(
TicketSolver::getTypeChoices(),
'Ticket',
'type'
)
),
'countOrder' => NumberField::new('countOrder')
->setFormTypeOption('mapped', false)
->setCustomOption('filter', false)
->setTemplatePath('@LcCaracole/admin/user/field/count_order.html.twig'),
'totalSpent' => NumberField::new('totalSpent')
->setFormTypeOption('mapped', false)
->setCustomOption('filter', false)
->setTemplatePath('@LcCaracole/admin/user/field/total_spent.html.twig'),
]); ]);
} }



+ 4
- 0
Resources/translations/admin.fr.yaml View File

editProductFamily: Éditer le produit editProductFamily: Éditer le produit
history: Historique history: Historique
credit: Voir l'historique de crédit credit: Voir l'historique de crédit
switchUser: Prendre la main


setting_definition: setting_definition:
merchant: merchant:
fields: fields:
isSaleAlwaysOpen: Vente toujours ouverte isSaleAlwaysOpen: Vente toujours ouverte
newsletters: Newsletter newsletters: Newsletter
countOrder: Commandes
totalSpent: Ventes
lastLogin: Dernière connexion
CreditHistory: CreditHistory:
label: Historique de compte prépayé label: Historique de compte prépayé
label_plurial: Historiques de compte prépayé label_plurial: Historiques de compte prépayé

+ 12
- 0
Resources/views/admin/user/field/count_order.html.twig View File

{% set order_store = order_shop_container.store.setSection(section_current()).setMerchant(merchant_current()) %}
{% set totalOrder = order_store.countValidByUserAllMerchant(entity.instance) %}
{% if totalOrder > 0 %}
<span class="badge badge-success">
{{ totalOrder }} commandes
</span>
{% else %}
<span class="badge badge-secondary">
0 commandes
</span>
{% endif %}


+ 8
- 0
Resources/views/admin/user/field/total_spent.html.twig View File

{% set order_store = order_shop_container.store.setSection(section_current()).setMerchant(merchant_current()) %}
{% set totalSpent = order_store.getTotalSpentByUser(entity.instance) %}
{# {% set totalSpent = orderUtils.getTotalSpentByUser(entity.instance) %} #}
{% if totalSpent > 0 %}
<span class="badge badge-primary"> {{ totalSpent|format_price(false) }}</span>
{% else %}
<span class="badge badge-secondary"> {{ totalSpent|format_price(false) }}</span>
{% endif %}

Loading…
Cancel
Save