Parcourir la source

reminder + setting

feature/ticket
Charly il y a 3 ans
Parent
révision
a32d682de4
10 fichiers modifiés avec 440 ajouts et 5 suppressions
  1. +56
    -0
      Controller/Reminder/ReminderController.php
  2. +23
    -0
      Controller/Setting/SettingAdminController.php
  3. +7
    -0
      Model/Reminder/ReminderInterface.php
  4. +177
    -0
      Model/Reminder/ReminderModel.php
  5. +8
    -0
      Model/Setting/SettingInterface.php
  6. +91
    -0
      Model/Setting/SettingModel.php
  7. +1
    -4
      Model/User/GroupUserModel.php
  8. +56
    -0
      Repository/Reminder/ReminderRepository.php
  9. +20
    -0
      Repository/Setting/SettingRepository.php
  10. +1
    -1
      Repository/User/GroupUserRepository.php

+ 56
- 0
Controller/Reminder/ReminderController.php Voir le fichier

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

namespace Lc\SovBundle\Controller\Reminder;

use Lc\SovBundle\Controller\AbstractAdminController;
use Symfony\Component\HttpFoundation\Response;

abstract class ReminderController extends AbstractAdminController
{

public function renderTemplate($actionName, $templatePath, array $parameters = [])
{
if ($this->request->isXmlHttpRequest() && ($actionName == 'new' || $actionName == 'edit')) {
$response['flashMessages'] = $this->utils->getFlashMessages();

$response['data'] = $this->render('@LcShop/backend/default/modal/edit_reminder.twig', $parameters)->getContent();
return new Response(json_encode($response));
} else {
return parent::renderTemplate($actionName, $templatePath, $parameters);
}
}

protected function redirectToReferrer()
{
$action = $this->request->query->get('action');

if ($action == 'new') {
$this->utils->addFlash('success', 'success.reminder.add');
} elseif ($action == 'edit') {
$this->utils->addFlash('success', 'success.reminder.edit');
} elseif ($action == ' setReminderDone') {
$this->utils->addFlash('success', 'success.reminder.done');
}

if ($this->request->isXmlHttpRequest()) {
$response['flashMessages'] = $this->utils->getFlashMessages();
return new Response(json_encode($response));
} else {
return parent::redirectToReferrer();
}
}

public function setReminderDoneAction()
{
$id = $this->request->query->get('id');
$done = $this->request->query->get('done');

$easyadmin = $this->request->attributes->get('easyadmin');
$reminder = $easyadmin['item'];

$reminder->setDone($done);
$this->em->persist($reminder);
$this->em->flush();
return $this->redirectToReferrer();
}
}

+ 23
- 0
Controller/Setting/SettingAdminController.php Voir le fichier

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

namespace Lc\SovBundle\Controller\Setting;

use Doctrine\ORM\EntityManagerInterface;
use Lc\SovBundle\Translation\TranslatorAdmin;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class SettingAdminController extends AbstractController
{
protected $em;
protected $translatorAdmin;

public function __construct(
EntityManagerInterface $em,
TranslatorAdmin $translatorAdmin
)
{
$this->em = $em;
$this->translatorAdmin = $translatorAdmin;
}

}

+ 7
- 0
Model/Reminder/ReminderInterface.php Voir le fichier

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

namespace Lc\SovBundle\Model\Reminder;

interface ReminderInterface
{
}

+ 177
- 0
Model/Reminder/ReminderModel.php Voir le fichier

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

namespace Lc\SovBundle\Model\Reminder;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Lc\SovBundle\Doctrine\Pattern\AbstractLightEntity;
use Lc\SovBundle\Model\User\UserInterface;

/**
* @ORM\MappedSuperclass()
*/
abstract class ReminderModel extends AbstractLightEntity
{
/**
* temporary fields (do not delete)
*/
public $relatedPage;

/**
* @ORM\Column(type="string", length=255)
*/
protected $title;

/**
* @ORM\Column(type="text", nullable=true)
*/
protected $description;

/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected $entityName;

/**
* @ORM\Column(type="integer", nullable=true)
*/
protected $entityId;

/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected $entityAction;

/**
* @ORM\ManyToMany(targetEntity="Lc\SovBundle\Model\User\UserInterface")
*/
protected $users;

/**
* @ORM\Column(type="date", nullable=true)
*/
protected $dateReminder;

/**
* @ORM\Column(type="boolean", nullable=false)
*/
protected $done;


public function __construct()
{
$this->users = new ArrayCollection();
$this->done = false;
}

public function getTitle(): ?string
{
return $this->title;
}

public function setTitle(string $title): self
{
$this->title = $title;

return $this;
}

public function getDescription(): ?string
{
return $this->description;
}

public function setDescription(?string $description): self
{
$this->description = $description;

return $this;
}

public function getEntityName(): ?string
{
return $this->entityName;
}

public function setEntityName(?string $entityName): self
{
$this->entityName = $entityName;

return $this;
}

public function getEntityAction(): ?string
{
return $this->entityAction;
}

public function setEntityAction(?string $entityAction): self
{
$this->entityAction = $entityAction;

return $this;
}

public function getEntityId(): ?int
{
return $this->entityId;
}

public function setEntityId(?int $entityId): self
{
$this->entityId = $entityId;

return $this;
}

/**
* @return Collection|UserInterface[]
*/
public function getUsers(): Collection
{
return $this->users;
}

public function addUser(UserInterface $user): self
{
if (!$this->users->contains($user)) {
$this->users[] = $user;
}

return $this;
}

public function removeUser(UserInterface $user): self
{
if ($this->users->contains($user)) {
$this->users->removeElement($user);
}

return $this;
}

public function getDateReminder(): ?\DateTimeInterface
{
return $this->dateReminder;
}

public function setDateReminder(?\DateTimeInterface $dateReminder): self
{
$this->dateReminder = $dateReminder;

return $this;
}

public function getDone(): ?bool
{
return $this->done;
}

public function setDone(?bool $done): self
{
$this->done = $done;

return $this;
}
}

+ 8
- 0
Model/Setting/SettingInterface.php Voir le fichier

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

namespace Lc\SovBundle\Model\Setting;

interface SettingInterface
{

}

+ 91
- 0
Model/Setting/SettingModel.php Voir le fichier

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

namespace Lc\SovBundle\Model\Setting;

use Doctrine\ORM\Mapping as ORM;
use Lc\SovBundle\Model\File\FileInterface;

/**
* @ORM\MappedSuperclass()
*/
abstract class SettingModel
{
/**
* @ORM\Column(type="string", length=63)
*/
protected $name;

/**
* @ORM\Column(type="text", nullable=true)
*/
protected $text;

/**
* @ORM\Column(type="datetime", nullable=true)
*/
protected $date;

/**
* @ORM\ManyToOne(targetEntity=FileInterface::class, cascade={"persist", "remove"})
*/
protected $file;

public function getValue()
{
if ($this->getText()) {
return $this->getText();
} elseif ($this->getDate()) {
return $this->getDate();
} elseif ($this->getFile()) {
return $this->getFile();
}
}

public function getName(): ?string
{
return $this->name;
}

public function setName(string $name): self
{
$this->name = $name;

return $this;
}

public function getText(): ?string
{
return $this->text;
}

public function setText($text): self
{
$this->text = $text;

return $this;
}

public function getDate(): ?\DateTimeInterface
{
return $this->date;
}

public function setDate(?\DateTimeInterface $date): self
{
$this->date = $date;

return $this;
}

public function getFile(): ?FileInterface
{
return $this->file;
}

public function setFile(?FileInterface $file): self
{
$this->file = $file;

return $this;
}
}

+ 1
- 4
Model/User/GroupUserModel.php Voir le fichier

@@ -5,15 +5,12 @@ namespace Lc\SovBundle\Model\User;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Lc\CaracoleBundle\Doctrine\Extension\FilterMerchantInterface;
use Lc\SovBundle\Doctrine\Pattern\AbstractLightEntity;



/**
* @ORM\MappedSuperclass()
*/
abstract class GroupUserModel extends AbstractLightEntity implements FilterMerchantInterface
abstract class GroupUserModel extends AbstractLightEntity
{

/**

+ 56
- 0
Repository/Reminder/ReminderRepository.php Voir le fichier

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

namespace Lc\SovBundle\Repository\Reminder;

use Lc\SovBundle\Repository\AbstractRepository;
use Lc\SovBundle\Model\Reminder\ReminderInterface;

/**
* @method ReminderInterface|null find($id, $lockMode = null, $lockVersion = null)
* @method ReminderInterface|null findOneBy(array $criteria, array $orderBy = null)
* @method ReminderInterface[] findAll()
* @method ReminderInterface[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class ReminderRepository extends AbstractRepository
{
public function getInterfaceClass()
{
return ReminderInterface::class;
}

public function findByUser($user)
{
$qb = $this->findByMerchantQuery()
->leftJoin('e.users', 'u')
->having('COUNT(u.id) = 0')
->orHaving(':user MEMBER OF e.users')
->andWhere('e.done = 0')
->setParameter('user', $user)
->orderBy('e.dateReminder', 'ASC')
->groupBy('e.id');

return $qb->getQuery()->getResult();
}

public function findByEasyAdminConfigAndUser($action, $entity, $user, $id = null)
{
$qb = $this->findByMerchantQuery();
$qb->leftJoin('e.users', 'u');
$qb->having('COUNT(u.id) = 0');
$qb->orHaving(':user MEMBER OF e.users');
$qb->andWhere('e.done = 0');
$qb->andWhere('e.entityAction LIKE :action');
$qb->andWhere('e.entityName LIKE :entity');
$qb->setParameter('entity', $entity);
$qb->setParameter('action', $action);
$qb->setParameter('user', $user);
if ($id) {
$qb->andWhere('e.entityId LIKE :id');
$qb->setParameter('id', $id);
}
$qb->orderBy('e.dateReminder', 'ASC');
$qb->groupBy('e.id');

return $qb->getQuery()->getResult();
}
}

+ 20
- 0
Repository/Setting/SettingRepository.php Voir le fichier

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

namespace Lc\SovBundle\Repository\Setting;

use Lc\SovBundle\Repository\AbstractRepository;
use Lc\SovBundle\Model\Setting\SettingInterface;

/**
* @method SettingInterface|null find($id, $lockMode = null, $lockVersion = null)
* @method SettingInterface|null findOneBy(array $criteria, array $orderBy = null)
* @method SettingInterface[] findAll()
* @method SettingInterface[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class SettingRepository extends AbstractRepository
{
public function getInterfaceClass()
{
return SettingInterface::class;
}
}

+ 1
- 1
Repository/User/GroupUserRepository.php Voir le fichier

@@ -2,8 +2,8 @@

namespace Lc\SovBundle\Repository\User;

use Lc\SovBundle\Model\User\GroupUserInterface;
use Lc\SovBundle\Repository\AbstractRepository;
use Lc\SovBundle\Model\User\GroupUserInterface;

/**
* @method GroupUserInterface|null find($id, $lockMode = null, $lockVersion = null)

Chargement…
Annuler
Enregistrer