<?php | |||||
namespace Lc\ShopBundle\Context; | |||||
interface SectionInterface | |||||
{ | |||||
} |
<?php | |||||
namespace Lc\ShopBundle\Context; | |||||
interface SectionUtilsInterface | |||||
{ | |||||
} |
$codesPostaux = $city->codesPostaux ; | $codesPostaux = $city->codesPostaux ; | ||||
if($context == 'frontend') { | |||||
$label = '<span class="city">'.$city->nom.'</span> <span class="zip">'.$codesPostaux[0].'</span>' ; | |||||
} | |||||
else { | |||||
$label = $city->nom.' - '.$codesPostaux[0] ; | |||||
} | |||||
$return[] = [ | $return[] = [ | ||||
'label' => '<span class="city">'.$city->nom.'</span> <span class="zip">'.$codesPostaux[0].'</span>', | |||||
'label' => $label, | |||||
'city' => $city->nom, | 'city' => $city->nom, | ||||
'value' => $city->code | 'value' => $city->code | ||||
] ; | ] ; |
use Symfony\Component\Form\FormEvents; | use Symfony\Component\Form\FormEvents; | ||||
use Symfony\Component\HttpFoundation\JsonResponse; | use Symfony\Component\HttpFoundation\JsonResponse; | ||||
use Symfony\Component\HttpFoundation\Response; | use Symfony\Component\HttpFoundation\Response; | ||||
use Symfony\Component\HttpFoundation\Session\SessionInterface; | |||||
use Symfony\Component\Security\Core\Security; | use Symfony\Component\Security\Core\Security; | ||||
use Symfony\Contracts\Translation\TranslatorInterface; | use Symfony\Contracts\Translation\TranslatorInterface; | ||||
protected $merchantUtils; | protected $merchantUtils; | ||||
protected $mailjetTransport; | protected $mailjetTransport; | ||||
protected $orderUtils; | protected $orderUtils; | ||||
protected $mailUtils ; | |||||
protected $mailUtils; | |||||
protected $translator; | protected $translator; | ||||
protected $utilsProcess; | protected $utilsProcess; | ||||
protected $session; | |||||
protected $sectionUtils; | |||||
protected $filtersForm = null; | protected $filtersForm = null; | ||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, | public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, | ||||
MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator) | |||||
MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator, SessionInterface $session) | |||||
{ | { | ||||
$this->security = $security; | $this->security = $security; | ||||
$this->userManager = $userManager; | $this->userManager = $userManager; | ||||
$this->utils = $utilsManager->getUtils(); | $this->utils = $utilsManager->getUtils(); | ||||
$this->merchantUtils = $utilsManager->getMerchantUtils(); | $this->merchantUtils = $utilsManager->getMerchantUtils(); | ||||
$this->orderUtils = $utilsManager->getOrderUtils();; | $this->orderUtils = $utilsManager->getOrderUtils();; | ||||
$this->mailUtils = $utilsManager->getMailUtils() ; | |||||
$this->utilsProcess = $utilsManager->getUtilsProcess() ; | |||||
$this->mailUtils = $utilsManager->getMailUtils(); | |||||
$this->utilsProcess = $utilsManager->getUtilsProcess(); | |||||
$this->sectionUtils = $utilsManager->getSectionUtils(); | |||||
$this->translator = $translator; | $this->translator = $translator; | ||||
$this->session = $session; | |||||
} | } | ||||
public function createCustomForm($class, $action, $parameters, $data = true, $options = array()) | public function createCustomForm($class, $action, $parameters, $data = true, $options = array()) | ||||
$dqlFilter = sprintf(str_replace('currentMerchant', $this->getUser()->getMerchant()->getId(), $dqlFilter)); | $dqlFilter = sprintf(str_replace('currentMerchant', $this->getUser()->getMerchant()->getId(), $dqlFilter)); | ||||
} | } | ||||
if ($pos = strpos($dqlFilter, 'TODAYSTART')) { | |||||
$date = new \DateTime(); | |||||
$dqlFilter = sprintf(str_replace('TODAYSTART', $date->format('Y-m-d').' 00:00:00', $dqlFilter)); | |||||
} | |||||
if ($pos = strpos($dqlFilter, 'TODAYEND')) { | |||||
$date = new \DateTime(); | |||||
$dqlFilter = sprintf(str_replace('TODAYEND', $date->format('Y-m-d').' 23:59:59', $dqlFilter)); | |||||
} | |||||
if ($pos = strpos($dqlFilter, 'sectionLunch')) { | |||||
$dqlFilter = sprintf(str_replace('sectionLunch', $this->sectionUtils->getSection('lunch')->getId(), $dqlFilter)); | |||||
} else if ($pos = strpos($dqlFilter, 'sectionMarket')) { | |||||
$dqlFilter = sprintf(str_replace('sectionMarket', $this->sectionUtils->getSection('market')->getId(), $dqlFilter)); | |||||
} | |||||
if (new $entityClass instanceof StatusInterface && strpos($dqlFilter, 'entity.status') === false) { | if (new $entityClass instanceof StatusInterface && strpos($dqlFilter, 'entity.status') === false) { | ||||
if ($dqlFilter) $dqlFilter .= sprintf(' AND entity.status > = 0'); | if ($dqlFilter) $dqlFilter .= sprintf(' AND entity.status > = 0'); | ||||
else $dqlFilter .= sprintf(' entity.status > = 0'); | else $dqlFilter .= sprintf(' entity.status > = 0'); | ||||
'entity_class' => $this->entity['class'] | 'entity_class' => $this->entity['class'] | ||||
)); | )); | ||||
$this->filtersForm->handleRequest($this->request); | $this->filtersForm->handleRequest($this->request); | ||||
if ($this->filtersForm->isSubmitted() && $this->filtersForm->isValid()) { | |||||
$easyadmin = $this->request->attributes->get('easyadmin'); | |||||
$view = $easyadmin['view']; | |||||
if($easyadmin['view']=='listChildren') $view = 'list'; | |||||
if (($this->filtersForm->isSubmitted() && $this->filtersForm->isValid()) || $this->entity[$view]['filters']!==false) { | |||||
foreach ($listFields as $field) { | foreach ($listFields as $field) { | ||||
if ($this->filtersForm->has($field['property'])) { | |||||
//if ($this->filtersForm->has($field['property'])->getConfig()->getOption('AdminController')) { | |||||
if ($this->filtersForm->has($field['property'])) { | |||||
switch ($field['dataType']) { | switch ($field['dataType']) { | ||||
case 'option': | case 'option': | ||||
case 'integer': | case 'integer': | ||||
case 'text': | case 'text': | ||||
case 'string': | case 'string': | ||||
case 'toggle': | case 'toggle': | ||||
$filter = $this->filtersForm->get($field['property'])->getData(); | |||||
$filter = $this->getListFilterParam($field['property']); | |||||
//$filter = $this->filtersForm->get($field['property'])->getData(); | |||||
if ($filter !== null) { | if ($filter !== null) { | ||||
$queryBuilder->andWhere('entity.' . $field['property'] . ' LIKE :' . $field['property'] . ''); | $queryBuilder->andWhere('entity.' . $field['property'] . ' LIKE :' . $field['property'] . ''); | ||||
} | } | ||||
break; | break; | ||||
case 'association' : | case 'association' : | ||||
$filter = $this->filtersForm->get($field['property'])->getData(); | |||||
$filter = $this->getListFilterParam($field['property']); | |||||
//$filter = $this->filtersForm->get($field['property'])->getData(); | |||||
if ($filter !== null) { | if ($filter !== null) { | ||||
if ($field['type_options']['multiple']) { | if ($field['type_options']['multiple']) { | ||||
$queryBuilder->andWhere(':' . $field['property'] . ' MEMBER OF entity.' . $field['property'] . ''); | $queryBuilder->andWhere(':' . $field['property'] . ' MEMBER OF entity.' . $field['property'] . ''); | ||||
} else { | } else { | ||||
$queryBuilder->andWhere('entity.' . $field['property'] . ' = :' . $field['property'] . ''); | $queryBuilder->andWhere('entity.' . $field['property'] . ' = :' . $field['property'] . ''); | ||||
} | } | ||||
if($filter instanceof TreeInterface && $filter->getParent() == null) { | |||||
if ($filter instanceof TreeInterface && $filter->getParent() == null) { | |||||
$queryBuilder->setParameter($field['property'], array_merge(array($filter), $filter->getChildrens()->toArray())); | $queryBuilder->setParameter($field['property'], array_merge(array($filter), $filter->getChildrens()->toArray())); | ||||
}else{ | |||||
} else { | |||||
$queryBuilder->setParameter($field['property'], $filter); | $queryBuilder->setParameter($field['property'], $filter); | ||||
} | } | ||||
} | } | ||||
break; | break; | ||||
case 'datetime': | case 'datetime': | ||||
case 'date': | case 'date': | ||||
$dateStart = $this->filtersForm->get($field['property'])->get('dateStart')->getData(); | |||||
$dateEnd = $this->filtersForm->get($field['property'])->get('dateEnd')->getData(); | |||||
$dateStart = $this->getListFilterParam($field['property'], 'dateStart'); | |||||
$dateEnd = $this->getListFilterParam($field['property'], 'dateEnd'); | |||||
if ($dateStart) $queryBuilder->andWhere('entity.' . $field['property'] . ' >= :dateStart')->setParameter('dateStart', $dateStart); | if ($dateStart) $queryBuilder->andWhere('entity.' . $field['property'] . ' >= :dateStart')->setParameter('dateStart', $dateStart); | ||||
if ($dateEnd) $queryBuilder->andWhere('entity.' . $field['property'] . ' <= :dateEnd')->setParameter('dateEnd', $dateEnd); | if ($dateEnd) $queryBuilder->andWhere('entity.' . $field['property'] . ' <= :dateEnd')->setParameter('dateEnd', $dateEnd); | ||||
} | } | ||||
} | } | ||||
//TODO déplacer dans LC | |||||
if($this->entity['name']== 'OrderShopLunch' || $this->entity['name']== 'OrderShopLunchDay'){ | |||||
$queryBuilder->addOrderBy('entity.user', 'asc'); | |||||
} | |||||
return $queryBuilder; | return $queryBuilder; | ||||
} | } | ||||
//TODO finaliser la sauvegarde des filtres | |||||
protected function getListFilterParam($param, $extraParam = null){ | |||||
$entityName = $this->entity['name']; | |||||
$sessionParam = $entityName.$param.$extraParam; | |||||
//CUSTOM | |||||
if($extraParam){ | |||||
$value = $this->filtersForm->get($param)->get($extraParam)->getViewData(); | |||||
}else{ | |||||
$value = $this->filtersForm->get($param)->getViewData(); | |||||
} | |||||
if($this->request->query->get('filterClear')){ | |||||
$this->session->remove($sessionParam); | |||||
}else { | |||||
if ($value) { | |||||
$this->session->set($sessionParam, $value); | |||||
} else if ($this->session->get($sessionParam) && !$this->filtersForm->isSubmitted() && $this->filtersForm->get($param)) { | |||||
$value = $this->session->get($sessionParam); | |||||
if($extraParam){ | |||||
if($this->filtersForm->get($param)->get($extraParam)->getConfig()->getOption('input')=='datetime'){ | |||||
$this->filtersForm->get($param)->get($extraParam)->setData(new \DateTime($value)); | |||||
}else{ | |||||
$this->filtersForm->get($param)->get($extraParam)->setData($value); | |||||
} | |||||
}else { | |||||
//Champ association | |||||
if ($this->filtersForm->get($param)->getConfig()->getOption('class')) { | |||||
$valFormated = $this->em->getRepository($this->filtersForm->get($param)->getConfig()->getOption('class'))->find($value); | |||||
$this->filtersForm->get($param)->setData($valFormated); | |||||
} else { | |||||
//Champ noramux | |||||
$this->filtersForm->get($param)->setData($value); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
if($value !== "")return $value; | |||||
else return null; | |||||
} | |||||
public function renderTemplate($actionName, $templatePath, array $parameters = []) | public function renderTemplate($actionName, $templatePath, array $parameters = []) | ||||
{ | { | ||||
} | } | ||||
protected function getListParam($param, $default =null){ | |||||
$entityName = $this->entity['name']; | |||||
$sessionParam = $entityName.$param; | |||||
//CUSTOM | |||||
if($param == 'maxResults'){ | |||||
$val = $this->entity['list']['max_results']; | |||||
}else{ | |||||
$val = $this->request->query->get($param, $default); | |||||
} | |||||
if(isset($_GET[$param])){ | |||||
$val = $this->request->query->get($param); | |||||
$this->session->set($sessionParam, $val); | |||||
}else if($this->session->get($sessionParam)){ | |||||
$val = $this->session->get($sessionParam); | |||||
$this->request->query->set($param, $val); | |||||
} | |||||
return $val; | |||||
} | |||||
protected function listAction() | |||||
{ | |||||
$this->dispatch(EasyAdminEvents::PRE_LIST); | |||||
$fields = $this->entity['list']['fields']; | |||||
$paginator = $this->findAll($this->entity['class'], $this->getListParam('page', 1), $this->getListParam('maxResults'), $this->getListParam('sortField'), $this->getListParam('sortDirection'), $this->entity['list']['dql_filter']); | |||||
$this->dispatch(EasyAdminEvents::POST_LIST, ['paginator' => $paginator]); | |||||
$parameters = [ | |||||
'paginator' => $paginator, | |||||
'fields' => $fields, | |||||
'batch_form' => $this->createBatchForm($this->entity['name'])->createView(), | |||||
'delete_form_template' => $this->createDeleteForm($this->entity['name'], '__id__')->createView(), | |||||
]; | |||||
return $this->executeDynamicMethod('render<EntityName>Template', ['list', $this->entity['templates']['list'], $parameters]); | |||||
} | |||||
public function sortAction() | public function sortAction() | ||||
{ | { | ||||
$form->add($child->getName(), EntityType::class, array( | $form->add($child->getName(), EntityType::class, array( | ||||
'class' => $this->em->getClassMetadata($passedOptions['class'])->getName(), | 'class' => $this->em->getClassMetadata($passedOptions['class'])->getName(), | ||||
'label' => $passedOptions['label'], | 'label' => $passedOptions['label'], | ||||
'expanded' => isset($passedOptions['expanded']) ? $passedOptions['expanded'] : false, | |||||
'multiple' => isset($passedOptions['multiple']) ? $passedOptions['multiple'] : false, | 'multiple' => isset($passedOptions['multiple']) ? $passedOptions['multiple'] : false, | ||||
'placeholder' => '--', | 'placeholder' => '--', | ||||
'translation_domain' => 'lcshop', | 'translation_domain' => 'lcshop', | ||||
$id = $this->request->query->get('id'); | $id = $this->request->query->get('id'); | ||||
$easyadmin = $this->request->attributes->get('easyadmin'); | $easyadmin = $this->request->attributes->get('easyadmin'); | ||||
$entity = $easyadmin['item']; | |||||
$entity = $easyadmin['item']; | |||||
if ($this->request->isXmlHttpRequest() && $property = $this->request->query->get('property')) { | if ($this->request->isXmlHttpRequest() && $property = $this->request->query->get('property')) { | ||||
$newValue = 'true' === mb_strtolower($this->request->query->get('newValue')); | $newValue = 'true' === mb_strtolower($this->request->query->get('newValue')); | ||||
return $this->executeDynamicMethod('render<EntityName>Template', ['edit', $this->entity['templates']['edit'], $parameters]); | return $this->executeDynamicMethod('render<EntityName>Template', ['edit', $this->entity['templates']['edit'], $parameters]); | ||||
} | } | ||||
/* public function createNewEntity(){ | |||||
$idDuplicate = $this->request->query->get('duplicate', null); | |||||
if($idDuplicate){ | |||||
$easyadmin = $this->request->attributes->get('easyadmin'); | |||||
$entity= $this->em->getRepository($easyadmin['entity']['class'])->find($idDuplicate); | |||||
/* public function createNewEntity(){ | |||||
$idDuplicate = $this->request->query->get('duplicate', null); | |||||
if($idDuplicate){ | |||||
$easyadmin = $this->request->attributes->get('easyadmin'); | |||||
$entity= $this->em->getRepository($easyadmin['entity']['class'])->find($idDuplicate); | |||||
$newProductFamily = clone $entity ; | |||||
$this->em->persist($newProductFamily) ; | |||||
$this->em->flush() ; | |||||
}else{ | |||||
$entityFullyQualifiedClassName = $this->entity['class']; | |||||
$newProductFamily = clone $entity ; | |||||
$this->em->persist($newProductFamily) ; | |||||
$this->em->flush() ; | |||||
}else{ | |||||
$entityFullyQualifiedClassName = $this->entity['class']; | |||||
return new $entityFullyQualifiedClassName(); | |||||
} | |||||
return new $entityFullyQualifiedClassName(); | |||||
} | |||||
}*/ | |||||
}*/ | |||||
public function duplicateAction(){ | |||||
public function duplicateAction() | |||||
{ | |||||
$id = $this->request->query->get('id'); | $id = $this->request->query->get('id'); | ||||
$refererUrl = $this->request->query->get('referer', ''); | $refererUrl = $this->request->query->get('referer', ''); | ||||
$easyadmin = $this->request->attributes->get('easyadmin'); | $easyadmin = $this->request->attributes->get('easyadmin'); | ||||
$entity= $this->em->getRepository($easyadmin['entity']['class'])->find($id); | |||||
$entity = $this->em->getRepository($easyadmin['entity']['class'])->find($id); | |||||
$newEntity = $this->utilsProcess->duplicateEntity($entity); | $newEntity = $this->utilsProcess->duplicateEntity($entity); | ||||
return $this->redirectToRoute('easyadmin', ['entity' => $easyadmin['entity']['name'], 'action' => 'edit', 'id' =>$newEntity->getId(), 'referer' =>$refererUrl ]) ; | |||||
return $this->redirectToRoute('easyadmin', ['entity' => $easyadmin['entity']['name'], 'action' => 'edit', 'id' => $newEntity->getId(), 'referer' => $refererUrl]); | |||||
} | } | ||||
public function duplicateOtherHubAction(){ | |||||
public function duplicateOtherHubAction() | |||||
{ | |||||
$id = $this->request->query->get('id'); | $id = $this->request->query->get('id'); | ||||
$hubAlias = $this->request->query->get('hub'); | $hubAlias = $this->request->query->get('hub'); | ||||
$refererUrl = $this->request->query->get('referer', ''); | $refererUrl = $this->request->query->get('referer', ''); | ||||
$user = $this->security->getUser() ; | |||||
$user = $this->security->getUser(); | |||||
$easyadmin = $this->request->attributes->get('easyadmin'); | $easyadmin = $this->request->attributes->get('easyadmin'); | ||||
$entity= $this->em->getRepository($easyadmin['entity']['class'])->find($id); | |||||
$hub= $this->em->getRepository(MerchantInterface::class)->findOneByDevAlias($hubAlias); | |||||
$entity = $this->em->getRepository($easyadmin['entity']['class'])->find($id); | |||||
$hub = $this->em->getRepository(MerchantInterface::class)->findOneByDevAlias($hubAlias); | |||||
$newEntity = $this->utilsProcess->duplicateEntityToOtherHub($entity,$hub); | |||||
$newEntity = $this->utilsProcess->duplicateEntityToOtherHub($entity, $hub); | |||||
$user->setMerchant($hub); | $user->setMerchant($hub); | ||||
$this->em->persist($user); | $this->em->persist($user); | ||||
$this->em->flush(); | $this->em->flush(); | ||||
$redirectUrl = $this->generateUrl('easyadmin', ['entity' => $easyadmin['entity']['name'], 'action' => 'edit', 'id' =>$newEntity->getId(), 'referer' =>$refererUrl ]).'&hubredirection=true'; | |||||
$redirectUrl = $this->generateUrl('easyadmin', ['entity' => $easyadmin['entity']['name'], 'action' => 'edit', 'id' => $newEntity->getId(), 'referer' => $refererUrl]) . '&hubredirection=true'; | |||||
return $this->redirectToOtherHub($hub, $redirectUrl) ; | |||||
return $this->redirectToOtherHub($hub, $redirectUrl); | |||||
} | } | ||||
public function redirectToOtherHub($hub, $url){ | |||||
if(strpos($_SERVER['HTTP_HOST'], 'localhost')!==false){ | |||||
public function redirectToOtherHub($hub, $url) | |||||
{ | |||||
if (strpos($_SERVER['HTTP_HOST'], 'localhost') !== false) { | |||||
return $this->redirect($url); | return $this->redirect($url); | ||||
}else{ | |||||
return $this->redirect($hub->getMerchantConfig('url').substr($url,1)); | |||||
} else { | |||||
return $this->redirect($hub->getMerchantConfig('url') . substr($url, 1)); | |||||
} | } | ||||
} | } |
use Lc\ShopBundle\Services\UtilsManager; | use Lc\ShopBundle\Services\UtilsManager; | ||||
use Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport; | use Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport; | ||||
use Symfony\Component\HttpFoundation\BinaryFileResponse; | use Symfony\Component\HttpFoundation\BinaryFileResponse; | ||||
use Symfony\Component\HttpFoundation\Session\SessionInterface; | |||||
use Symfony\Component\HttpFoundation\StreamedResponse; | use Symfony\Component\HttpFoundation\StreamedResponse; | ||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | ||||
use Symfony\Component\Security\Core\Security; | use Symfony\Component\Security\Core\Security; | ||||
{ | { | ||||
protected $documentRepository ; | protected $documentRepository ; | ||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator) | |||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator, SessionInterface $session) | |||||
{ | { | ||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator); | |||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator, $session); | |||||
$this->documentRepository = $this->em->getRepository($this->em->getClassMetadata(DocumentInterface::class)->getName()) ; | $this->documentRepository = $this->em->getRepository($this->em->getClassMetadata(DocumentInterface::class)->getName()) ; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | |||||
} |
use Lc\ShopBundle\Services\UtilsManager; | use Lc\ShopBundle\Services\UtilsManager; | ||||
use Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport; | use Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport; | ||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; | use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; | ||||
use Symfony\Component\HttpFoundation\Session\SessionInterface; | |||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | ||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | ||||
use Symfony\Component\Security\Core\Security; | use Symfony\Component\Security\Core\Security; | ||||
{ | { | ||||
protected $parameterBag ; | protected $parameterBag ; | ||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, | |||||
MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator, | |||||
ParameterBagInterface $parameterBag) | |||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator, SessionInterface $session, ParameterBagInterface $parameterBag) | |||||
{ | { | ||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator, $session); | |||||
$this->parameterBag = $parameterBag ; | $this->parameterBag = $parameterBag ; | ||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator); | |||||
} | } | ||||
public function sendTestAction() | public function sendTestAction() | ||||
$newsletter = $this->getNewsletter() ; | $newsletter = $this->getNewsletter() ; | ||||
$news = $this->getNews() ; | $news = $this->getNews() ; | ||||
$users = $this->em->getRepository($this->em->getClassMetadata(UserInterface::class)->getName())->findAllByNewsletter($newsletter) ; | $users = $this->em->getRepository($this->em->getClassMetadata(UserInterface::class)->getName())->findAllByNewsletter($newsletter) ; | ||||
$countUsers = count($users) ; | $countUsers = count($users) ; | ||||
$packageMessagesArray = []; | $packageMessagesArray = []; | ||||
] ; | ] ; | ||||
$i = 0 ; | $i = 0 ; | ||||
foreach ($users as $user) { | foreach ($users as $user) { | ||||
$paramsTemplate['user'] =$user; | |||||
if(!isset($packageMessagesArray[$i])) { | if(!isset($packageMessagesArray[$i])) { | ||||
$packageMessagesArray[$i] = [] ; | $packageMessagesArray[$i] = [] ; | ||||
} | } | ||||
public function getNewsletter() | public function getNewsletter() | ||||
{ | { | ||||
$newsletter = $this->merchantUtils->getMerchantCurrent()->getNewsletter() ; | $newsletter = $this->merchantUtils->getMerchantCurrent()->getNewsletter() ; | ||||
if($newsletter) { | if($newsletter) { | ||||
return $newsletter ; | return $newsletter ; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | |||||
} |
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | use Symfony\Bridge\Doctrine\Form\Type\EntityType; | ||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType; | use Symfony\Component\Form\Extension\Core\Type\SubmitType; | ||||
use Symfony\Component\HttpFoundation\Response; | use Symfony\Component\HttpFoundation\Response; | ||||
use Symfony\Component\HttpFoundation\Session\SessionInterface; | |||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | ||||
use Symfony\Component\Security\Core\Security; | use Symfony\Component\Security\Core\Security; | ||||
use Symfony\Contracts\Translation\TranslatorInterface; | use Symfony\Contracts\Translation\TranslatorInterface; | ||||
protected $creditUtils; | protected $creditUtils; | ||||
protected $mailUtils; | protected $mailUtils; | ||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator) | |||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator, SessionInterface $session) | |||||
{ | { | ||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator, $session); | |||||
$this->creditUtils = $utilsManager->getCreditUtils(); | $this->creditUtils = $utilsManager->getCreditUtils(); | ||||
$this->mailUtils = $utilsManager->getMailUtils(); | $this->mailUtils = $utilsManager->getMailUtils(); | ||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator); | |||||
} | } | ||||
protected function createListQueryBuilder($entityClass, $sortDirection, $sortField = null, $dqlFilter = null) | protected function createListQueryBuilder($entityClass, $sortDirection, $sortField = null, $dqlFilter = null) | ||||
$id = $this->request->query->get('id'); | $id = $this->request->query->get('id'); | ||||
$entity = $this->request->query->get('entity'); | $entity = $this->request->query->get('entity'); | ||||
if ($this->request->isXmlHttpRequest() && $property = $this->request->query->get('property')) { | |||||
$newValue = 'true' === mb_strtolower($this->request->query->get('newValue')); | |||||
$fieldsMetadata = $this->entity['list']['fields']; | |||||
if($property == 'isGivenToCustomer'){ | |||||
$orderShop =$this->getOrderShopEntity(); | |||||
$orderShop->setIsGivenToCustomer($newValue); | |||||
$this->em->persist($orderShop); | |||||
$this->em->flush(); | |||||
$this->utils->addFlash('success', 'success.common.fieldChange'); | |||||
$response['flashMessages'] = $this->utils->getFlashMessages(); | |||||
return new Response(json_encode($response)); | |||||
} | |||||
} | |||||
return $this->redirectToRoute('easyadmin', [ | return $this->redirectToRoute('easyadmin', [ | ||||
'action' => 'show', | 'action' => 'show', | ||||
'entity' => $entity, | 'entity' => $entity, |
use Symfony\Component\Form\Extension\Core\Type\NumberType; | use Symfony\Component\Form\Extension\Core\Type\NumberType; | ||||
use Symfony\Component\Form\FormError; | use Symfony\Component\Form\FormError; | ||||
use Symfony\Component\HttpFoundation\Response; | use Symfony\Component\HttpFoundation\Response; | ||||
use Symfony\Component\HttpFoundation\Session\SessionInterface; | |||||
use Symfony\Component\Security\Core\Security; | use Symfony\Component\Security\Core\Security; | ||||
use Symfony\Contracts\Translation\TranslatorInterface; | use Symfony\Contracts\Translation\TranslatorInterface; | ||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; | use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; | ||||
private $parameterBag ; | private $parameterBag ; | ||||
private $productFamilyUtils ; | private $productFamilyUtils ; | ||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, | |||||
MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator, | |||||
ParameterBagInterface $parameterBag) | |||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator, SessionInterface $session, ParameterBagInterface $parameterBag) | |||||
{ | { | ||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator); | |||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator, $session); | |||||
$this->parameterBag = $parameterBag ; | $this->parameterBag = $parameterBag ; | ||||
$this->productFamilyUtils = $utilsManager->getProductFamilyUtils() ; | $this->productFamilyUtils = $utilsManager->getProductFamilyUtils() ; | ||||
} | } | ||||
protected function editAction() | protected function editAction() | ||||
{ | { | ||||
$this->dispatch(EasyAdminEvents::PRE_EDIT); | $this->dispatch(EasyAdminEvents::PRE_EDIT); | ||||
$id = $this->request->query->get('id'); | $id = $this->request->query->get('id'); | ||||
if ($editForm->get('stayOnPage')->getData() != "false" || $this->request->get('submitAndStay') !== null) { | if ($editForm->get('stayOnPage')->getData() != "false" || $this->request->get('submitAndStay') !== null) { | ||||
$refererUrl = $this->request->query->get('referer', ''); | $refererUrl = $this->request->query->get('referer', ''); | ||||
return $this->redirectToRoute('easyadmin', ['entity' => 'ProductFamily', 'action' => 'edit', 'id' => $id, 'referer' => $refererUrl]); | |||||
return $this->redirectToRoute('easyadmin', ['entity' => 'ProductFamily', 'action' => 'edit', 'id' => $id, 'referer' => $refererUrl, 'ajax' => $this->request->query->get('ajax')]); | |||||
} else { | } else { | ||||
return $this->redirectToReferrer(); | return $this->redirectToReferrer(); | ||||
} | } |
use Doctrine\ORM\EntityManagerInterface; | use Doctrine\ORM\EntityManagerInterface; | ||||
use EasyCorp\Bundle\EasyAdminBundle\Event\EasyAdminEvents; | use EasyCorp\Bundle\EasyAdminBundle\Event\EasyAdminEvents; | ||||
use FOS\UserBundle\Model\UserManagerInterface; | use FOS\UserBundle\Model\UserManagerInterface; | ||||
use Lc\ShopBundle\Context\OrderShopInterface; | |||||
use Lc\ShopBundle\Context\UserInterface; | |||||
use Lc\ShopBundle\Form\Backend\Ticket\TicketMessageType; | use Lc\ShopBundle\Form\Backend\Ticket\TicketMessageType; | ||||
use Lc\ShopBundle\Form\Backend\Ticket\TicketStatusType; | use Lc\ShopBundle\Form\Backend\Ticket\TicketStatusType; | ||||
use Lc\ShopBundle\Model\Ticket; | use Lc\ShopBundle\Model\Ticket; | ||||
use Lc\ShopBundle\Services\UtilsManager; | use Lc\ShopBundle\Services\UtilsManager; | ||||
use Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport; | use Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport; | ||||
use Symfony\Component\HttpFoundation\Response; | use Symfony\Component\HttpFoundation\Response; | ||||
use Symfony\Component\HttpFoundation\Session\SessionInterface; | |||||
use Symfony\Component\Security\Core\Security; | use Symfony\Component\Security\Core\Security; | ||||
use Symfony\Contracts\Translation\TranslatorInterface; | use Symfony\Contracts\Translation\TranslatorInterface; | ||||
class TicketController extends AdminController | class TicketController extends AdminController | ||||
{ | { | ||||
protected $ticketUtils; | protected $ticketUtils; | ||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator) | |||||
protected $userUtils; | |||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator, SessionInterface $session) | |||||
{ | { | ||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator, $session); | |||||
$this->ticketUtils = $utilsManager->getTicketUtils(); | $this->ticketUtils = $utilsManager->getTicketUtils(); | ||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator); | |||||
$this->userUtils = $utilsManager->getUserUtils(); | |||||
} | } | ||||
public function persistTicketEntity($entity, $form) | |||||
{ | |||||
$entity->setStatus(Ticket::TICKET_STATUS_OPEN); | |||||
$ticket = $this->ticketUtils->createTicket([ | |||||
'user' => $entity->getUser(), | |||||
'type' => $entity->getType(), | |||||
'orderShop' => $entity->getOrderShop(), | |||||
'subject' => $entity->getSubject(), | |||||
'message' => $form->get('message')->getData(), | |||||
'createByAdmin' => true, | |||||
]); | |||||
} | |||||
protected function createListQueryBuilder($entityClass, $sortDirection, $sortField = null, $dqlFilter = null) | protected function createListQueryBuilder($entityClass, $sortDirection, $sortField = null, $dqlFilter = null) | ||||
{ | { | ||||
} | } | ||||
public function ticketStatusAction(){ | |||||
public function ticketStatusAction() | |||||
{ | |||||
$easyadmin = $this->request->attributes->get('easyadmin'); | $easyadmin = $this->request->attributes->get('easyadmin'); | ||||
$ticket = $easyadmin['item']; | $ticket = $easyadmin['item']; | ||||
$formTicketStatusForm->handleRequest($this->request); | $formTicketStatusForm->handleRequest($this->request); | ||||
if ($formTicketStatusForm->isSubmitted() && $formTicketStatusForm->isValid()) { | if ($formTicketStatusForm->isSubmitted() && $formTicketStatusForm->isValid()) { | ||||
$this->em->persist($ticket); | |||||
$this->em->flush(); | |||||
$this->em->persist($ticket); | |||||
$this->em->flush(); | |||||
$this->utils->addFlash('success', 'success.ticket.statusChange'); | |||||
$this->utils->addFlash('success', 'success.ticket.statusChange'); | |||||
} else { | } else { | ||||
$this->utils->addFlash('error', $formTicketStatusForm->getErrors()); | $this->utils->addFlash('error', $formTicketStatusForm->getErrors()); | ||||
} | } | ||||
return new Response(json_encode($response)); | return new Response(json_encode($response)); | ||||
} | } | ||||
public function newMessageTicketAction(){ | |||||
public function newMessageTicketAction() | |||||
{ | |||||
$easyadmin = $this->request->attributes->get('easyadmin'); | $easyadmin = $this->request->attributes->get('easyadmin'); | ||||
$ticket = $easyadmin['item']; | $ticket = $easyadmin['item']; | ||||
if ($formAddTicketMessage->isSubmitted() && $formAddTicketMessage->isValid()) { | if ($formAddTicketMessage->isSubmitted() && $formAddTicketMessage->isValid()) { | ||||
$this->ticketUtils->createTicketMessage(array( | $this->ticketUtils->createTicketMessage(array( | ||||
'ticket'=>$ticket, | |||||
'message'=> $formAddTicketMessage->get('message')->getData(), | |||||
'answerByAdmin'=>true | |||||
'ticket' => $ticket, | |||||
'message' => $formAddTicketMessage->get('message')->getData(), | |||||
'answerByAdmin' => true | |||||
)); | )); | ||||
$this->utils->addFlash('success', 'success.ticket.addMessage'); | $this->utils->addFlash('success', 'success.ticket.addMessage'); | ||||
'id' => $ticket->getId() | 'id' => $ticket->getId() | ||||
]); | ]); | ||||
} | } | ||||
public function newAction() | |||||
{ | |||||
$this->dispatch(EasyAdminEvents::PRE_NEW); | |||||
$entity = $this->executeDynamicMethod('createNew<EntityName>Entity'); | |||||
$easyadmin = $this->request->attributes->get('easyadmin'); | |||||
$easyadmin['item'] = $entity; | |||||
$this->request->attributes->set('easyadmin', $easyadmin); | |||||
$fields = $this->entity['new']['fields']; | |||||
$newForm = $this->executeDynamicMethod('create<EntityName>NewForm', [$entity, $fields]); | |||||
if ($this->request->request->get('user')) { | |||||
$userRepo = $this->em->getRepository(UserInterface::class); | |||||
$newForm->get('user')->setData($userRepo->find($this->request->request->get('user'))); | |||||
} | |||||
if ($this->request->request->get('orderId')) { | |||||
$newForm->get('orderId')->setData($this->request->request->get('orderId')); | |||||
} | |||||
$newForm->handleRequest($this->request); | |||||
if ($newForm->isSubmitted() && $newForm->isValid()) { | |||||
if ($newForm->get('orderId')->getData()) { | |||||
$orderShopRepo = $this->em->getRepository(OrderShopInterface::class); | |||||
$orderShop = $orderShopRepo->find($newForm->get('orderId')->getData()); | |||||
if($orderShop)$entity->setOrderShop($orderShop); | |||||
} | |||||
$this->processUploadedFiles($newForm); | |||||
$this->dispatch(EasyAdminEvents::PRE_PERSIST, ['entity' => $entity]); | |||||
$this->executeDynamicMethod('persist<EntityName>Entity', [$entity, $newForm]); | |||||
$this->dispatch(EasyAdminEvents::POST_PERSIST, ['entity' => $entity]); | |||||
$this->utils->addFlash('success', 'success.ticket.addMessage'); | |||||
if ($this->request->isXmlHttpRequest()) { | |||||
$response['type'] = 'success'; | |||||
$response['flashMessages'] = $this->utils->getFlashMessages(); | |||||
return new Response(json_encode($response)); | |||||
} else { | |||||
return $this->redirectToReferrer(); | |||||
} | |||||
} | |||||
$this->dispatch(EasyAdminEvents::POST_NEW, [ | |||||
'entity_fields' => $fields, | |||||
'form' => $newForm, | |||||
'entity' => $entity, | |||||
]); | |||||
$parameters = [ | |||||
'form' => $newForm->createView(), | |||||
'entity_fields' => $fields, | |||||
'entity' => $entity, | |||||
]; | |||||
if ($this->request->isXmlHttpRequest()) { | |||||
$response['modal'] = $this->renderView('@LcShop/backend/ticket/modal/create.html.twig', $parameters); | |||||
return new Response(json_encode($response)); | |||||
} else { | |||||
return $this->executeDynamicMethod('render<EntityName>Template', ['new', $this->entity['templates']['new'], $parameters]); | |||||
} | |||||
} | |||||
} | } |
use Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport; | use Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport; | ||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | use Symfony\Bridge\Doctrine\Form\Type\EntityType; | ||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType; | use Symfony\Component\Form\Extension\Core\Type\SubmitType; | ||||
use Symfony\Component\HttpFoundation\Session\SessionInterface; | |||||
use Symfony\Component\Security\Core\Security; | use Symfony\Component\Security\Core\Security; | ||||
use Symfony\Contracts\Translation\TranslatorInterface; | use Symfony\Contracts\Translation\TranslatorInterface; | ||||
{ | { | ||||
protected $creditUtils; | protected $creditUtils; | ||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator) | |||||
public function __construct(Security $security, UserManagerInterface $userManager, EntityManagerInterface $em, MailjetTransport $mailjetTransport, UtilsManager $utilsManager, TranslatorInterface $translator, SessionInterface $session) | |||||
{ | { | ||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator); | |||||
parent::__construct($security, $userManager, $em, $mailjetTransport, $utilsManager, $translator, $session); | |||||
$this->creditUtils = $utilsManager->getCreditUtils(); | $this->creditUtils = $utilsManager->getCreditUtils(); | ||||
} | } | ||||
public function addCreditHistoryAction(){ | public function addCreditHistoryAction(){ |
protected $orderUtils ; | protected $orderUtils ; | ||||
protected $userUtils ; | protected $userUtils ; | ||||
protected $priceUtils ; | protected $priceUtils ; | ||||
protected $sectionUtils ; | |||||
protected $mailUtils ; | |||||
protected $router ; | protected $router ; | ||||
protected $productFamilyRepository ; | protected $productFamilyRepository ; | ||||
protected $orderProductRepository ; | protected $orderProductRepository ; | ||||
$this->orderUtils = $utilsManager->getOrderUtils() ; | $this->orderUtils = $utilsManager->getOrderUtils() ; | ||||
$this->userUtils = $utilsManager->getUserUtils() ; | $this->userUtils = $utilsManager->getUserUtils() ; | ||||
$this->priceUtils = $utilsManager->getPriceUtils() ; | $this->priceUtils = $utilsManager->getPriceUtils() ; | ||||
$this->sectionUtils = $utilsManager->getSectionUtils() ; | |||||
$this->mailUtils = $utilsManager->getMailUtils() ; | |||||
$this->router = $router ; | $this->router = $router ; | ||||
$this->productFamilyRepository = $this->em->getRepository($this->em->getClassMetaData(ProductFamilyInterface::class)->getName()) ; | $this->productFamilyRepository = $this->em->getRepository($this->em->getClassMetaData(ProductFamilyInterface::class)->getName()) ; | ||||
$this->orderProductRepository = $this->em->getRepository($this->em->getClassMetaData(OrderProductInterface::class)->getName()) ; | $this->orderProductRepository = $this->em->getRepository($this->em->getClassMetaData(OrderProductInterface::class)->getName()) ; |
class ProductFamilyCategoriesType extends AbstractType | class ProductFamilyCategoriesType extends AbstractType | ||||
{ | { | ||||
protected $em; | protected $em; | ||||
protected $productCategoryRepository ; | |||||
protected $productCategoryRepository; | |||||
public function __construct(EntityManagerInterface $entityManager, ProductCategoryRepository $productCategoryRepository) | public function __construct(EntityManagerInterface $entityManager, ProductCategoryRepository $productCategoryRepository) | ||||
{ | { | ||||
$this->em = $entityManager; | $this->em = $entityManager; | ||||
$this->productCategoryRepository = $productCategoryRepository ; | |||||
$this->productCategoryRepository = $productCategoryRepository; | |||||
} | } | ||||
public function buildForm(FormBuilderInterface $builder, array $options) | public function buildForm(FormBuilderInterface $builder, array $options) | ||||
foreach ($categories as $category) { | foreach ($categories as $category) { | ||||
$builder->add('category_' . $category->getId(), CheckboxType::class, [ | $builder->add('category_' . $category->getId(), CheckboxType::class, [ | ||||
'label' => $category->getStatus() == 0 ? $category->getTitle() .' (hors ligne)': $category->getTitle() , | |||||
'label' => $category->getStatus() == 0 ? $category->getTitle() . ' (hors ligne)' : $category->getTitle(), | |||||
'data' => $currentProductCategories->contains($category), | 'data' => $currentProductCategories->contains($category), | ||||
'required' => false, | 'required' => false, | ||||
'disabled'=>true, | |||||
'attr'=>[ | |||||
'class'=>'none' | |||||
] | |||||
'disabled' => true, | |||||
'attr' => [ | |||||
'class' => 'none', | |||||
'data-section' => $category->getSection()->getId() | |||||
], | |||||
]); | ]); | ||||
$childrenCategories = $this->productCategoryRepository->findAllByParent($category, true); | $childrenCategories = $this->productCategoryRepository->findAllByParent($category, true); | ||||
foreach ($childrenCategories as $children) { | foreach ($childrenCategories as $children) { | ||||
$builder->add('category_children_' . $children->getId(), CheckboxType::class, [ | $builder->add('category_children_' . $children->getId(), CheckboxType::class, [ | ||||
'label' => $children->getStatus() == 0 ? $children->getTitle() .' (hors ligne)': $children->getTitle() , | |||||
'label' => $children->getStatus() == 0 ? $children->getTitle() . ' (hors ligne)' : $children->getTitle(), | |||||
'data' => $currentProductCategories->contains($children), | 'data' => $currentProductCategories->contains($children), | ||||
'required' => false | |||||
'required' => false, | |||||
'attr' => [ | |||||
'data-section' => $category->getSection()->getId() | |||||
], | |||||
]); | ]); | ||||
} | } | ||||
} | } |
$this->em = $entityManager; | $this->em = $entityManager; | ||||
$this->utils = $utils; | $this->utils = $utils; | ||||
} | } | ||||
public function buildForm(FormBuilderInterface $builder, array $options) | public function buildForm(FormBuilderInterface $builder, array $options) | ||||
{ | { | ||||
$builder->add('title', TextType::class, array( | $builder->add('title', TextType::class, array( | ||||
"required" => false | "required" => false | ||||
)) ; | |||||
)); | |||||
$builder->add('quantity', NumberType::class, array( | $builder->add('quantity', NumberType::class, array( | ||||
'label' => 'Quantité', | 'label' => 'Quantité', | ||||
'required'=>false, | |||||
'required' => false, | |||||
'attr' => [ | 'attr' => [ | ||||
'append_html' => 'g' | 'append_html' => 'g' | ||||
] | ] | ||||
$unitClass = $this->em->getClassMetadata(UnitInterface::class)->getName(); | $unitClass = $this->em->getClassMetadata(UnitInterface::class)->getName(); | ||||
$builder->add('unit', EntityType::class, array( | $builder->add('unit', EntityType::class, array( | ||||
'class'=> $unitClass, | |||||
'class' => $unitClass, | |||||
'data' => 0, | 'data' => 0, | ||||
'required'=>false, | |||||
'required' => false, | |||||
'choice_attr' => function ($choice) { | 'choice_attr' => function ($choice) { | ||||
return [ | return [ | ||||
'data-unit-reference' => $choice->getUnitReference(), | 'data-unit-reference' => $choice->getUnitReference(), | ||||
$builder->add('buyingPrice', NumberType::class, array( | $builder->add('buyingPrice', NumberType::class, array( | ||||
'label' => 'Prix d\'achat', | 'label' => 'Prix d\'achat', | ||||
'required'=>false | |||||
'required' => false | |||||
)); | )); | ||||
$builder->add('buyingPriceWithTax', NumberType::class, array( | $builder->add('buyingPriceWithTax', NumberType::class, array( | ||||
$builder->add('buyingPriceByRefUnit', NumberType::class, array( | $builder->add('buyingPriceByRefUnit', NumberType::class, array( | ||||
'label' => 'Prix d\'achat', | 'label' => 'Prix d\'achat', | ||||
'required'=>false | |||||
'required' => false | |||||
)); | )); | ||||
$builder->add('buyingPriceByRefUnitWithTax', NumberType::class, array( | $builder->add('buyingPriceByRefUnitWithTax', NumberType::class, array( | ||||
)); | )); | ||||
$builder->add('multiplyingFactor', NumberType::class, array( | $builder->add('multiplyingFactor', NumberType::class, array( | ||||
'label' => 'Coefficiant de multiplication', | 'label' => 'Coefficiant de multiplication', | ||||
'mapped'=>false, | |||||
'required'=>false | |||||
'mapped' => false, | |||||
'required' => false | |||||
)); | )); | ||||
$builder->add('priceByRefUnit', NumberType::class, array( | $builder->add('priceByRefUnit', NumberType::class, array( | ||||
'required'=>false | |||||
'required' => false | |||||
)); | )); | ||||
$builder->add('priceByRefUnitWithTax', NumberType::class, array( | $builder->add('priceByRefUnitWithTax', NumberType::class, array( | ||||
$builder->add('position', HiddenType::class); | $builder->add('position', HiddenType::class); | ||||
$builder->add('status', HiddenType::class); | $builder->add('status', HiddenType::class); | ||||
$builder->add('exportTitle', TextType::class, array( | $builder->add('exportTitle', TextType::class, array( | ||||
'required' =>false | |||||
'required' => false | |||||
)); | )); | ||||
$builder->add('exportNote', TextType::class, array( | $builder->add('exportNote', TextType::class, array( | ||||
'required' =>false | |||||
'required' => false | |||||
)); | )); | ||||
$reductionCartClass = $this->em->getClassMetadata(ReductionCartInterface::class)->getName(); | $reductionCartClass = $this->em->getClassMetadata(ReductionCartInterface::class)->getName(); | ||||
$reductionCartRepo = $this->em->getRepository(ReductionCartInterface::class); | $reductionCartRepo = $this->em->getRepository(ReductionCartInterface::class); | ||||
/* $builder->add('giftVoucherReductionCart', EntityType::class, array( | |||||
'required' =>false, | |||||
'class'=> $reductionCartClass, | |||||
'choices' => $reductionCartRepo->getOnlineReductionCart(), | |||||
));*/ | |||||
/* $builder->add('giftVoucherReductionCart', EntityType::class, array( | |||||
'required' =>false, | |||||
'class'=> $reductionCartClass, | |||||
'choices' => $reductionCartRepo->getOnlineReductionCart(), | |||||
));*/ | |||||
} | } | ||||
<?php | |||||
namespace Lc\ShopBundle\Form\Backend\Ticket; | |||||
use App\Entity\Product; | |||||
use Doctrine\ORM\EntityManagerInterface; | |||||
use Lc\ShopBundle\Context\CreditHistoryInterface; | |||||
use Lc\ShopBundle\Context\OrderProductInterface; | |||||
use Lc\ShopBundle\Context\OrderReductionCartInterface; | |||||
use Lc\ShopBundle\Context\OrderShopInterface; | |||||
use Lc\ShopBundle\Context\OrderUtilsInterface; | |||||
use Lc\ShopBundle\Context\ProductInterface; | |||||
use Lc\ShopBundle\Context\ReductionCartInterface; | |||||
use Lc\ShopBundle\Context\ReductionCreditInterface; | |||||
use Lc\ShopBundle\Context\TicketInterface; | |||||
use Lc\ShopBundle\Context\TicketMessageInterface; | |||||
use Lc\ShopBundle\Form\DataTransformer\ProductToIdTransformer; | |||||
use Lc\ShopBundle\Model\CreditHistory; | |||||
use Lc\ShopBundle\Model\Ticket; | |||||
use Lc\ShopBundle\Services\Utils; | |||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | |||||
use Symfony\Component\Form\AbstractType; | |||||
use Symfony\Component\Form\Extension\Core\Type\ButtonType; | |||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType; | |||||
use Symfony\Component\Form\Extension\Core\Type\DateType; | |||||
use Symfony\Component\Form\Extension\Core\Type\HiddenType; | |||||
use Symfony\Component\Form\Extension\Core\Type\MoneyType; | |||||
use Symfony\Component\Form\Extension\Core\Type\NumberType; | |||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType; | |||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType; | |||||
use Symfony\Component\Form\Extension\Core\Type\TextType; | |||||
use Symfony\Component\Form\FormBuilderInterface; | |||||
use Symfony\Component\Form\FormEvent; | |||||
use Symfony\Component\Form\FormEvents; | |||||
use Symfony\Component\OptionsResolver\OptionsResolver; | |||||
class TicketTypeType extends AbstractType | |||||
{ | |||||
protected $em; | |||||
public function __construct(EntityManagerInterface $em) | |||||
{ | |||||
$this->em = $em; | |||||
} | |||||
public function buildForm(FormBuilderInterface $builder, array $options) | |||||
{ | |||||
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event){ | |||||
$builder = $event->getForm()->getParent(); | |||||
$builder->add('type', ChoiceType::class, [ | |||||
'label' => 'field.Ticket.type', | |||||
'multiple' => false, | |||||
'expanded' => false, | |||||
'choices' => [ | |||||
'field.Ticket.typeOptions.' . Ticket::TYPE_MESSAGE_FROM_PDL => Ticket::TYPE_MESSAGE_FROM_PDL, | |||||
'field.Ticket.typeOptions.' . Ticket::TYPE_GENERAL_QUESTION => Ticket::TYPE_GENERAL_QUESTION, | |||||
'field.Ticket.typeOptions.' . Ticket::TYPE_PRODUCT_UNAVAILABLE => Ticket::TYPE_PRODUCT_UNAVAILABLE, | |||||
'field.Ticket.typeOptions.' . Ticket::TYPE_PRODUCT_ERROR => Ticket::TYPE_PRODUCT_ERROR, | |||||
'field.Ticket.typeOptions.' . Ticket::TYPE_TECHNICAL_PROBLEM => Ticket::TYPE_TECHNICAL_PROBLEM, | |||||
'field.Ticket.typeOptions.' . Ticket::TYPE_POULTRY_BOOKING => Ticket::TYPE_POULTRY_BOOKING, | |||||
], | |||||
'translation_domain' => 'lcshop', | |||||
]); | |||||
}); | |||||
} | |||||
public function configureOptions(OptionsResolver $resolver) | |||||
{ | |||||
$resolver->setDefaults([ | |||||
'data_class' => $this->em->getClassMetadata(TicketInterface::class)->getName(), | |||||
'translation_domain' => 'lcshop' | |||||
]); | |||||
} | |||||
} |
'translation_domain' => 'lcshop', | 'translation_domain' => 'lcshop', | ||||
]) | ]) | ||||
->add('subscribeNewsletter', CheckboxType::class, [ | ->add('subscribeNewsletter', CheckboxType::class, [ | ||||
'data' => true, | |||||
'label' => 'field.default.subscribeNewsletter', | 'label' => 'field.default.subscribeNewsletter', | ||||
'required' => false, | 'required' => false, | ||||
'mapped' => false, | 'mapped' => false, | ||||
'translation_domain' => 'lcshop', | 'translation_domain' => 'lcshop', | ||||
'help' => 'Un seul mail par semaine qui annonce l’ouverture des ventes, les nouveautés et promotions de la semaine ainsi que des informations utiles.' | |||||
]); | ]); | ||||
// captcha | // captcha |
*/ | */ | ||||
protected $updatedBy; | protected $updatedBy; | ||||
/** | /** | ||||
* @ORM\OneToMany(targetEntity="Lc\ShopBundle\Context\TicketInterface", mappedBy="orderShop") | * @ORM\OneToMany(targetEntity="Lc\ShopBundle\Context\TicketInterface", mappedBy="orderShop") | ||||
*/ | */ | ||||
protected $tickets; | protected $tickets; | ||||
/** | |||||
* @ORM\ManyToOne(targetEntity="Lc\ShopBundle\Context\SectionInterface", inversedBy="orderShops") | |||||
* @ORM\JoinColumn(nullable=false) | |||||
*/ | |||||
protected $section; | |||||
public function __construct() | public function __construct() | ||||
{ | { | ||||
$this->orderStatusHistories = new ArrayCollection(); | $this->orderStatusHistories = new ArrayCollection(); | ||||
return false ; | return false ; | ||||
} | } | ||||
public function getSection(): ?Section | |||||
{ | |||||
return $this->section; | |||||
} | |||||
public function setSection(?Section $section): self | |||||
{ | |||||
$this->section = $section; | |||||
return $this; | |||||
} | |||||
} | } |
return $this->getTaxRate() ; | return $this->getTaxRate() ; | ||||
} | } | ||||
public function getBuyingPriceInherited(): ?float | |||||
{ | |||||
return $this->getBuyingPrice() ; | |||||
} | |||||
public function getBuyingPrice(): ?float | public function getBuyingPrice(): ?float | ||||
{ | { | ||||
return $this->buyingPrice; | return $this->buyingPrice; |
namespace Lc\ShopBundle\Model; | namespace Lc\ShopBundle\Model; | ||||
use App\Entity\Hub; | |||||
use App\Entity\ProductFamily; | |||||
use Doctrine\Common\Collections\ArrayCollection; | use Doctrine\Common\Collections\ArrayCollection; | ||||
use Doctrine\Common\Collections\Collection; | use Doctrine\Common\Collections\Collection; | ||||
use Doctrine\ORM\Mapping as ORM; | use Doctrine\ORM\Mapping as ORM; | ||||
protected $childrens; | protected $childrens; | ||||
/** | /** | ||||
* @ORM\ManyToMany(targetEntity="App\Entity\ProductFamily", mappedBy="productCategories") | |||||
* @ORM\ManyToMany(targetEntity="Lc\ShopBundle\Context\ProductFamilyInterface", mappedBy="productCategories") | |||||
*/ | */ | ||||
protected $productFamilies; | protected $productFamilies; | ||||
*/ | */ | ||||
protected $saleStatus; | protected $saleStatus; | ||||
/** | |||||
* @ORM\ManyToOne(targetEntity="Lc\ShopBundle\Context\SectionInterface", inversedBy="productCategories") | |||||
* @ORM\JoinColumn(nullable=false) | |||||
*/ | |||||
protected $section; | |||||
public function __construct() | public function __construct() | ||||
{ | { | ||||
$this->childrens = new ArrayCollection(); | $this->childrens = new ArrayCollection(); | ||||
public function __toString() | public function __toString() | ||||
{ | { | ||||
// TODO: Implement __toString() method. | |||||
return $this->getTitle(); | |||||
$parent = $this->getParent() ; | |||||
$title = $parent ? $parent->getTitle().' - ' : '' ; | |||||
$title .= $this->getTitle() ; | |||||
return $title ; | |||||
} | } | ||||
public function getParent(): ?self | public function getParent(): ?self | ||||
*/ | */ | ||||
public function getChildrens(): Collection | public function getChildrens(): Collection | ||||
{ | { | ||||
return $this->childrens; | |||||
//TODO les lignes ci-dessous ne devraient pas exister, sert à résoudre le problème d'ordre dans le menu | |||||
$iterator = $this->childrens->getIterator(); | |||||
$iterator->uasort(function ($a, $b) { | |||||
return ($a->getPosition() < $b->getPosition()) ? -1 : 1; | |||||
}); | |||||
return new ArrayCollection(iterator_to_array($iterator)); | |||||
} | } | ||||
public function addChildren(self $productCategory): self | public function addChildren(self $productCategory): self | ||||
return $this; | return $this; | ||||
} | } | ||||
public function getSection(): ?Section | |||||
{ | |||||
return $this->section; | |||||
} | |||||
public function setSection(?Section $section): self | |||||
{ | |||||
$this->section = $section; | |||||
return $this; | |||||
} | |||||
} | } |
*/ | */ | ||||
protected $behaviorPrice; | protected $behaviorPrice; | ||||
/** | /** | ||||
* @ORM\Column(type="boolean") | * @ORM\Column(type="boolean") | ||||
*/ | */ | ||||
protected $saleStatus; | protected $saleStatus; | ||||
/** | |||||
* @ORM\ManyToMany(targetEntity="Lc\ShopBundle\Context\SectionInterface", inversedBy="productFamilies") | |||||
*/ | |||||
protected $sections; | |||||
public function __construct() | public function __construct() | ||||
{ | { | ||||
$this->productCategories = new ArrayCollection(); | $this->productCategories = new ArrayCollection(); | ||||
return $this; | return $this; | ||||
} | } | ||||
/** | |||||
* @return Collection|Section[] | |||||
*/ | |||||
public function getSections(): Collection | |||||
{ | |||||
return $this->sections; | |||||
} | |||||
public function addSection(Section $section): self | |||||
{ | |||||
if (!$this->sections->contains($section)) { | |||||
$this->sections[] = $section; | |||||
} | |||||
return $this; | |||||
} | |||||
public function removeSection(Section $section): self | |||||
{ | |||||
if ($this->sections->contains($section)) { | |||||
$this->sections->removeElement($section); | |||||
} | |||||
return $this; | |||||
} | |||||
public function getFieldBuyingPrice() | |||||
{ | |||||
if($this->getBehaviorPrice() === self::BEHAVIOR_PRICE_BY_PIECE) { | |||||
return 'buyingPrice' ; | |||||
} | |||||
elseif($this->getBehaviorPrice() === self::BEHAVIOR_PRICE_BY_REFERENCE_UNIT) { | |||||
return 'buyingPriceByRefUnit' ; | |||||
} | |||||
} | |||||
public function getFieldPrice() | |||||
{ | |||||
if($this->getBehaviorPrice() === self::BEHAVIOR_PRICE_BY_PIECE) { | |||||
return 'price' ; | |||||
} | |||||
elseif($this->getBehaviorPrice() === self::BEHAVIOR_PRICE_BY_REFERENCE_UNIT) { | |||||
return 'priceByRefUnit' ; | |||||
} | |||||
} | |||||
} | } |
*/ | */ | ||||
protected $propertyExpirationDate; | protected $propertyExpirationDate; | ||||
public function getBuyingPriceByRefUnit(): ?float | public function getBuyingPriceByRefUnit(): ?float | ||||
{ | { | ||||
return $this->buyingPriceByRefUnit; | return $this->buyingPriceByRefUnit; | ||||
} | } | ||||
public function getBuyingPriceByRefUnitInherited(): ?float | |||||
{ | |||||
return $this->getBuyingPriceByRefUnit() ; | |||||
} | |||||
public function setBuyingPriceByRefUnit(?float $buyingPriceByRefUnit): self | public function setBuyingPriceByRefUnit(?float $buyingPriceByRefUnit): self | ||||
{ | { | ||||
$this->buyingPriceByRefUnit = $buyingPriceByRefUnit; | $this->buyingPriceByRefUnit = $buyingPriceByRefUnit; |
protected $uncombinableTypes = []; | protected $uncombinableTypes = []; | ||||
/** | /** | ||||
* @ORM\Column(type="integer") | |||||
* @ORM\Column(type="integer", nullable=true) | |||||
*/ | */ | ||||
protected $availableQuantityPerCode; | protected $availableQuantityPerCode; | ||||
public function __toString() | public function __toString() |
<?php | |||||
namespace Lc\ShopBundle\Model; | |||||
use App\Entity\Hub; | |||||
use Doctrine\Common\Collections\ArrayCollection; | |||||
use Doctrine\Common\Collections\Collection; | |||||
use Doctrine\ORM\Mapping as ORM; | |||||
use Lc\ShopBundle\Context\FilterMerchantInterface; | |||||
/** | |||||
* @ORM\MappedSuperclass() | |||||
*/ | |||||
abstract class Section extends AbstractDocumentEntity implements FilterMerchantInterface | |||||
{ | |||||
/** | |||||
* @ORM\ManyToOne(targetEntity="Lc\ShopBundle\Context\MerchantInterface") | |||||
* @ORM\JoinColumn(nullable=false) | |||||
*/ | |||||
protected $merchant; | |||||
/** | |||||
* @ORM\Column(type="string", length=32) | |||||
*/ | |||||
protected $cycle; | |||||
const SECTION_CYCLE_DAY = 'day' ; | |||||
const SECTION_CYCLE_WEEK = 'week' ; | |||||
const SECTION_CYCLE_MONTH = 'month' ; | |||||
const SECTION_CYCLE_YEAR = 'year' ; | |||||
/** | |||||
* @ORM\ManyToMany(targetEntity="Lc\ShopBundle\Context\ProductFamilyInterface", mappedBy="sections") | |||||
*/ | |||||
protected $productFamilies; | |||||
/** | |||||
* @ORM\OneToMany(targetEntity="Lc\ShopBundle\Context\OrderShopInterface", mappedBy="section") | |||||
*/ | |||||
protected $orderShops; | |||||
/** | |||||
* @ORM\OneToMany(targetEntity="Lc\ShopBundle\Context\ProductCategoryInterface", mappedBy="section") | |||||
*/ | |||||
protected $productCategories; | |||||
public function __construct() | |||||
{ | |||||
$this->productFamilies = new ArrayCollection(); | |||||
$this->orderShops = new ArrayCollection(); | |||||
} | |||||
public function __toString() | |||||
{ | |||||
return $this->getTitle(); | |||||
} | |||||
public function getMerchant(): ?Hub | |||||
{ | |||||
return $this->merchant; | |||||
} | |||||
public function setMerchant(?Hub $merchant): self | |||||
{ | |||||
$this->merchant = $merchant; | |||||
return $this; | |||||
} | |||||
public function getCycle(): ?string | |||||
{ | |||||
return $this->cycle; | |||||
} | |||||
public function setCycle(string $cycle): self | |||||
{ | |||||
$this->cycle = $cycle; | |||||
return $this; | |||||
} | |||||
/** | |||||
* @return Collection|ProductFamily[] | |||||
*/ | |||||
public function getProductFamilies(): Collection | |||||
{ | |||||
return $this->productFamilies; | |||||
} | |||||
public function addProductFamily(ProductFamily $productFamily): self | |||||
{ | |||||
if (!$this->productFamilies->contains($productFamily)) { | |||||
$this->productFamilies[] = $productFamily; | |||||
$productFamily->addSection($this); | |||||
} | |||||
return $this; | |||||
} | |||||
public function removeProductFamily(ProductFamily $productFamily): self | |||||
{ | |||||
if ($this->productFamilies->contains($productFamily)) { | |||||
$this->productFamilies->removeElement($productFamily); | |||||
$productFamily->removeSection($this); | |||||
} | |||||
return $this; | |||||
} | |||||
/** | |||||
* @return Collection|OrderShop[] | |||||
*/ | |||||
public function getOrderShops(): Collection | |||||
{ | |||||
return $this->orderShops; | |||||
} | |||||
public function addOrderShop(OrderShop $orderShop): self | |||||
{ | |||||
if (!$this->orderShops->contains($orderShop)) { | |||||
$this->orderShops[] = $orderShop; | |||||
$orderShop->setSection($this); | |||||
} | |||||
return $this; | |||||
} | |||||
public function removeOrderShop(OrderShop $orderShop): self | |||||
{ | |||||
if ($this->orderShops->contains($orderShop)) { | |||||
$this->orderShops->removeElement($orderShop); | |||||
// set the owning side to null (unless already changed) | |||||
if ($orderShop->getSection() === $this) { | |||||
$orderShop->setSection(null); | |||||
} | |||||
} | |||||
return $this; | |||||
} | |||||
/** | |||||
* @return Collection|ProductCategory[] | |||||
*/ | |||||
public function getProductCategories(): Collection | |||||
{ | |||||
return $this->productCategories; | |||||
} | |||||
public function addProductCategory(ProductCategory $productCategory): self | |||||
{ | |||||
if (!$this->productCategories->contains($productCategory)) { | |||||
$this->productCategories[] = $productCategory; | |||||
$productCategory->setSection($this); | |||||
} | |||||
return $this; | |||||
} | |||||
public function removeProductCategory(ProductCategory $productCategory): self | |||||
{ | |||||
if ($this->productCategories->contains($productCategory)) { | |||||
$this->productCategories->removeElement($productCategory); | |||||
// set the owning side to null (unless already changed) | |||||
if ($productCategory->getSection() === $this) { | |||||
$productCategory->setSection(null); | |||||
} | |||||
} | |||||
return $this; | |||||
} | |||||
} |
const TYPE_TECHNICAL_PROBLEM = 'technical-problem' ; | const TYPE_TECHNICAL_PROBLEM = 'technical-problem' ; | ||||
const TYPE_GENERAL_QUESTION = 'general-question' ; | const TYPE_GENERAL_QUESTION = 'general-question' ; | ||||
const TYPE_POULTRY_BOOKING = 'poultry-booking' ; | const TYPE_POULTRY_BOOKING = 'poultry-booking' ; | ||||
const TYPE_MESSAGE_FROM_PDL = 'message-from-pdl' ; | |||||
const TICKET_STATUS_OPEN = 'open' ; | const TICKET_STATUS_OPEN = 'open' ; |
$query->select( $params['select']); | $query->select( $params['select']); | ||||
} | } | ||||
if (isset($params['section'])) { | |||||
$query = $query->andWhere('e.section = :section')->setParameter('section', $params['section']); | |||||
} | |||||
if (isset($params['dateStart']) || isset($params['dateEnd'])) { | if (isset($params['dateStart']) || isset($params['dateEnd'])) { | ||||
$params['dateField'] = isset($params['dateField']) ? $params['dateField'] : 'validationDate'; | $params['dateField'] = isset($params['dateField']) ? $params['dateField'] : 'validationDate'; | ||||
} | } |
return $query->getQuery()->getOneOrNullResult() ; | return $query->getQuery()->getOneOrNullResult() ; | ||||
} | } | ||||
public function findOneByDevAlias($devAlias) | |||||
{ | |||||
$query = $this->findByMerchantQuery() ; | |||||
$query->andWhere('e.devAlias = :devAlias')->setParameter('devAlias',$devAlias) ; | |||||
return $query->getQuery()->getOneOrNullResult() ; | |||||
} | |||||
public function findAllParents($withOffline = false) | public function findAllParents($withOffline = false) | ||||
{ | { | ||||
$query = $this->findByMerchantQuery() | $query = $this->findByMerchantQuery() | ||||
return $query->getQuery()->getResult(); | return $query->getQuery()->getResult(); | ||||
} | } | ||||
public function findAllByParent($parentCategory, $withOffline = false, $withEmptyCategories = true) | |||||
public function findAllByParent($parentCategory, $withOffline = false, $withEmptyCategories = true, $filterBySpecificDay = false) | |||||
{ | { | ||||
$query = $this->createQueryBuilder('e'); | $query = $this->createQueryBuilder('e'); | ||||
$query->andWhere('e.parent = :idParentCategory'); | $query->andWhere('e.parent = :idParentCategory'); | ||||
$query->andWhere('pf.status = 1') ; | $query->andWhere('pf.status = 1') ; | ||||
} | } | ||||
if($filterBySpecificDay) { | |||||
$query->andWhere('e.displaySpecificDay IS NULL OR e.displaySpecificDay = :dayToday') ; | |||||
$query->setParameter('dayToday', date('N')) ; | |||||
} | |||||
$query->addOrderBy('e.position', 'ASC') ; | $query->addOrderBy('e.position', 'ASC') ; | ||||
return $query->getQuery()->getResult(); | return $query->getQuery()->getResult(); |
$query = $this->findByMerchantQuery() ; | $query = $this->findByMerchantQuery() ; | ||||
$query = $this->joinRelations($query) ; | $query = $this->joinRelations($query) ; | ||||
$query->andWhere('e.status = 1') ; | $query->andWhere('e.status = 1') ; | ||||
$query->orderBy('RAND()'); | |||||
return $query->getQuery()->getResult() ; | return $query->getQuery()->getResult() ; | ||||
} | } | ||||
$query->andWhere('e.status = 1'); | $query->andWhere('e.status = 1'); | ||||
$query->andWhere(':now <= e.propertyNoveltyExpirationDate') | $query->andWhere(':now <= e.propertyNoveltyExpirationDate') | ||||
->setParameter('now', new \DateTime()) ; | ->setParameter('now', new \DateTime()) ; | ||||
$query->orderBy('e.createdAt', 'DESC'); | |||||
$query->orderBy('RAND()'); | |||||
return $query->getQuery()->getResult() ; | return $query->getQuery()->getResult() ; | ||||
} | } | ||||
return $query->getQuery()->getResult() ; | return $query->getQuery()->getResult() ; | ||||
} | } | ||||
public function getProductFamiliesBySection($section, $maxResults = false, $sortField = 'productCategories.position', $sortDirection = 'ASC') | |||||
{ | |||||
$query = $this->findByMerchantQuery() ; | |||||
$query = $this->joinRelations($query) ; | |||||
$query->andWhere('e.status = 1'); | |||||
$query->andWhere(':section MEMBER OF e.sections') | |||||
->setParameter('section', $section) ; | |||||
$query->leftJoin('e.productCategories', 'productCategories'); | |||||
if($sortField){ | |||||
$query->orderBy($sortField,$sortDirection); | |||||
} | |||||
if($maxResults) { | |||||
$query->setMaxResults($maxResults) ; | |||||
} | |||||
return $query->getQuery()->getResult() ; | |||||
} | |||||
} | } |
<?php | |||||
namespace Lc\ShopBundle\Repository; | |||||
use Lc\ShopBundle\Context\SectionInterface; | |||||
use Lc\ShopBundle\Context\DefaultRepositoryInterface; | |||||
/** | |||||
* @method SectionInterface|null find($id, $lockMode = null, $lockVersion = null) | |||||
* @method SectionInterface|null findOneBy(array $criteria, array $orderBy = null) | |||||
* @method SectionInterface[] findAll() | |||||
* @method SectionInterface[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) | |||||
*/ | |||||
class SectionRepository extends BaseRepository implements DefaultRepositoryInterface | |||||
{ | |||||
public function getInterfaceClass() | |||||
{ | |||||
return SectionInterface::class; | |||||
} | |||||
// /** | |||||
// * @return Address[] Returns an array of Address objects | |||||
// */ | |||||
/* | |||||
public function findByExampleField($value) | |||||
{ | |||||
return $this->createQueryBuilder('a') | |||||
->andWhere('a.exampleField = :val') | |||||
->setParameter('val', $value) | |||||
->orderBy('a.id', 'ASC') | |||||
->setMaxResults(10) | |||||
->getQuery() | |||||
->getResult() | |||||
; | |||||
} | |||||
*/ | |||||
/* | |||||
public function findOneBySomeField($value): ?Address | |||||
{ | |||||
return $this->createQueryBuilder('a') | |||||
->andWhere('a.exampleField = :val') | |||||
->setParameter('val', $value) | |||||
->getQuery() | |||||
->getOneOrNullResult() | |||||
; | |||||
} | |||||
*/ | |||||
} | |||||
/* line 60, ../../sass/backend/custom.scss */ | /* line 60, ../../sass/backend/custom.scss */ | ||||
table th.sorting_asc, table th.sorting_desc { | table th.sorting_asc, table th.sorting_desc { | ||||
border-top: 3px solid var(--success); | |||||
border-top: 2px solid var(--success); | |||||
} | } | ||||
/* line 61, ../../sass/backend/custom.scss */ | /* line 61, ../../sass/backend/custom.scss */ | ||||
.card-body table.lc-table-list th.sorted, table th.sorting_asc, table th.sorting_desc { | |||||
border-top: 2px solid var(--success); | |||||
.card-body table.lc-table-list th.filtered { | |||||
border-top: 2px solid var(--primary); | |||||
} | } | ||||
/*.card-body table.lc-table-list th{border-top:3px solid var(--success);}*/ | /*.card-body table.lc-table-list th{border-top:3px solid var(--success);}*/ | ||||
/* line 63, ../../sass/backend/custom.scss */ | /* line 63, ../../sass/backend/custom.scss */ | ||||
table th.filtered { | table th.filtered { | ||||
border-top: 3px solid var(--primary); | |||||
border-top: 2px solid var(--primary); | |||||
} | |||||
/* line 64, ../../sass/backend/custom.scss */ | |||||
.card-body table.lc-table-list th.sorted, table th.sorting_asc, table th.sorting_desc { | |||||
border-top: 2px solid var(--success); | |||||
} | |||||
/* line 65, ../../sass/backend/custom.scss */ | |||||
.card-body table.lc-table-list th.sorted.filtered { | |||||
border-top: 0px; | |||||
position: relative; | |||||
} | } | ||||
/* line 66, ../../sass/backend/custom.scss */ | /* line 66, ../../sass/backend/custom.scss */ | ||||
.card-body table.lc-table-list th.sorted.filtered:after { | |||||
content: ''; | |||||
height: 2px; | |||||
position: absolute; | |||||
left: 0; | |||||
width: 100%; | |||||
right: 0; | |||||
top: -1px; | |||||
background: linear-gradient(to right, var(--success) 0%, var(--success) 50%, var(--primary) 50%, var(--primary) 100%); | |||||
} | |||||
/* line 69, ../../sass/backend/custom.scss */ | |||||
.lc-table-list thead a { | .lc-table-list thead a { | ||||
color: #212529; | color: #212529; | ||||
} | } | ||||
/* line 67, ../../sass/backend/custom.scss */ | |||||
/* line 70, ../../sass/backend/custom.scss */ | |||||
.table-filters-line th { | .table-filters-line th { | ||||
font-weight: 400; | font-weight: 400; | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* line 69, ../../sass/backend/custom.scss */ | |||||
/* line 72, ../../sass/backend/custom.scss */ | |||||
#list_filter_id { | #list_filter_id { | ||||
width: 60px; | width: 60px; | ||||
} | } | ||||
/* line 70, ../../sass/backend/custom.scss */ | |||||
/* line 73, ../../sass/backend/custom.scss */ | |||||
.lc-table-list .date-range { | .lc-table-list .date-range { | ||||
width: 130px; | width: 130px; | ||||
} | } | ||||
/* line 72, ../../sass/backend/custom.scss */ | |||||
/* line 75, ../../sass/backend/custom.scss */ | |||||
th.actions, td.actions { | th.actions, td.actions { | ||||
white-space: nowrap; | white-space: nowrap; | ||||
text-align: right; | text-align: right; | ||||
} | } | ||||
/* line 74, ../../sass/backend/custom.scss */ | |||||
/* line 77, ../../sass/backend/custom.scss */ | |||||
.table td, .table th { | .table td, .table th { | ||||
padding: 0.35rem; | padding: 0.35rem; | ||||
} | } | ||||
/* line 75, ../../sass/backend/custom.scss */ | |||||
/* line 78, ../../sass/backend/custom.scss */ | |||||
.delivery-field .form-group { | .delivery-field .form-group { | ||||
display: inline-block; | display: inline-block; | ||||
margin-bottom: 0px; | margin-bottom: 0px; | ||||
margin-right: 15px; | margin-right: 15px; | ||||
} | } | ||||
/* line 76, ../../sass/backend/custom.scss */ | |||||
/* line 79, ../../sass/backend/custom.scss */ | |||||
.delivery-field .form-group .form-control { | .delivery-field .form-group .form-control { | ||||
width: 150px; | width: 150px; | ||||
} | } | ||||
/* line 78, ../../sass/backend/custom.scss */ | |||||
/* line 81, ../../sass/backend/custom.scss */ | |||||
table th input { | table th input { | ||||
width: 100%; | width: 100%; | ||||
} | } | ||||
/* line 79, ../../sass/backend/custom.scss */ | |||||
/* line 82, ../../sass/backend/custom.scss */ | |||||
table th .select2-container--default .select2-selection--single { | table th .select2-container--default .select2-selection--single { | ||||
padding: 0.3rem 0.4rem; | padding: 0.3rem 0.4rem; | ||||
} | } | ||||
/************************ LOGIN PAGE *********************/ | /************************ LOGIN PAGE *********************/ | ||||
/* line 82, ../../sass/backend/custom.scss */ | |||||
/* line 85, ../../sass/backend/custom.scss */ | |||||
.login-logo { | .login-logo { | ||||
display: block; | display: block; | ||||
margin: auto; | margin: auto; | ||||
} | } | ||||
/************************ form error *********************/ | /************************ form error *********************/ | ||||
/* line 85, ../../sass/backend/custom.scss */ | |||||
/* line 88, ../../sass/backend/custom.scss */ | |||||
.form-sent .form-control:invalid { | .form-sent .form-control:invalid { | ||||
border-color: #dc3545; | border-color: #dc3545; | ||||
padding-right: 2.25rem; | padding-right: 2.25rem; | ||||
background-size: calc(.75em + .375rem) calc(.75em + .375rem); | background-size: calc(.75em + .375rem) calc(.75em + .375rem); | ||||
} | } | ||||
/* line 86, ../../sass/backend/custom.scss */ | |||||
/* line 89, ../../sass/backend/custom.scss */ | |||||
.form-sent select.form-control:invalid + .select2 .select2-selection { | .form-sent select.form-control:invalid + .select2 .select2-selection { | ||||
border-color: #dc3545; | border-color: #dc3545; | ||||
} | } | ||||
/* line 87, ../../sass/backend/custom.scss */ | |||||
/* line 90, ../../sass/backend/custom.scss */ | |||||
.form-sent select.form-control:invalid + .select2 .select2-selection b { | .form-sent select.form-control:invalid + .select2 .select2-selection b { | ||||
border-color: #dc3545 transparent transparent transparent; | border-color: #dc3545 transparent transparent transparent; | ||||
} | } | ||||
/*CUSTOM Checkbox | /*CUSTOM Checkbox | ||||
/* Customize the label (the container) */ | /* Customize the label (the container) */ | ||||
/* line 92, ../../sass/backend/custom.scss */ | |||||
/* line 95, ../../sass/backend/custom.scss */ | |||||
.form-check-label { | .form-check-label { | ||||
display: block; | display: block; | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* Hide the browser's default checkbox */ | /* Hide the browser's default checkbox */ | ||||
/* line 94, ../../sass/backend/custom.scss */ | |||||
/* line 97, ../../sass/backend/custom.scss */ | |||||
.form-check-label input { | .form-check-label input { | ||||
position: absolute; | position: absolute; | ||||
opacity: 0; | opacity: 0; | ||||
} | } | ||||
/* Create a custom checkbox */ | /* Create a custom checkbox */ | ||||
/* line 97, ../../sass/backend/custom.scss */ | |||||
/* line 100, ../../sass/backend/custom.scss */ | |||||
.form-check { | .form-check { | ||||
padding-left: 0px; | padding-left: 0px; | ||||
} | } | ||||
/* line 99, ../../sass/backend/custom.scss */ | |||||
/* line 102, ../../sass/backend/custom.scss */ | |||||
.form-sent .form-check-label input:invalid ~ .checkmark { | .form-sent .form-check-label input:invalid ~ .checkmark { | ||||
border-color: #dc3545; | border-color: #dc3545; | ||||
} | } | ||||
/* line 100, ../../sass/backend/custom.scss */ | |||||
/* line 103, ../../sass/backend/custom.scss */ | |||||
.form-check-label input:disabled ~ .checkmark { | .form-check-label input:disabled ~ .checkmark { | ||||
display: none; | display: none; | ||||
} | } | ||||
/* line 101, ../../sass/backend/custom.scss */ | |||||
/* line 104, ../../sass/backend/custom.scss */ | |||||
.form-check-label input ~ .checkmark { | .form-check-label input ~ .checkmark { | ||||
position: absolute; | position: absolute; | ||||
top: 0; | top: 0; | ||||
border: 1px solid var(--primary); | border: 1px solid var(--primary); | ||||
} | } | ||||
/* line 102, ../../sass/backend/custom.scss */ | |||||
/* line 105, ../../sass/backend/custom.scss */ | |||||
.form-check-label.big input ~ .checkmark { | .form-check-label.big input ~ .checkmark { | ||||
height: 21px; | height: 21px; | ||||
width: 21px; | width: 21px; | ||||
} | } | ||||
/* line 103, ../../sass/backend/custom.scss */ | |||||
/* line 106, ../../sass/backend/custom.scss */ | |||||
.form-check-label input[type="checkbox"] ~ .checkmark { | .form-check-label input[type="checkbox"] ~ .checkmark { | ||||
top: 2px; | top: 2px; | ||||
} | } | ||||
/* line 104, ../../sass/backend/custom.scss */ | |||||
/* line 107, ../../sass/backend/custom.scss */ | |||||
.form-check-label input[type="radio"] ~ .checkmark { | .form-check-label input[type="radio"] ~ .checkmark { | ||||
top: 3px; | top: 3px; | ||||
border-radius: 50%; | border-radius: 50%; | ||||
} | } | ||||
/* line 105, ../../sass/backend/custom.scss */ | |||||
/* line 108, ../../sass/backend/custom.scss */ | |||||
.form-check-label:hover input ~ .checkmark { | .form-check-label:hover input ~ .checkmark { | ||||
background-color: #ccc; | background-color: #ccc; | ||||
} | } | ||||
/* When the checkbox is checked, add a blue background */ | /* When the checkbox is checked, add a blue background */ | ||||
/* line 107, ../../sass/backend/custom.scss */ | |||||
/* line 110, ../../sass/backend/custom.scss */ | |||||
.form-check-label input:checked ~ .checkmark { | .form-check-label input:checked ~ .checkmark { | ||||
background-color: var(--primary); | background-color: var(--primary); | ||||
} | } | ||||
/* Create the checkmark/indicator (hidden when not checked) */ | /* Create the checkmark/indicator (hidden when not checked) */ | ||||
/* line 109, ../../sass/backend/custom.scss */ | |||||
/* line 112, ../../sass/backend/custom.scss */ | |||||
.form-check-label .checkmark:after { | .form-check-label .checkmark:after { | ||||
content: ""; | content: ""; | ||||
position: absolute; | position: absolute; | ||||
} | } | ||||
/* Show the checkmark when checked */ | /* Show the checkmark when checked */ | ||||
/* line 111, ../../sass/backend/custom.scss */ | |||||
/* line 114, ../../sass/backend/custom.scss */ | |||||
.form-check-label input:checked ~ .checkmark:after { | .form-check-label input:checked ~ .checkmark:after { | ||||
display: block; | display: block; | ||||
} | } | ||||
/* Style the checkmark/indicator */ | /* Style the checkmark/indicator */ | ||||
/* line 113, ../../sass/backend/custom.scss */ | |||||
/* line 116, ../../sass/backend/custom.scss */ | |||||
.form-check-label .checkmark:after { | .form-check-label .checkmark:after { | ||||
left: 7px; | left: 7px; | ||||
top: 3px; | top: 3px; | ||||
transform: rotate(45deg); | transform: rotate(45deg); | ||||
} | } | ||||
/* line 114, ../../sass/backend/custom.scss */ | |||||
/* line 117, ../../sass/backend/custom.scss */ | |||||
.form-check-label input[type="checkbox"] ~ .checkmark:after { | .form-check-label input[type="checkbox"] ~ .checkmark:after { | ||||
left: 6px; | left: 6px; | ||||
top: 2px; | top: 2px; | ||||
transform: rotate(45deg); | transform: rotate(45deg); | ||||
} | } | ||||
/* line 115, ../../sass/backend/custom.scss */ | |||||
/* line 118, ../../sass/backend/custom.scss */ | |||||
.form-check-label input[type="radio"] ~ .checkmark:after { | .form-check-label input[type="radio"] ~ .checkmark:after { | ||||
top: 4px; | top: 4px; | ||||
left: 4px; | left: 4px; | ||||
background: white; | background: white; | ||||
} | } | ||||
/* line 117, ../../sass/backend/custom.scss */ | |||||
/* line 120, ../../sass/backend/custom.scss */ | |||||
.form-check-label.big input[type="checkbox"] ~ .checkmark:after { | .form-check-label.big input[type="checkbox"] ~ .checkmark:after { | ||||
left: 7px; | left: 7px; | ||||
top: 3px; | top: 3px; | ||||
} | } | ||||
/* Create a custom radio button */ | /* Create a custom radio button */ | ||||
/* line 121, ../../sass/backend/custom.scss */ | |||||
/* line 124, ../../sass/backend/custom.scss */ | |||||
.product-categories .parent .form-group.field-checkbox .form-check-label { | .product-categories .parent .form-group.field-checkbox .form-check-label { | ||||
padding-left: 0px; | padding-left: 0px; | ||||
font-style: italic; | font-style: italic; | ||||
} | } | ||||
/* line 122, ../../sass/backend/custom.scss */ | |||||
/* line 125, ../../sass/backend/custom.scss */ | |||||
.product-categories .children .form-group.field-checkbox { | .product-categories .children .form-group.field-checkbox { | ||||
margin-left: 20px; | margin-left: 20px; | ||||
} | } | ||||
/* line 123, ../../sass/backend/custom.scss */ | |||||
/* line 126, ../../sass/backend/custom.scss */ | |||||
.product-categories .form-group { | .product-categories .form-group { | ||||
margin-bottom: 0.15rem; | margin-bottom: 0.15rem; | ||||
} | } | ||||
/* line 124, ../../sass/backend/custom.scss */ | |||||
/* line 127, ../../sass/backend/custom.scss */ | |||||
.lc-deleted-field { | .lc-deleted-field { | ||||
display: none; | display: none; | ||||
} | } | ||||
/* line 125, ../../sass/backend/custom.scss */ | |||||
/* line 128, ../../sass/backend/custom.scss */ | |||||
.lc-offline-field { | .lc-offline-field { | ||||
opacity: 0.5; | opacity: 0.5; | ||||
} | } | ||||
/* line 126, ../../sass/backend/custom.scss */ | |||||
/* line 129, ../../sass/backend/custom.scss */ | |||||
.lc-offline-field label::after { | .lc-offline-field label::after { | ||||
content: ' [hors ligne]'; | content: ' [hors ligne]'; | ||||
} | } | ||||
/* Général */ | /* Général */ | ||||
/* line 132, ../../sass/backend/custom.scss */ | |||||
/* line 135, ../../sass/backend/custom.scss */ | |||||
.btn.action-save { | .btn.action-save { | ||||
float: right; | float: right; | ||||
margin-left: 10px; | margin-left: 10px; | ||||
} | } | ||||
/* line 133, ../../sass/backend/custom.scss */ | |||||
/* line 136, ../../sass/backend/custom.scss */ | |||||
.button-action a.float-right { | .button-action a.float-right { | ||||
margin-left: 10px; | margin-left: 10px; | ||||
} | } | ||||
/* line 135, ../../sass/backend/custom.scss */ | |||||
/* line 138, ../../sass/backend/custom.scss */ | |||||
.input-group-text { | .input-group-text { | ||||
padding: 0.25rem 0.75rem; | padding: 0.25rem 0.75rem; | ||||
} | } | ||||
/* line 139, ../../sass/backend/custom.scss */ | |||||
/* line 142, ../../sass/backend/custom.scss */ | |||||
.col-form-label { | .col-form-label { | ||||
font-weight: bold; | font-weight: bold; | ||||
} | } | ||||
/* line 141, ../../sass/backend/custom.scss */ | |||||
/* line 144, ../../sass/backend/custom.scss */ | |||||
#toast-container.toast-top-right { | #toast-container.toast-top-right { | ||||
top: 60px; | top: 60px; | ||||
} | } | ||||
/* SIDEBAR */ | /* SIDEBAR */ | ||||
/* line 144, ../../sass/backend/custom.scss */ | |||||
/* line 147, ../../sass/backend/custom.scss */ | |||||
.main-header.navbar { | .main-header.navbar { | ||||
padding: 0; | padding: 0; | ||||
min-height: 57px; | min-height: 57px; | ||||
} | } | ||||
/* line 145, ../../sass/backend/custom.scss */ | |||||
/* line 148, ../../sass/backend/custom.scss */ | |||||
.lc-navbar li { | .lc-navbar li { | ||||
border-left: 1px solid #e0e0e0; | border-left: 1px solid #e0e0e0; | ||||
padding: 0.5rem 1.5rem; | padding: 0.5rem 1.5rem; | ||||
} | } | ||||
/* line 146, ../../sass/backend/custom.scss */ | |||||
/* line 149, ../../sass/backend/custom.scss */ | |||||
.lc-navbar li label { | .lc-navbar li label { | ||||
margin-bottom: 0; | margin-bottom: 0; | ||||
vertical-align: middle; | vertical-align: middle; | ||||
font-weight: normal !important; | font-weight: normal !important; | ||||
} | } | ||||
/* line 148, ../../sass/backend/custom.scss */ | |||||
/* line 151, ../../sass/backend/custom.scss */ | |||||
#switch-merchant { | #switch-merchant { | ||||
min-width: 170px; | min-width: 170px; | ||||
} | } | ||||
/*************************** PAGINATION *******************************/ | |||||
/* line 155, ../../sass/backend/custom.scss */ | |||||
.pagination { | |||||
justify-content: center; | |||||
} | |||||
/* line 156, ../../sass/backend/custom.scss */ | |||||
.disabled .page-link { | |||||
color: #343a40; | |||||
} | |||||
/* line 157, ../../sass/backend/custom.scss */ | |||||
.disabled .page-link:hover, .page-link.current:hover { | |||||
background-color: #fff; | |||||
cursor: default; | |||||
} | |||||
/* Sortable */ | /* Sortable */ | ||||
/* line 154, ../../sass/backend/custom.scss */ | |||||
/* line 162, ../../sass/backend/custom.scss */ | |||||
.ui-sortable-helper { | .ui-sortable-helper { | ||||
display: table; | display: table; | ||||
} | } | ||||
/* line 155, ../../sass/backend/custom.scss */ | |||||
/* line 163, ../../sass/backend/custom.scss */ | |||||
.ui-state-highlight { | .ui-state-highlight { | ||||
background: #eee; | background: #eee; | ||||
} | } | ||||
/* line 156, ../../sass/backend/custom.scss */ | |||||
/* line 164, ../../sass/backend/custom.scss */ | |||||
.lc-sortable div:last-child { | .lc-sortable div:last-child { | ||||
display: none; | display: none; | ||||
} | } | ||||
.lc-ckfinder-wrap .lc-ckfinder-button{width: 100%; bottom: 0px; left: 0; position: absolute;} | .lc-ckfinder-wrap .lc-ckfinder-button{width: 100%; bottom: 0px; left: 0; position: absolute;} | ||||
*/ | */ | ||||
/* VUES JS */ | /* VUES JS */ | ||||
/* line 171, ../../sass/backend/custom.scss */ | |||||
/* line 179, ../../sass/backend/custom.scss */ | |||||
.nav-item .btn { | .nav-item .btn { | ||||
padding-right: 15px; | padding-right: 15px; | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* line 172, ../../sass/backend/custom.scss */ | |||||
/* line 180, ../../sass/backend/custom.scss */ | |||||
.nav-item .btn .invalid-form { | .nav-item .btn .invalid-form { | ||||
display: none; | display: none; | ||||
position: absolute; | position: absolute; | ||||
font-size: 1.2rem; | font-size: 1.2rem; | ||||
} | } | ||||
/* line 173, ../../sass/backend/custom.scss */ | |||||
/* line 181, ../../sass/backend/custom.scss */ | |||||
.nav-item.has-invalid .btn .invalid-form { | .nav-item.has-invalid .btn .invalid-form { | ||||
display: inline-block; | display: inline-block; | ||||
z-index: 2; | z-index: 2; | ||||
} | } | ||||
/* ProductFamily */ | /* ProductFamily */ | ||||
/* line 178, ../../sass/backend/custom.scss */ | |||||
/* line 186, ../../sass/backend/custom.scss */ | |||||
.field-unit-quantity { | .field-unit-quantity { | ||||
border-bottom: 2px dotted #eee; | border-bottom: 2px dotted #eee; | ||||
padding-bottom: 10px; | padding-bottom: 10px; | ||||
margin-bottom: 20px; | margin-bottom: 20px; | ||||
} | } | ||||
/* line 179, ../../sass/backend/custom.scss */ | |||||
/* line 187, ../../sass/backend/custom.scss */ | |||||
.field-reduction-apply { | .field-reduction-apply { | ||||
border-top: 2px dotted #eee; | border-top: 2px dotted #eee; | ||||
padding-top: 10px; | padding-top: 10px; | ||||
margin-top: 20px; | margin-top: 20px; | ||||
} | } | ||||
/* line 181, ../../sass/backend/custom.scss */ | |||||
/* line 189, ../../sass/backend/custom.scss */ | |||||
.new-productfamily #nav-params, | .new-productfamily #nav-params, | ||||
.edit-productfamily #nav-params { | .edit-productfamily #nav-params { | ||||
margin-bottom: 30px; | margin-bottom: 30px; | ||||
} | } | ||||
/* line 186, ../../sass/backend/custom.scss */ | |||||
/* line 194, ../../sass/backend/custom.scss */ | |||||
.new-productfamily #nav-params .btn, | .new-productfamily #nav-params .btn, | ||||
.edit-productfamily #nav-params .btn { | .edit-productfamily #nav-params .btn { | ||||
margin-left: 20px; | margin-left: 20px; | ||||
} | } | ||||
/* line 191, ../../sass/backend/custom.scss */ | |||||
/* line 199, ../../sass/backend/custom.scss */ | |||||
.new-productfamily #product-categories .row, | .new-productfamily #product-categories .row, | ||||
.edit-productfamily #product-categories .row { | .edit-productfamily #product-categories .row { | ||||
padding: 10px; | padding: 10px; | ||||
} | } | ||||
/* line 196, ../../sass/backend/custom.scss */ | |||||
/* line 204, ../../sass/backend/custom.scss */ | |||||
.new-productfamily #product-categories .form-group, | .new-productfamily #product-categories .form-group, | ||||
.edit-productfamily #product-categories .form-group { | .edit-productfamily #product-categories .form-group { | ||||
width: 100%; | width: 100%; | ||||
padding: 4px; | padding: 4px; | ||||
} | } | ||||
/* line 202, ../../sass/backend/custom.scss */ | |||||
/* line 210, ../../sass/backend/custom.scss */ | |||||
.new-productfamily #product-categories .children, | .new-productfamily #product-categories .children, | ||||
.edit-productfamily #product-categories .children { | .edit-productfamily #product-categories .children { | ||||
margin-left: 20px; | margin-left: 20px; | ||||
width: 100%; | width: 100%; | ||||
} | } | ||||
/* line 208, ../../sass/backend/custom.scss */ | |||||
/* line 216, ../../sass/backend/custom.scss */ | |||||
.new-productfamily ul.products, | .new-productfamily ul.products, | ||||
.edit-productfamily ul.products { | .edit-productfamily ul.products { | ||||
padding: 0px; | padding: 0px; | ||||
list-style-type: none; | list-style-type: none; | ||||
} | } | ||||
/* line 214, ../../sass/backend/custom.scss */ | |||||
/* line 222, ../../sass/backend/custom.scss */ | |||||
.new-productfamily ul.products li.product, | .new-productfamily ul.products li.product, | ||||
.edit-productfamily ul.products li.product { | .edit-productfamily ul.products li.product { | ||||
padding: 0px; | padding: 0px; | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* line 221, ../../sass/backend/custom.scss */ | |||||
/* line 229, ../../sass/backend/custom.scss */ | |||||
.new-productfamily ul.products li.add, | .new-productfamily ul.products li.add, | ||||
.edit-productfamily ul.products li.add { | .edit-productfamily ul.products li.add { | ||||
text-align: right; | text-align: right; | ||||
} | } | ||||
/* line 226, ../../sass/backend/custom.scss */ | |||||
/* line 234, ../../sass/backend/custom.scss */ | |||||
.autoresize textarea { | .autoresize textarea { | ||||
height: auto; | height: auto; | ||||
min-height: 38px; | min-height: 38px; | ||||
} | } | ||||
/* line 228, ../../sass/backend/custom.scss */ | |||||
/* line 236, ../../sass/backend/custom.scss */ | |||||
.field-price .input-group.buyingPrice input, .field-price .input-group.buyingPrice .input-group-text { | .field-price .input-group.buyingPrice input, .field-price .input-group.buyingPrice .input-group-text { | ||||
font-weight: bold; | font-weight: bold; | ||||
border-color: #222; | border-color: #222; | ||||
} | } | ||||
/* line 229, ../../sass/backend/custom.scss */ | |||||
/* line 237, ../../sass/backend/custom.scss */ | |||||
.field-price .input-group.buyingPriceByRefUnit input, .field-price .input-group.buyingPriceByRefUnit .input-group-text { | .field-price .input-group.buyingPriceByRefUnit input, .field-price .input-group.buyingPriceByRefUnit .input-group-text { | ||||
font-weight: bold; | font-weight: bold; | ||||
border-color: #222; | border-color: #222; | ||||
} | } | ||||
/* line 230, ../../sass/backend/custom.scss */ | |||||
/* line 238, ../../sass/backend/custom.scss */ | |||||
.field-price .input-group.priceWithTax input, .field-price .input-group.priceWithTax .input-group-text { | .field-price .input-group.priceWithTax input, .field-price .input-group.priceWithTax .input-group-text { | ||||
font-weight: bold; | font-weight: bold; | ||||
border-color: #222; | border-color: #222; | ||||
} | } | ||||
/* line 231, ../../sass/backend/custom.scss */ | |||||
/* line 239, ../../sass/backend/custom.scss */ | |||||
.field-price .input-group.priceByRefUnitWithTax input, .field-price .input-group.priceByRefUnitWithTax .input-group-text { | .field-price .input-group.priceByRefUnitWithTax input, .field-price .input-group.priceByRefUnitWithTax .input-group-text { | ||||
font-weight: bold; | font-weight: bold; | ||||
border-color: #222; | border-color: #222; | ||||
} | } | ||||
/* line 232, ../../sass/backend/custom.scss */ | |||||
/* line 240, ../../sass/backend/custom.scss */ | |||||
.input-group.multiplyingFactor input, .input-group.multiplyingFactor .input-group-text { | .input-group.multiplyingFactor input, .input-group.multiplyingFactor .input-group-text { | ||||
font-weight: bold; | font-weight: bold; | ||||
border-color: #222; | border-color: #222; | ||||
} | } | ||||
/* line 244, ../../sass/backend/custom.scss */ | |||||
.layout-ajax #edit-productfamily-form .card-sections { | |||||
width: 100%; | |||||
position: fixed; | |||||
left: 0px; | |||||
top: 0px; | |||||
z-index: 10; | |||||
} | |||||
/* line 252, ../../sass/backend/custom.scss */ | |||||
.layout-ajax #edit-productfamily-form .form { | |||||
padding-top: 50px; | |||||
} | |||||
/* line 256, ../../sass/backend/custom.scss */ | |||||
.layout-ajax #edit-productfamily-form .card-footer { | |||||
display: none; | |||||
} | |||||
/* line 261, ../../sass/backend/custom.scss */ | |||||
.layout-ajax #edit-productfamily-form .in-advanced-editing-table .form { | |||||
padding-top: 0px; | |||||
} | |||||
/* line 264, ../../sass/backend/custom.scss */ | |||||
.layout-ajax #edit-productfamily-form .in-advanced-editing-table .card-sections, | |||||
.layout-ajax #edit-productfamily-form .in-advanced-editing-table .row-note { | |||||
display: none; | |||||
} | |||||
/* ORDER */ | /* ORDER */ | ||||
/* line 238, ../../sass/backend/custom.scss */ | |||||
/* line 274, ../../sass/backend/custom.scss */ | |||||
.table-order-summary { | .table-order-summary { | ||||
width: 100%; | width: 100%; | ||||
} | } | ||||
/* line 241, ../../sass/backend/custom.scss */ | |||||
/* line 277, ../../sass/backend/custom.scss */ | |||||
.order-product-item.redelivery { | .order-product-item.redelivery { | ||||
background: rgba(18, 104, 253, 0.38) !important; | background: rgba(18, 104, 253, 0.38) !important; | ||||
} | } | ||||
/*.select2-container--bootstrap .select2-selection{max-width: none;}*/ | /*.select2-container--bootstrap .select2-selection{max-width: none;}*/ | ||||
/*.order-product-item{margin: 15px 0; padding: 0;}*/ | /*.order-product-item{margin: 15px 0; padding: 0;}*/ | ||||
/* Product */ | /* Product */ | ||||
/* line 246, ../../sass/backend/custom.scss */ | |||||
/* line 282, ../../sass/backend/custom.scss */ | |||||
.product-form-modal { | .product-form-modal { | ||||
display: none; | display: none; | ||||
} | } | ||||
/* line 247, ../../sass/backend/custom.scss */ | |||||
/* line 283, ../../sass/backend/custom.scss */ | |||||
.product-form.modal .form-check-label { | .product-form.modal .form-check-label { | ||||
font-style: italic; | font-style: italic; | ||||
color: #666; | color: #666; | ||||
text-align: left; | text-align: left; | ||||
} | } | ||||
/* line 248, ../../sass/backend/custom.scss */ | |||||
/* line 284, ../../sass/backend/custom.scss */ | |||||
.products-collection-table .inherited { | .products-collection-table .inherited { | ||||
color: #888; | color: #888; | ||||
font-style: italic; | font-style: italic; | ||||
font-weight: initial; | font-weight: initial; | ||||
} | } | ||||
/* line 249, ../../sass/backend/custom.scss */ | |||||
/* line 285, ../../sass/backend/custom.scss */ | |||||
.products-collection-table td { | .products-collection-table td { | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* line 250, ../../sass/backend/custom.scss */ | |||||
/* line 286, ../../sass/backend/custom.scss */ | |||||
.card-body.p-0 .products-collection-table tbody > tr > td:first-of-type, .card-body.p-0 .products-collection-table tbody > tr > th:first-of-type, .card-body.p-0 .products-collection-table thead > tr > td:first-of-type, .card-body.p-0 .products-collection-table thead > tr > th:first-of-type { | .card-body.p-0 .products-collection-table tbody > tr > td:first-of-type, .card-body.p-0 .products-collection-table tbody > tr > th:first-of-type, .card-body.p-0 .products-collection-table thead > tr > td:first-of-type, .card-body.p-0 .products-collection-table thead > tr > th:first-of-type { | ||||
padding-left: 0.35rem; | padding-left: 0.35rem; | ||||
} | } | ||||
/* line 251, ../../sass/backend/custom.scss */ | |||||
/* line 287, ../../sass/backend/custom.scss */ | |||||
.products-collection-table .btn-empty-field { | .products-collection-table .btn-empty-field { | ||||
position: absolute; | position: absolute; | ||||
right: 3px; | right: 3px; | ||||
padding: 0px; | padding: 0px; | ||||
} | } | ||||
/* line 252, ../../sass/backend/custom.scss */ | |||||
/* line 288, ../../sass/backend/custom.scss */ | |||||
#lc-product-family-edit .products-collection-table { | #lc-product-family-edit .products-collection-table { | ||||
table-layout: fixed; | table-layout: fixed; | ||||
/* background-clip: padding-box;*/ | /* background-clip: padding-box;*/ | ||||
border-collapse: collapse; | border-collapse: collapse; | ||||
} | } | ||||
/* line 253, ../../sass/backend/custom.scss */ | |||||
/* line 289, ../../sass/backend/custom.scss */ | |||||
#lc-product-family-edit .products-collection-table th { | #lc-product-family-edit .products-collection-table th { | ||||
font-size: 13px; | font-size: 13px; | ||||
border-left: 1px solid #dee2e6; | border-left: 1px solid #dee2e6; | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* line 254, ../../sass/backend/custom.scss */ | |||||
/* line 290, ../../sass/backend/custom.scss */ | |||||
#lc-product-family-edit .products-collection-table tfoot th { | #lc-product-family-edit .products-collection-table tfoot th { | ||||
border-top: 2px solid #dee2e6; | border-top: 2px solid #dee2e6; | ||||
} | } | ||||
/* line 255, ../../sass/backend/custom.scss */ | |||||
/* line 291, ../../sass/backend/custom.scss */ | |||||
#lc-product-family-edit .products-collection-table th span { | #lc-product-family-edit .products-collection-table th span { | ||||
white-space: initial; | white-space: initial; | ||||
} | } | ||||
/* line 256, ../../sass/backend/custom.scss */ | |||||
/* line 292, ../../sass/backend/custom.scss */ | |||||
#lc-product-family-edit .products-collection-table th:last-child { | #lc-product-family-edit .products-collection-table th:last-child { | ||||
border-right: 1px solid #dee2e6; | border-right: 1px solid #dee2e6; | ||||
} | } | ||||
/* line 257, ../../sass/backend/custom.scss */ | |||||
/* line 293, ../../sass/backend/custom.scss */ | |||||
#lc-product-family-edit .products-collection-table td { | #lc-product-family-edit .products-collection-table td { | ||||
border-left: 1px solid #dee2e6; | border-left: 1px solid #dee2e6; | ||||
text-align: center; | text-align: center; | ||||
border-bottom: 1px solid #dee2e6; | border-bottom: 1px solid #dee2e6; | ||||
} | } | ||||
/* line 258, ../../sass/backend/custom.scss */ | |||||
/* line 294, ../../sass/backend/custom.scss */ | |||||
#lc-product-family-edit .products-collection-table td:last-child { | #lc-product-family-edit .products-collection-table td:last-child { | ||||
border-right: 1px solid #dee2e6; | border-right: 1px solid #dee2e6; | ||||
white-space: nowrap; | white-space: nowrap; | ||||
} | } | ||||
/* line 259, ../../sass/backend/custom.scss */ | |||||
/* line 295, ../../sass/backend/custom.scss */ | |||||
#lc-product-family-edit .btn-add-product { | #lc-product-family-edit .btn-add-product { | ||||
margin: 20px 0; | margin: 20px 0; | ||||
float: right; | float: right; | ||||
} | } | ||||
/* line 260, ../../sass/backend/custom.scss */ | |||||
/* line 296, ../../sass/backend/custom.scss */ | |||||
#lc-product-family-edit .inherited { | #lc-product-family-edit .inherited { | ||||
color: #888; | color: #888; | ||||
font-style: italic; | font-style: italic; | ||||
font-weight: initial; | font-weight: initial; | ||||
} | } | ||||
/* line 261, ../../sass/backend/custom.scss */ | |||||
/* line 297, ../../sass/backend/custom.scss */ | |||||
#lc-product-family-edit .products-collection-table td .value { | #lc-product-family-edit .products-collection-table td .value { | ||||
min-width: 80%; | min-width: 80%; | ||||
margin: auto; | margin: auto; | ||||
cursor: pointer; | cursor: pointer; | ||||
} | } | ||||
/* line 262, ../../sass/backend/custom.scss */ | |||||
/* line 298, ../../sass/backend/custom.scss */ | |||||
#lc-product-family-edit .products-collection-table td .modal { | #lc-product-family-edit .products-collection-table td .modal { | ||||
text-align: left; | text-align: left; | ||||
} | } | ||||
/* line 263, ../../sass/backend/custom.scss */ | |||||
/* line 299, ../../sass/backend/custom.scss */ | |||||
table.products-collection-table th.main-info, td.buyingPrice, td.multiplyingFactor, td.priceWithTax { | table.products-collection-table th.main-info, td.buyingPrice, td.multiplyingFactor, td.priceWithTax { | ||||
background: #eeeeee; | background: #eeeeee; | ||||
background-clip: padding-box; | background-clip: padding-box; | ||||
text-decoration: underline; | text-decoration: underline; | ||||
} | } | ||||
/* line 265, ../../sass/backend/custom.scss */ | |||||
/* line 301, ../../sass/backend/custom.scss */ | |||||
table.products-collection-table tr.disabled { | table.products-collection-table tr.disabled { | ||||
opacity: 0.5; | opacity: 0.5; | ||||
} | } | ||||
/* line 266, ../../sass/backend/custom.scss */ | |||||
/* line 302, ../../sass/backend/custom.scss */ | |||||
.table-striped tbody .tr-sep { | .table-striped tbody .tr-sep { | ||||
border-top: 2px solid #888; | border-top: 2px solid #888; | ||||
} | } | ||||
/* DeliveryZone */ | /* DeliveryZone */ | ||||
/* line 270, ../../sass/backend/custom.scss */ | |||||
/* line 306, ../../sass/backend/custom.scss */ | |||||
#autocomplete-cities { | #autocomplete-cities { | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* line 274, ../../sass/backend/custom.scss */ | |||||
/* line 310, ../../sass/backend/custom.scss */ | |||||
#autocomplete-cities .ui-autocomplete { | #autocomplete-cities .ui-autocomplete { | ||||
left: 30%; | left: 30%; | ||||
top: 41px; | top: 41px; | ||||
margin-left: 18px; | margin-left: 18px; | ||||
} | } | ||||
/* line 280, ../../sass/backend/custom.scss */ | |||||
/* line 316, ../../sass/backend/custom.scss */ | |||||
.head-reminders { | .head-reminders { | ||||
margin-top: 15px; | margin-top: 15px; | ||||
} | } | ||||
/* TABLEAU DE BORD */ | /* TABLEAU DE BORD */ | ||||
/* line 283, ../../sass/backend/custom.scss */ | |||||
/* line 319, ../../sass/backend/custom.scss */ | |||||
.todo-list > li { | .todo-list > li { | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* line 284, ../../sass/backend/custom.scss */ | |||||
/* line 320, ../../sass/backend/custom.scss */ | |||||
.todo-list > li .text { | .todo-list > li .text { | ||||
margin-left: 30px; | margin-left: 30px; | ||||
} | } | ||||
/* line 285, ../../sass/backend/custom.scss */ | |||||
/* line 321, ../../sass/backend/custom.scss */ | |||||
.todo-list > li .tools { | .todo-list > li .tools { | ||||
position: absolute; | position: absolute; | ||||
top: 4px; | top: 4px; | ||||
right: 15px; | right: 15px; | ||||
} | } | ||||
/* line 287, ../../sass/backend/custom.scss */ | |||||
/* line 323, ../../sass/backend/custom.scss */ | |||||
#addTicketMessageForm { | #addTicketMessageForm { | ||||
margin-top: 30px; | margin-top: 30px; | ||||
border-top: 2px dotted #eee; | border-top: 2px dotted #eee; | ||||
padding-top: 30px; | padding-top: 30px; | ||||
} | } | ||||
/* line 289, ../../sass/backend/custom.scss */ | |||||
/* line 325, ../../sass/backend/custom.scss */ | |||||
#dashboard .list-btn-statistic { | #dashboard .list-btn-statistic { | ||||
display: flex; | display: flex; | ||||
flex-wrap: wrap; | flex-wrap: wrap; | ||||
justify-content: center; | justify-content: center; | ||||
} | } | ||||
/* line 290, ../../sass/backend/custom.scss */ | |||||
/* line 326, ../../sass/backend/custom.scss */ | |||||
#dashboard .btn-statistic { | #dashboard .btn-statistic { | ||||
width: 120px; | width: 120px; | ||||
height: 70px; | height: 70px; | ||||
line-height: 1rem; | line-height: 1rem; | ||||
} | } | ||||
/* line 291, ../../sass/backend/custom.scss */ | |||||
/* line 327, ../../sass/backend/custom.scss */ | |||||
#dashboard .btn-statistic small { | #dashboard .btn-statistic small { | ||||
margin-bottom: 10px; | margin-bottom: 10px; | ||||
display: block; | display: block; | ||||
} | } | ||||
/* line 292, ../../sass/backend/custom.scss */ | |||||
/* line 328, ../../sass/backend/custom.scss */ | |||||
#dashboard .btn-statistic .value { | #dashboard .btn-statistic .value { | ||||
display: block; | display: block; | ||||
} | } | ||||
/* line 294, ../../sass/backend/custom.scss */ | |||||
/* line 330, ../../sass/backend/custom.scss */ | |||||
#dashboard #range_date_interval { | #dashboard #range_date_interval { | ||||
margin-bottom: 20px; | margin-bottom: 20px; | ||||
} | } | ||||
/* line 295, ../../sass/backend/custom.scss */ | |||||
/* line 331, ../../sass/backend/custom.scss */ | |||||
#dashboard #range_date_interval label { | #dashboard #range_date_interval label { | ||||
float: left; | float: left; | ||||
margin-right: 20px; | margin-right: 20px; | ||||
} | } | ||||
/* line 296, ../../sass/backend/custom.scss */ | |||||
/* line 332, ../../sass/backend/custom.scss */ | |||||
#dashboard #range_date_interval .form-check { | #dashboard #range_date_interval .form-check { | ||||
float: left; | float: left; | ||||
margin-right: 10px; | margin-right: 10px; | ||||
} | } | ||||
/* line 297, ../../sass/backend/custom.scss */ | |||||
/* line 333, ../../sass/backend/custom.scss */ | |||||
#dashboard .table-condensed .btn, #dashboard .table-condensed .btn-sm { | #dashboard .table-condensed .btn, #dashboard .table-condensed .btn-sm { | ||||
white-space: nowrap; | white-space: nowrap; | ||||
} | } | ||||
/* Tickets */ | /* Tickets */ | ||||
/* line 303, ../../sass/backend/custom.scss */ | |||||
/* line 339, ../../sass/backend/custom.scss */ | |||||
#ticket-list .btn-sm { | #ticket-list .btn-sm { | ||||
display: block; | display: block; | ||||
} | } | ||||
/* line 309, ../../sass/backend/custom.scss */ | |||||
/* line 345, ../../sass/backend/custom.scss */ | |||||
#toast-container { | #toast-container { | ||||
width: 350px; | width: 350px; | ||||
} | } | ||||
/* line 310, ../../sass/backend/custom.scss */ | |||||
/* line 346, ../../sass/backend/custom.scss */ | |||||
.toast { | .toast { | ||||
float: right; | float: right; | ||||
} | } | ||||
/* line 312, ../../sass/backend/custom.scss */ | |||||
/* line 348, ../../sass/backend/custom.scss */ | |||||
#toast-container:before:hover { | #toast-container:before:hover { | ||||
opacity: 1; | opacity: 1; | ||||
cursor: pointer; | cursor: pointer; | ||||
} | } | ||||
/* line 316, ../../sass/backend/custom.scss */ | |||||
/* line 352, ../../sass/backend/custom.scss */ | |||||
#toast-close-all { | #toast-close-all { | ||||
border: 0; | border: 0; | ||||
position: absolute; | position: absolute; |
initButtonConfirm() | initButtonConfirm() | ||||
initNotice(); | initNotice(); | ||||
initBtnEditReminder(); | initBtnEditReminder(); | ||||
initBtnWriteToUser(); | |||||
initCollectionWidget() | |||||
$('form').on('focus', 'input[type=number]', function (e) { | $('form').on('focus', 'input[type=number]', function (e) { | ||||
$(this).on('wheel.disableScroll', function (e) { | $(this).on('wheel.disableScroll', function (e) { | ||||
e.preventDefault() | e.preventDefault() | ||||
}); | }); | ||||
} | } | ||||
function initBtnWriteToUser(){ | |||||
$('#btn-ticket-write-to-user').on('click', function () { | |||||
$btn = $(this); | |||||
var order = ''; | |||||
if($btn.data('order')) { | |||||
order = '&orderId=' + $btn.data('order'); | |||||
} | |||||
$.ajax({ | |||||
url: $btn.data('url'), | |||||
data: "user="+$btn.data('user')+order, | |||||
method: "POST", | |||||
dataType: "json", | |||||
success: function (response) { | |||||
$('body').append(response.modal); | |||||
initModalNewTicket(); | |||||
} | |||||
}); | |||||
}); | |||||
} | |||||
function initModalNewTicket(){ | |||||
$('#modal-new-ticket select.form-control').each(function (i, elm) { | |||||
if (!$(this).hasClass('disable-select2')) { | |||||
setSelect2($(elm)); | |||||
} | |||||
}); | |||||
$('#modal-new-ticket').modal('show'); | |||||
log($('#modal-new-ticket .btn-save')); | |||||
$('#modal-new-ticket .btn-save').on('click', function (){ | |||||
$form = $(this).parents('form'); | |||||
if(checkFormValidity('#'+$form.prop('id'))) { | |||||
$('#modal-new-ticket').modal('hide'); | |||||
$.ajax({ | |||||
url: $form.prop('action'), | |||||
data: $form.serialize(), | |||||
method: $form.prop('method'), | |||||
dataType: "json", | |||||
success: function (response) { | |||||
setFlashMessages(response.flashMessages); | |||||
$('#modal-new-ticket').remove(); | |||||
} | |||||
}); | |||||
} | |||||
}) | |||||
} | |||||
function initCollectionWidget(){ | |||||
$('.form-widget-compound>div[data-prototype]').each(function (i,collectionWidget){ | |||||
resetNumItemsCollectionField($(collectionWidget)); | |||||
$(collectionWidget).on('easyadmin.collection.item-added', function (){ | |||||
resetNumItemsCollectionField($(this)); | |||||
}) | |||||
}); | |||||
} | |||||
function resetNumItemsCollectionField($collectionWidget){ | |||||
numItems = $collectionWidget.children('div.form-group').length; | |||||
$collectionWidget.children('div.form-group').each(function (i,item){ | |||||
$field = $(item).find('input[type="text"]'); | |||||
//Chanegment ID | |||||
posId = $field.prop('id').lastIndexOf('_') + 1; | |||||
idPrefix = $field.prop('id').substr(0, posId); | |||||
$field.prop('id', idPrefix+i); | |||||
//Chanegment Name | |||||
posName = $field.prop('name').lastIndexOf('[') + 1; | |||||
namePrefix = $field.prop('name').substr(0, posName); | |||||
$field.prop('name', namePrefix+i+']'); | |||||
$(item).find('.field-collection-item-action').remove(); | |||||
$(item).find('.field-collection-item-row').append('<button style="border:0px; background: none; " class="field-collection-item-action field-collection-item-remove" type="button">×</button>'); | |||||
}); | |||||
$collectionWidget.find('.field-collection-item-remove').off('click'); | |||||
$collectionWidget.find('.field-collection-item-remove').on('click', function (){ | |||||
$(this).parents('.form-group:first').remove(); | |||||
resetNumItemsCollectionField($collectionWidget); | |||||
}); | |||||
} |
{ | { | ||||
name: 'maintenance', | name: 'maintenance', | ||||
nameDisplay: 'Maintenance' | nameDisplay: 'Maintenance' | ||||
}, | |||||
{ | |||||
name: 'lunch', | |||||
nameDisplay: 'Repas du midi' | |||||
} | } | ||||
] | ] | ||||
}, window.addressValues, window.merchantPanelOrderValues); | }, window.addressValues, window.merchantPanelOrderValues); |
// Reference array sent to dynamic staticRenderFns | // Reference array sent to dynamic staticRenderFns | ||||
var staticRenderFns = []; | var staticRenderFns = []; | ||||
$(window).on('load', function () { | $(window).on('load', function () { | ||||
/*var appProductFamily ; | |||||
lcInitProductFamily() ;*/ | |||||
Vue.component('product-unit-price', { | Vue.component('product-unit-price', { | ||||
mixins: [mixinUnit, mixinPrice, mixinTemplate], | mixins: [mixinUnit, mixinPrice, mixinTemplate], | ||||
watch: {} | watch: {} | ||||
}); | }); | ||||
appProductFamily = new Vue({ | appProductFamily = new Vue({ | ||||
el: '#lc-product-family-edit', | el: '#lc-product-family-edit', | ||||
mixins: [mixinReduction], | mixins: [mixinReduction], | ||||
activeProducts: false, | activeProducts: false, | ||||
giftVoucherActive: false, | giftVoucherActive: false, | ||||
productsQuantityAsTitle: false, | productsQuantityAsTitle: false, | ||||
section: null, | |||||
formProducts: {}, | formProducts: {}, | ||||
currentSection: 'general', | currentSection: 'general', | ||||
sectionsArray: [ | sectionsArray: [ | ||||
} | } | ||||
} | } | ||||
this.sectionHasChanged(); | |||||
this.initLcSortableProductsList(); | this.initLcSortableProductsList(); | ||||
}); | }); | ||||
if (typeof this.$refs.productUnitPrice !== 'undefined') { | if (typeof this.$refs.productUnitPrice !== 'undefined') { | ||||
return this.$refs.productUnitPrice.behaviorPrice; | return this.$refs.productUnitPrice.behaviorPrice; | ||||
} | } | ||||
}, | |||||
sectionHasChanged: function (){ | |||||
$('.product-categories').find('.form-check-input:not(.none)').prop('disabled', true); | |||||
$('.product-categories').find('.form-check-input[data-section="'+this.section+'"]:not(.none)').prop('disabled', false); | |||||
} | } | ||||
}, | }, | ||||
watch: { | watch: { | ||||
title: function () { | title: function () { | ||||
this.updateChild() | this.updateChild() | ||||
}, | }, | ||||
section: function (){ | |||||
this.sectionHasChanged() | |||||
}, | |||||
propertyNoveltyExpirationDateActive: function () { | propertyNoveltyExpirationDateActive: function () { | ||||
if(!this.propertyNoveltyExpirationDateActive){ | if(!this.propertyNoveltyExpirationDateActive){ | ||||
this.propertyNoveltyExpirationDate = null; | this.propertyNoveltyExpirationDate = null; | ||||
for (var key in formProductTemplate) { | for (var key in formProductTemplate) { | ||||
appProductFamily.formProducts[key] = formProductTemplate[key]; | appProductFamily.formProducts[key] = formProductTemplate[key]; | ||||
} | } | ||||
}); | }); | ||||
function lcInitProductFamily() { | |||||
} |
dataType: "json", | dataType: "json", | ||||
success: function (response) { | success: function (response) { | ||||
setFlashMessages(response.flashMessages); | setFlashMessages(response.flashMessages); | ||||
$('body').append(response.data); | |||||
$('body').append(response.data).ready(function () { | |||||
initCollectionWidget(); | |||||
}); | |||||
$('#modal-user-address').modal('show'); | $('#modal-user-address').modal('show'); | ||||
$('#modal-user-address').on('hidden.bs.modal', function (e) { | $('#modal-user-address').on('hidden.bs.modal', function (e) { | ||||
$('#modal-user-address').remove(); | $('#modal-user-address').remove(); | ||||
appUserAddress = null; | appUserAddress = null; | ||||
function initUserAddressForm(form, btn) { | function initUserAddressForm(form, btn) { | ||||
appUserAddress = null; | appUserAddress = null; | ||||
$(form).find('button').off('click'); | $(form).find('button').off('click'); | ||||
$(form).find('button').on('click', function () { | $(form).find('button').on('click', function () { | ||||
if(checkFormValidity('#'+$(form).prop('id'))) { | if(checkFormValidity('#'+$(form).prop('id'))) { |
.dataTables_length, .dataTables_filter{padding: .75rem 1.25rem 0.25rem;} | .dataTables_length, .dataTables_filter{padding: .75rem 1.25rem 0.25rem;} | ||||
table.fixedHeader-floating{margin-top: 0px !important;} | table.fixedHeader-floating{margin-top: 0px !important;} | ||||
table th.sorting_asc, table th.sorting_desc{border-top:3px solid var(--success);} | |||||
.card-body table.lc-table-list th.sorted, table th.sorting_asc, table th.sorting_desc{border-top:2px solid var(--success);} | |||||
table th.sorting_asc, table th.sorting_desc{border-top:2px solid var(--success);} | |||||
.card-body table.lc-table-list th.filtered{border-top:2px solid var(--primary);} | |||||
/*.card-body table.lc-table-list th{border-top:3px solid var(--success);}*/ | /*.card-body table.lc-table-list th{border-top:3px solid var(--success);}*/ | ||||
table th.filtered{border-top:3px solid var(--primary);} | |||||
table th.filtered{border-top:2px solid var(--primary);} | |||||
.card-body table.lc-table-list th.sorted, table th.sorting_asc, table th.sorting_desc{border-top:2px solid var(--success);} | |||||
.card-body table.lc-table-list th.sorted.filtered{border-top:0px; position: relative;} | |||||
.card-body table.lc-table-list th.sorted.filtered:after{ content: ''; height: 2px; position: absolute; left: 0; width: 100%; right: 0; top: -1px; background: linear-gradient(to right, var(--success) 0%, var(--success) 50%, var(--primary) 50%, var(--primary) 100%);} | |||||
.lc-table-list thead a{color: #212529} | .lc-table-list thead a{color: #212529} | ||||
#switch-merchant { | #switch-merchant { | ||||
min-width: 170px ; | min-width: 170px ; | ||||
} | } | ||||
/*************************** PAGINATION *******************************/ | |||||
.pagination{justify-content: center;} | |||||
.disabled .page-link{color: #343a40;} | |||||
.disabled .page-link:hover, .page-link.current:hover{background-color: #fff; cursor: default;} | |||||
/* Sortable */ | /* Sortable */ | ||||
.field-price .input-group.priceByRefUnitWithTax input,.field-price .input-group.priceByRefUnitWithTax .input-group-text{font-weight: bold; border-color: #222 } | .field-price .input-group.priceByRefUnitWithTax input,.field-price .input-group.priceByRefUnitWithTax .input-group-text{font-weight: bold; border-color: #222 } | ||||
.input-group.multiplyingFactor input,.input-group.multiplyingFactor .input-group-text{font-weight: bold; border-color: #222 } | .input-group.multiplyingFactor input,.input-group.multiplyingFactor .input-group-text{font-weight: bold; border-color: #222 } | ||||
.layout-ajax { | |||||
#edit-productfamily-form { | |||||
.card-sections { | |||||
width: 100%; | |||||
position: fixed; | |||||
left: 0px; | |||||
top: 0px; | |||||
z-index: 10; | |||||
} | |||||
.form { | |||||
padding-top: 50px; | |||||
} | |||||
.card-footer { | |||||
display: none; | |||||
} | |||||
.in-advanced-editing-table { | |||||
.form { | |||||
padding-top: 0px ; | |||||
} | |||||
.card-sections, | |||||
.row-note { | |||||
display: none; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
/* ORDER */ | /* ORDER */ | ||||
-webkit-box-shadow: 0 0 12px #999; | -webkit-box-shadow: 0 0 12px #999; | ||||
box-shadow: 0 0 12px #999; | box-shadow: 0 0 12px #999; | ||||
} | } | ||||
Statistic: | Statistic: | ||||
title: Statistiques | title: Statistiques | ||||
ProductFamily: | ProductFamily: | ||||
status: Espaces et statuts | |||||
addresses: Livraisons & facturation | addresses: Livraisons & facturation | ||||
main: Général | main: Général | ||||
products: Déclinaisons | products: Déclinaisons | ||||
email: Email | email: Email | ||||
delivery: Livraison | delivery: Livraison | ||||
maintenance: Maintenance | maintenance: Maintenance | ||||
lunch: Repas du midi | |||||
Address: | Address: | ||||
listLoopBesancon: Adresses de Besançon à spécifier (lat / long) | listLoopBesancon: Adresses de Besançon à spécifier (lat / long) | ||||
editStockNoQuantityDefault: "Le stock n'a pas été modifié pour le produit #%id% (Aucune quantité par défaut)" | editStockNoQuantityDefault: "Le stock n'a pas été modifié pour le produit #%id% (Aucune quantité par défaut)" | ||||
field: | field: | ||||
default: | default: | ||||
section: Espace | |||||
unit: Unité | |||||
placeholder: Choisissez une option | placeholder: Choisissez une option | ||||
deliveryPointSale: Lieu de livraison | deliveryPointSale: Lieu de livraison | ||||
deliveryAvailabilty: Créneau de livraison | deliveryAvailabilty: Créneau de livraison | ||||
purchaseOrderEmailContent: "Contenu par défaut de l'email envoyé aux producteurs" | purchaseOrderEmailContent: "Contenu par défaut de l'email envoyé aux producteurs" | ||||
dateStart: Date de début | dateStart: Date de début | ||||
dateEnd: Date de fin | dateEnd: Date de fin | ||||
messageLunchOpen: Message (section ouverte) | |||||
messageLunchClosed: Message (section fermée) | |||||
displaySpecificDay: Disponible un jour spécifique | |||||
groupUsers: Groupes | |||||
ticketTypesNotification: Catégorie ticket | |||||
PointSale: | PointSale: | ||||
code: Code | code: Code | ||||
displayTotalWeightInPurchaseOrder: Afficher le poids total dans les bons de commande | displayTotalWeightInPurchaseOrder: Afficher le poids total dans les bons de commande | ||||
ProductFamily: | ProductFamily: | ||||
sections: Espace où le produit est vendu | |||||
taxRateInherited: Utiliser la TVA par défaut | taxRateInherited: Utiliser la TVA par défaut | ||||
activeProducts: Activer les déclinaisons | activeProducts: Activer les déclinaisons | ||||
productsType: Type de déclinaisons | productsType: Type de déclinaisons | ||||
quantityOrder: Quantité commandé | quantityOrder: Quantité commandé | ||||
quantityProduct: Quantité (en rapport à l'unité) | quantityProduct: Quantité (en rapport à l'unité) | ||||
unit: Unité | unit: Unité | ||||
OrderShopLunch: | |||||
deliveryTypeOptions: | |||||
point-sale: En ambassade | |||||
home: À domicile | |||||
OrderShop: | OrderShop: | ||||
hasReach: Étape atteinte | hasReach: Étape atteinte | ||||
deliveryTrucks: Véhicules de livraison | deliveryTrucks: Véhicules de livraison | ||||
type: Catégorie | type: Catégorie | ||||
message: Votre réponse | message: Votre réponse | ||||
typeOptions: | typeOptions: | ||||
message-from-pdl: Messsage de l'équipe Place du Local | |||||
general-question: Questions générales | general-question: Questions générales | ||||
product-unavailable: Produit manquant | product-unavailable: Produit manquant | ||||
product-error: Erreur sur un produit | product-error: Erreur sur un produit | ||||
days: Par jour | days: Par jour | ||||
week: Par semaine | week: Par semaine | ||||
month: Par mois | month: Par mois | ||||
User: | |||||
isSaleAlwaysOpen: Commandes toujours ouvertes | |||||
action: | action: | ||||
apply: Appliquer | apply: Appliquer | ||||
new: Créer %entity_label% | new: Créer %entity_label% | ||||
logout: Me déconnecter | logout: Me déconnecter | ||||
address: Adresse utilisateur | address: Adresse utilisateur | ||||
switch: Prendre la main | switch: Prendre la main | ||||
order: | order: | ||||
addOrderProduct: Ajouter un produit | addOrderProduct: Ajouter un produit | ||||
addReductionCart: Ajouter une réduction | addReductionCart: Ajouter une réduction | ||||
add: Ajouter un pense-bête | add: Ajouter un pense-bête | ||||
address: | address: | ||||
add: Ajouter une adresse | add: Ajouter une adresse | ||||
ticket: | |||||
writeToUser: Écrire à l'utilisateur | |||||
resetting: | resetting: | ||||
check_email: | | check_email: | | ||||
Un e-mail vous a été envoyé. Il contient un lien sur lequel il vous faudra cliquer pour réinitialiser votre mot de passe. Si vous ne recevez pas d'email, vérifiez votre dossier spam ou essayez à nouveau. | Un e-mail vous a été envoyé. Il contient un lien sur lequel il vous faudra cliquer pour réinitialiser votre mot de passe. Si vous ne recevez pas d'email, vérifiez votre dossier spam ou essayez à nouveau. |
{% if action.group is defined and action.group==true %} | {% if action.group is defined and action.group==true %} | ||||
{% set dropdownAction = dropdownAction|merge({(loop.index0): action}) %} | {% set dropdownAction = dropdownAction|merge({(loop.index0): action}) %} | ||||
{% else %} | {% else %} | ||||
{% set display_button = true %} | |||||
{% if 'list' == action.name %} | {% if 'list' == action.name %} | ||||
{% set action_href = request_parameters.referer|default('') ? request_parameters.referer|easyadmin_urldecode : path('easyadmin', request_parameters|merge({ action: 'list' })) %} | {% set action_href = request_parameters.referer|default('') ? request_parameters.referer|easyadmin_urldecode : path('easyadmin', request_parameters|merge({ action: 'list' })) %} | ||||
{% elseif 'method' == action.type %} | {% elseif 'method' == action.type %} | ||||
{% set action_href = path('easyadmin', request_parameters|merge({ action: action.name, id: item_id })) %} | {% set action_href = path('easyadmin', request_parameters|merge({ action: action.name, id: item_id })) %} | ||||
{% elseif 'route' == action.type %} | {% elseif 'route' == action.type %} | ||||
{% set action_href = path(action.name, request_parameters|merge({ action: action.name, id: item_id })) %} | {% set action_href = path(action.name, request_parameters|merge({ action: action.name, id: item_id })) %} | ||||
{% elseif 'productfamily_advanced_editing' == action.type %} | |||||
{% set action_href = path('easyadmin', request_parameters|merge({ action: action.action, id: item_id })) %} | |||||
{% if action.name == 'products' and not item.activeProducts %} | |||||
{% set display_button = false %} | |||||
{% endif %} | |||||
{% endif %} | {% endif %} | ||||
{{ include(action.template, { | |||||
action: action, | |||||
action_href: action_href, | |||||
is_dropdown: is_dropdown|default(false), | |||||
item: item, | |||||
item_id: item_id, | |||||
request_parameters: request_parameters, | |||||
translation_domain: translation_domain, | |||||
trans_parameters: trans_parameters, | |||||
}, with_context = false) }} | |||||
{% if display_button %} | |||||
{{ include(action.template, { | |||||
action: action, | |||||
action_href: action_href, | |||||
is_dropdown: is_dropdown|default(false), | |||||
item: item, | |||||
item_id: item_id, | |||||
request_parameters: request_parameters, | |||||
translation_domain: translation_domain, | |||||
trans_parameters: trans_parameters, | |||||
}, with_context = false) }} | |||||
{% endif %} | |||||
{% endif %} | {% endif %} | ||||
{% endfor %} | {% endfor %} | ||||
{% if dropdownAction|length > 0 %} | {% if dropdownAction|length > 0 %} |
<td>{{ ticket.subject }}</td> | <td>{{ ticket.subject }}</td> | ||||
<td> | <td> | ||||
{% set value = ticket.status %} | {% set value = ticket.status %} | ||||
{% include '@LcShop/backend/default/list-fields/field_ticket_status.html.twig' %} | |||||
{% include '@LcShop/backend/default/field/ticket_status.html.twig' %} | |||||
</td> | </td> | ||||
<td> | <td> | ||||
{% set item = ticket %} | {% set item = ticket %} | ||||
{% include '@LcShop/backend/default/list-fields/field_ticket_last_message.html.twig' %} | |||||
{% include '@LcShop/backend/default/field/ticket_last_message.html.twig' %} | |||||
</td> | </td> | ||||
<td> | <td> | ||||
<a class="btn-sm btn-success" href="{{ path('easyadmin', {id: ticket.id, entity: 'Ticket', action: 'show'}) }}"> | <a class="btn-sm btn-success" href="{{ path('easyadmin', {id: ticket.id, entity: 'Ticket', action: 'show'}) }}"> |
{% trans_default_domain 'EasyAdminBundle' %} | |||||
{% set _paginator_request_parameters = _request_parameters|merge({'referer': null}) %} | |||||
{% if paginator.haveToPaginate %} | |||||
<div class="list-pagination"> | |||||
<div class="row"> | |||||
<div class="col-sm-3 hidden-xs list-pagination-counter"> | |||||
{{ 'paginator.counter'|trans({ '%start%': paginator.currentPageOffsetStart, '%end%': paginator.currentPageOffsetEnd, '%results%': paginator.nbResults})|raw }} | |||||
</div> | |||||
<div class="col-xs-12 col-sm-9"> | |||||
<ul class="pagination list-pagination-paginator {{ 1 == paginator.currentPage ? 'first-page' : '' }} {{ paginator.hasNextPage ? '' : 'last-page' }}"> | |||||
{% if 1 == paginator.currentPage %} | |||||
<li class="disabled"> | |||||
<span class="page-link "> | |||||
<i class="fa fa-angle-double-left"></i> | |||||
</span> | |||||
</li> | |||||
{% else %} | |||||
<li> | |||||
<a class="page-link" | |||||
href="{{ path('easyadmin', _paginator_request_parameters|merge({ page: 1 }) ) }}"> | |||||
<i class="fa fa-angle-double-left"></i> | |||||
</a> | |||||
</li> | |||||
{% endif %} | |||||
{% if paginator.hasPreviousPage %} | |||||
<li> | |||||
<a class="page-link" | |||||
href="{{ path('easyadmin', _paginator_request_parameters|merge({ page: paginator.previousPage }) ) }}"> | |||||
<i class="fa fa-angle-left"></i> | |||||
</a> | |||||
</li> | |||||
{% else %} | |||||
<li class="disabled"> | |||||
<span class="page-link"> | |||||
<i class="fa fa-angle-left"></i> | |||||
</span> | |||||
</li> | |||||
{% endif %} | |||||
{# BEGIN DISPLAYING PAGE NUMBERS #} | |||||
{# the number of pages that are displayed around the active page #} | |||||
{% set nearbyPagesLimit = 8 %} | |||||
{% if paginator.currentPage > 1 %} | |||||
{% for i in range(paginator.currentPage-nearbyPagesLimit, paginator.currentPage-1) if ( i > 0 ) %} | |||||
<li > | |||||
<a class="page-link" | |||||
href="{{ path('easyadmin', _paginator_request_parameters|merge({ page: i }) ) }}">{{ i }}</a> | |||||
</li> | |||||
{% endfor %} | |||||
{% endif %} | |||||
<li> | |||||
<a class="current page-link">{{ paginator.currentPage }}</a> | |||||
</li> | |||||
{% if paginator.currentPage < paginator.nbPages %} | |||||
{% for i in range(paginator.currentPage+1, paginator.currentPage + nearbyPagesLimit) if ( i <= paginator.nbPages ) %} | |||||
<li> | |||||
<a class="page-link" | |||||
href="{{ path('easyadmin', _paginator_request_parameters|merge({ page: i }) ) }}">{{ i }}</a> | |||||
</li> | |||||
{% endfor %} | |||||
{% endif %} | |||||
{# END DISPLAYING PAGE NUMBERS #} | |||||
{% if paginator.hasNextPage %} | |||||
<li> | |||||
<a class="page-link" | |||||
href="{{ path('easyadmin', _paginator_request_parameters|merge({ page: paginator.nextPage }) ) }}"> | |||||
<i class="fa fa-angle-right"></i> | |||||
</a> | |||||
</li> | |||||
{% else %} | |||||
<li class="disabled"> | |||||
<span class="page-link"> | |||||
<i class="fa fa-angle-right"></i> | |||||
</span> | |||||
</li> | |||||
{% endif %} | |||||
{% if paginator.currentPage < paginator.nbPages %} | |||||
<li> | |||||
<a class="page-link" | |||||
href="{{ path('easyadmin', _paginator_request_parameters|merge({ page: paginator.nbPages }) ) }}"> | |||||
<i class="fa fa-angle-double-right"></i> | |||||
</a> | |||||
</li> | |||||
{% else %} | |||||
<li class="disabled"> | |||||
<span class="page-link"> | |||||
<i class="fa fa-angle-double-right"></i> | |||||
</span> | |||||
</li> | |||||
{% endif %} | |||||
</ul> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
{% endif %} |
{% form_theme form with easyadmin_config('design.form_theme') only %} | |||||
{% set _entity_config = easyadmin_entity(app.request.query.get('entity')) %} | |||||
{% set _entity_id = attribute(entity, _entity_config.primary_key_field_name) %} | |||||
{% trans_default_domain _entity_config.translation_domain %} | |||||
{% set _trans_parameters = { '%entity_name%': _entity_config.name|trans, '%entity_label%': _entity_config.label|trans, '%entity_id%': _entity_id } %} | |||||
{% extends '@LcShop/backend/default/layout/layout-ajax.html.twig' %} | |||||
{% block ajax %} | |||||
{% block entity_form %} | |||||
{{ form(form) }} | |||||
{% endblock entity_form %} | |||||
{% block head_stylesheets %} | |||||
{{ parent() }} | |||||
<link rel="stylesheet" | |||||
href="{{ asset('bundles/lcshop/css/backend/adminlte/plugins/jquery-ui/jquery-ui.min.css') }}"> | |||||
{% endblock %} | |||||
{% block plugin_javascript %} | |||||
{{ parent() }} | |||||
<script src="{{ asset('bundles/lcshop/js/backend/plugin/jquery-ui/jquery-ui.min.js') }}"></script> | |||||
<script type="text/javascript"> | |||||
var CKEDITOR_BASEPATH = "{{ ckeditor_base_path("/bundles/fosckeditor/") }}"; | |||||
</script> | |||||
<script type="text/javascript" src="{{ asset('bundles/fosckeditor/ckeditor.js') }}"></script> | |||||
{% endblock %} | |||||
{% block script_javascript %} | |||||
<script src="{{ asset('bundles/lcshop/js/backend/script/default/init-edit.js') }}"></script> | |||||
{% endblock %} | |||||
{% endblock %} |
{% if link_parameters is defined %} | |||||
<a href="{{ path('easyadmin', link_parameters|merge({entity: 'Supplier', referer: '' })) }}">{{ value|easyadmin_truncate }}</a> | |||||
{% endif %} |
{% trans_default_domain 'EasyAdminBundle' %} | |||||
{% block toggle %} | |||||
<div class="custom-control custom-switch custom-switch-on-success custom-switch-off-danger" data-propertyname="{{ field_options.property }}"> | |||||
<input type="checkbox" class="custom-control-input" id="customSwitch{{ item.id }}-{{ field_options.property }}" {{ value == true ? 'checked' }}> | |||||
<label class="custom-control-label" for="customSwitch{{ item.id }}-{{ field_options.property }}">{% block label %}{{ field_options.label }}{% endblock %}</label> | |||||
</div> | |||||
{% endblock %} | |||||
{% trans_default_domain "lcshop" %} | {% trans_default_domain "lcshop" %} | ||||
<div class="layout-ajax"> | |||||
{% block ajax %} | {% block ajax %} | ||||
{% block head_stylesheets %} | |||||
<link rel="stylesheet" href="{{ asset('bundles/lcshop/css/backend/adminlte/plugins/fontawesome-free/css/all.min.css') }}"> | |||||
<link rel="stylesheet" href="{{ asset('bundles/lcshop/css/backend/adminlte/adminlte.css') }}"> | |||||
<link rel="stylesheet" href="{{ asset('bundles/lcshop/css/backend/custom.css') }}"> | |||||
{% endblock %} | |||||
{% endblock %} | |||||
{% block plugin_javascript %} | |||||
<!-- jQuery --> | |||||
<script src="{{ asset('bundles/lcshop/js/backend/plugin/jquery/jquery.min.js') }}"></script> | |||||
<!-- Bootstrap 4 --> | |||||
<script src="{{ asset('bundles/lcshop/js/backend/plugin/bootstrap/bootstrap.bundle.min.js') }}"></script> | |||||
<script src="{{ asset('bundles/lcshop/js/backend/plugin/toastr/toastr.min.js') }}"></script> | |||||
<script src="{{ asset('bundles/lcshop/js/backend/plugin/select2/select2.full.min.js') }}"></script> | |||||
<script src="{{ asset('bundles/lcshop/js/backend/plugin/bootstrap/bootstrap-switch.min.js') }}"></script> | |||||
<!-- AdminLTE App --> | |||||
<script src="{{ asset('bundles/lcshop/js/backend/plugin/adminlte.min.js') }}"></script> | |||||
<script src="{{ asset('bundles/lcshop/js/backend/script/default/utils.js') }}"></script> | |||||
{% endblock plugin_javascript %} | |||||
{% block script_javascript %} | |||||
<script src="{{ asset('bundles/lcshop/js/backend/script/default/init-common.js') }}"></script> | |||||
{% endblock script_javascript %} | |||||
{% endblock %} | |||||
</div> |
{% trans_default_domain 'EasyAdminBundle' %} | |||||
<div class="custom-control custom-switch custom-switch-on-success custom-switch-off-danger" data-propertyname="{{ field_options.property }}"> | |||||
<input type="checkbox" class="custom-control-input" id="customSwitch{{ item.id }}-{{ field_options.property }}" {{ value == true ? 'checked' }}> | |||||
<label class="custom-control-label" for="customSwitch{{ item.id }}-{{ field_options.property }}">{{ field_options.label }}</label> | |||||
</div> | |||||
{# | |||||
{% if value == true %} | |||||
<span class="badge badge-success">{{ 'label.true'|trans }}</span> | |||||
{% else %} | |||||
<span class="badge badge-danger">{{ 'label.false'|trans }}</span> | |||||
{% endif %} | |||||
#} |
sortField: app.request.get('sortField'), | sortField: app.request.get('sortField'), | ||||
sortDirection: app.request.get('sortDirection'), | sortDirection: app.request.get('sortDirection'), | ||||
page: app.request.get('page', 1), | page: app.request.get('page', 1), | ||||
maxResults: app.request.get('maxResults', _entity_config.list.max_results), | |||||
filters: app.request.get('filters', []), | filters: app.request.get('filters', []), | ||||
referer: null | referer: null | ||||
}) %} | }) %} | ||||
{% set _has_filters = _entity_config.list.filters|default(false) %} | {% set _has_filters = _entity_config.list.filters|default(false) %} | ||||
{% block body_id 'easyadmin-list-' ~ _entity_config.name %} | {% block body_id 'easyadmin-list-' ~ _entity_config.name %} | ||||
{#{% block body_class 'list list-' ~ _entity_config.name|lower %}#} | |||||
{# {% block body_class 'list list-' ~ _entity_config.name|lower %} #} | |||||
{% block content_title %} | {% block content_title %} | ||||
{% apply spaceless %} | {% apply spaceless %} | ||||
{% endblock %} | {% endblock %} | ||||
{% block global_actions %} | {% block global_actions %} | ||||
{#{% if easyadmin_action_is_enabled_for_list_view('new', _entity_config.name) %} | |||||
{# {% if easyadmin_action_is_enabled_for_list_view('new', _entity_config.name) %} | |||||
{% set _action = easyadmin_get_action_for_list_view('new', _entity_config.name) %} | {% set _action = easyadmin_get_action_for_list_view('new', _entity_config.name) %} | ||||
{% block new_action %} | {% block new_action %} | ||||
<div class="button-action"> | <div class="button-action"> | ||||
</a> | </a> | ||||
</div> | </div> | ||||
{% endblock new_action %} | {% endblock new_action %} | ||||
{% endif %}#} | |||||
{% endif %} #} | |||||
{% endblock global_actions %} | {% endblock global_actions %} | ||||
{% block batch_actions %} | {% block batch_actions %} | ||||
{% set _fields_visible_by_user = fields|filter((metadata, field) => easyadmin_is_granted(metadata.permission)) %} | {% set _fields_visible_by_user = fields|filter((metadata, field) => easyadmin_is_granted(metadata.permission)) %} | ||||
{% set _number_of_hidden_results = 0 %} | {% set _number_of_hidden_results = 0 %} | ||||
{% set _list_item_actions = easyadmin_get_actions_for_list_item(_entity_config.name) %} | {% set _list_item_actions = easyadmin_get_actions_for_list_item(_entity_config.name) %} | ||||
<div class="row"> | |||||
<div class="row" id="{% block list_id %}{% endblock %}"> | |||||
<div class="col-12"> | <div class="col-12"> | ||||
<div class="card card-outline card-primary"> | <div class="card card-outline card-primary"> | ||||
<div class="card-header"> | <div class="card-header"> | ||||
{% block card_header %} | {% block card_header %} | ||||
<h2 class="card-title text-lg "> | <h2 class="card-title text-lg "> | ||||
<div class="btn-group"> | |||||
{% set itemsPerPage = [10,20,30,50,100,200] %} | |||||
{% for itemPerPage in itemsPerPage %} | |||||
<a href="{{ path('easyadmin', _request_parameters|merge({ maxResults: itemPerPage, page : "1" })) }}" | |||||
class="btn btn-sm {{ paginator.maxPerPage == itemPerPage ? 'btn-outline-secondary' : 'btn-secondary' }}">{{ itemPerPage }}</a> | |||||
{% endfor %} | |||||
</div> | |||||
{% block paginator_nb_results %} | {% block paginator_nb_results %} | ||||
{#{{ "list.title"|trans({'%label%' : _entity_config['label']|lower }) }}#} | |||||
{# {{ "list.title"|trans({'%label%' : _entity_config['label']|lower }) }} #} | |||||
{% if paginator.nbResultsTotal != paginator.nbResults %} | {% if paginator.nbResultsTotal != paginator.nbResults %} | ||||
<span data-toggle="tooltip" title="{{ "list.nbResultsFiltered"|trans }}" | <span data-toggle="tooltip" title="{{ "list.nbResultsFiltered"|trans }}" | ||||
class="badge badge-info">{{ paginator.nbResults }} <i | class="badge badge-info">{{ paginator.nbResults }} <i | ||||
{% set nextSortDirection = isSortingField ? (app.request.get('sortDirection') == 'DESC' ? 'ASC' : 'DESC') : 'DESC' %} | {% set nextSortDirection = isSortingField ? (app.request.get('sortDirection') == 'DESC' ? 'ASC' : 'DESC') : 'DESC' %} | ||||
{% set _column_label = metadata.label|trans(_trans_parameters) %} | {% set _column_label = metadata.label|trans(_trans_parameters) %} | ||||
{% set _column_icon = isSortingField ? (nextSortDirection == 'DESC' ? 'fa-arrow-up' : 'fa-arrow-down') : 'fa-sort' %} | {% set _column_icon = isSortingField ? (nextSortDirection == 'DESC' ? 'fa-arrow-up' : 'fa-arrow-down') : 'fa-sort' %} | ||||
{% set isFilteredField = false %} | |||||
{% if filters_form[field] is defined and filters_form[field].vars.value is not empty %} | |||||
{% if (metadata['dataType'] == 'datetime' or metadata['dataType'] == 'date') %} | |||||
{% if filters_form[field]['dateStart'].vars.value is not empty and filters_form[field]['dateEnd'].vars.value is not empty %} | |||||
{% set isFilteredField = true %} | |||||
{% endif %} | |||||
{% else %} | |||||
{% set isFilteredField = true %} | |||||
{% endif %} | |||||
{% endif %} | |||||
<th class="{{ isSortingField ? 'sorted' }} {{ metadata.virtual ? 'virtual' }} {{ metadata.dataType|lower }} {{ metadata.css_class }}" {{ easyadmin_config('design.rtl') ? 'dir="rtl"' }}> | |||||
<th class="{{ isSortingField ? 'sorted' }} {{ isFilteredField ? 'filtered': '' }} {{ metadata.virtual ? 'virtual' }} {{ metadata.dataType|lower }} {{ metadata.css_class }}" {{ easyadmin_config('design.rtl') ? 'dir="rtl"' }}> | |||||
{% if metadata.sortable %} | {% if metadata.sortable %} | ||||
<a href="{{ path('easyadmin', _request_parameters|merge({ page: 1, sortField: metadata.property, sortDirection: nextSortDirection })) }}"> | <a href="{{ path('easyadmin', _request_parameters|merge({ page: 1, sortField: metadata.property, sortDirection: nextSortDirection })) }}"> | ||||
{{ _column_label|raw }} <i class="fa fa-fw {{ _column_icon }}"></i> | {{ _column_label|raw }} <i class="fa fa-fw {{ _column_icon }}"></i> | ||||
</tr> | </tr> | ||||
{% endblock table_head %} | {% endblock table_head %} | ||||
{% block table_filters %} | {% block table_filters %} | ||||
{% set fieldAreNotEmpty = false %} | |||||
{% if filters_form is defined %} | {% if filters_form is defined %} | ||||
<tr class="table-filters-line"> | <tr class="table-filters-line"> | ||||
{% if _has_batch_actions %} | {% if _has_batch_actions %} | ||||
<th> | <th> | ||||
{% if filters_form[field] is defined %} | {% if filters_form[field] is defined %} | ||||
{% if filters_form[field].vars.value is not null and filters_form[field].vars.value is not empty %}{% set fieldAreNotEmpty = true %}{% endif %} | |||||
{% if metadata['dataType'] == 'datetime' or metadata['dataType'] == 'date' %} | {% if metadata['dataType'] == 'datetime' or metadata['dataType'] == 'date' %} | ||||
<div class="input-group input-group-sm"> | <div class="input-group input-group-sm"> | ||||
<input type="text" | <input type="text" | ||||
aria-label="{{ "action.apply"|trans({}, 'lcshop') }}"> | aria-label="{{ "action.apply"|trans({}, 'lcshop') }}"> | ||||
<i class="fa fa-search"></i> | <i class="fa fa-search"></i> | ||||
</button> | </button> | ||||
{% if filters_form.vars.submitted %} | |||||
<a href="{{ path('easyadmin', {action: app.request.get('action'), entity: _entity_config.name}) }}" | |||||
{% if filters_form.vars.submitted or fieldAreNotEmpty %} | |||||
<a href="{{ path('easyadmin', _request_parameters|merge({ 'filterClear' : 'clearAll', list_filter : null, referer : null })) }}" | |||||
class="btn btn-sm btn-warning lc-reset-filters" | class="btn btn-sm btn-warning lc-reset-filters" | ||||
data-toggle="tooltip" | data-toggle="tooltip" | ||||
title="{{ "action.reset"|trans({}, 'lcshop') }}" | title="{{ "action.reset"|trans({}, 'lcshop') }}" | ||||
{% else %} | {% else %} | ||||
{# the empty string concatenation is needed when the primary key is an object (e.g. an Uuid object) #} | {# the empty string concatenation is needed when the primary key is an object (e.g. an Uuid object) #} | ||||
{% set _item_id = '' ~ attribute(item, _entity_config.primary_key_field_name) %} | {% set _item_id = '' ~ attribute(item, _entity_config.primary_key_field_name) %} | ||||
<tr data-id="{{ _item_id }}"> | |||||
<tr id="tr-entity-id-{{ _item_id }}" data-id="{{ _item_id }}"> | |||||
{% if _has_batch_actions %} | {% if _has_batch_actions %} | ||||
<td><input type="checkbox" class="form-batch-checkbox" | <td><input type="checkbox" class="form-batch-checkbox" | ||||
value="{{ _item_id }}"></td> | value="{{ _item_id }}"></td> | ||||
<td class="{{ isSortingField ? 'sorted' }} {{ metadata.dataType|lower }} {{ metadata.css_class }}" {{ easyadmin_config('design.rtl') ? 'dir="rtl"' }}> | <td class="{{ isSortingField ? 'sorted' }} {{ metadata.dataType|lower }} {{ metadata.css_class }}" {{ easyadmin_config('design.rtl') ? 'dir="rtl"' }}> | ||||
{% if (field == 'title' or field== 'id') and (metadata.dataType=="string" or metadata.dataType=="integer") %} | |||||
{% if (field == 'title' or field== 'id') and (metadata.dataType=="string" or metadata.dataType=="integer") and _entity_config.name != 'ProductFamilyAdvancedEditing' %} | |||||
<a class="link-as-text" | <a class="link-as-text" | ||||
href="{{ path('easyadmin', _request_parameters|merge({ action: 'edit', id: item.id })) }}"> | href="{{ path('easyadmin', _request_parameters|merge({ action: 'edit', id: item.id })) }}"> | ||||
{{ easyadmin_render_field_for_list_view(_entity_config.name, item, metadata) }} | {{ easyadmin_render_field_for_list_view(_entity_config.name, item, metadata) }} | ||||
</a> | </a> | ||||
{% else %} | {% else %} | ||||
{# {% if metadatafieldName =="supplier" %} | |||||
{{ dump(metadata) }} | |||||
{% endif %} #} | |||||
{{ easyadmin_render_field_for_list_view(_entity_config.name, item, metadata) }} | {{ easyadmin_render_field_for_list_view(_entity_config.name, item, metadata) }} | ||||
{% endif %} | {% endif %} | ||||
</td> | </td> | ||||
<script src="{{ asset('bundles/lcshop/js/backend/plugin/daterange/daterangepicker.js') }}"></script> | <script src="{{ asset('bundles/lcshop/js/backend/plugin/daterange/daterangepicker.js') }}"></script> | ||||
<script src="{{ asset('bundles/lcshop/js/backend/plugin/datatables/jquery.highlight.js') }}"></script> | <script src="{{ asset('bundles/lcshop/js/backend/plugin/datatables/jquery.highlight.js') }}"></script> | ||||
<script src="{{ asset('bundles/lcshop/js/backend/plugin/autocomplete/bootstrap-autocomplete.min.js') }}"></script> | <script src="{{ asset('bundles/lcshop/js/backend/plugin/autocomplete/bootstrap-autocomplete.min.js') }}"></script> | ||||
{#<script src="{{ asset('bundles/lcshop/js/backend/plugin/datatables/responsive.bootstrap4.min.js') }}"></script>#} | |||||
{# <script src="{{ asset('bundles/lcshop/js/backend/plugin/datatables/responsive.bootstrap4.min.js') }}"></script> #} | |||||
{% endblock %} | {% endblock %} | ||||
{% block script_javascript %} | {% block script_javascript %} | ||||
<script type="text/javascript"> | <script type="text/javascript"> | ||||
$(document).ready(function () { | $(document).ready(function () { | ||||
const toggles = document.querySelectorAll('.custom-switch input[type="checkbox"]'); | const toggles = document.querySelectorAll('.custom-switch input[type="checkbox"]'); | ||||
for (i = 0; i < toggles.length; i++) { | for (i = 0; i < toggles.length; i++) { |
{% set _translation_domain = easyadmin.entity.translation_domain %} | {% set _translation_domain = easyadmin.entity.translation_domain %} | ||||
{% set _trans_parameters = { '%entity_name%': easyadmin.entity.name|trans(domain = _translation_domain), '%entity_label%': easyadmin.entity.label|trans(domain = _translation_domain) } %} | {% set _trans_parameters = { '%entity_name%': easyadmin.entity.name|trans(domain = _translation_domain), '%entity_label%': easyadmin.entity.label|trans(domain = _translation_domain) } %} | ||||
{# the 'save' action is hardcoded for the 'edit' and 'new' views #} | |||||
<button type="submit" name="save_and_leave" class="btn btn-primary action-save"> | <button type="submit" name="save_and_leave" class="btn btn-primary action-save"> | ||||
<span class="btn-label">{{ 'action.save'|trans(_trans_parameters, _translation_domain) }}</span> | <span class="btn-label">{{ 'action.save'|trans(_trans_parameters, _translation_domain) }}</span> | ||||
</button> | </button> | ||||
{% if easyadmin.entity.name =='ProductFamily' %} | {% if easyadmin.entity.name =='ProductFamily' %} | ||||
<button name="submitAndStay" value="1" type="submit" class="btn btn-success action-save"> | |||||
<button name="submitAndStay" value="1" type="submit" class="btn btn-success action-save action-save-and-stay"> | |||||
<span class="btn-label">{{ 'action.saveAndStay'|trans(_trans_parameters, _translation_domain) }}</span> | <span class="btn-label">{{ 'action.saveAndStay'|trans(_trans_parameters, _translation_domain) }}</span> | ||||
</button> | </button> | ||||
{% endif %} | {% endif %} |
<div v-show="currentSection == 'maintenance'" class="panel panel-default"> | <div v-show="currentSection == 'maintenance'" class="panel panel-default"> | ||||
{% include '@LcShop/backend/merchant/panel_maintenance.html.twig' %} | {% include '@LcShop/backend/merchant/panel_maintenance.html.twig' %} | ||||
</div> | </div> | ||||
<div v-show="currentSection == 'lunch'" class="panel panel-default"> | |||||
{% include '@LcShop/backend/merchant/panel_lunch.html.twig' %} | |||||
</div> | |||||
</div> | </div> | ||||
</div> | </div> |
{% import '@LcShop/backend/default/block/macros.html.twig' as macros %} | |||||
<div class="row"> | |||||
<div class="col-8"> | |||||
{{ macros.card_start('Merchant.lunch','light') }} | |||||
{% if form.merchantConfigs['message-lunch-open'] is defined %} | |||||
<div class="col-12"> | |||||
{{ form_row(form.merchantConfigs['message-lunch-open']) }} | |||||
</div> | |||||
{% endif %} | |||||
{% if form.merchantConfigs['message-lunch-closed'] is defined %} | |||||
<div class="col-12"> | |||||
{{ form_row(form.merchantConfigs['message-lunch-closed']) }} | |||||
</div> | |||||
{% endif %} | |||||
{{ macros.card_end() }} | |||||
</div> | |||||
</div> |
{% import '@LcShop/backend/default/block/macros.html.twig' as macros %} | {% import '@LcShop/backend/default/block/macros.html.twig' as macros %} | ||||
{% import '@LcShop/backend/order/macros.html.twig' as order_macros %} | {% import '@LcShop/backend/order/macros.html.twig' as order_macros %} | ||||
{% block global_actions %} | |||||
{% if entity.user is not null %} | |||||
<button id="btn-ticket-write-to-user" | |||||
data-url="{{ path('easyadmin', {'entity': 'Ticket', 'action': 'new'}) }}" | |||||
data-user="{{ entity.user.id }}" | |||||
class="btn-sm btn-success" | |||||
type="button"><i class="fa fa-pen-alt"></i> {{ "action.ticket.writeToUser"|trans }} | |||||
</button> | |||||
{% endif %} | |||||
{% endblock %} | |||||
{% block main %} | {% block main %} | ||||
<div class="lc-vue-js-container" id="lc-order-edit"> | <div class="lc-vue-js-container" id="lc-order-edit"> |
{% import '@LcShop/backend/default/block/macros.html.twig' as macros %} | {% import '@LcShop/backend/default/block/macros.html.twig' as macros %} | ||||
{% import '@LcShop/backend/order/macros.html.twig' as order_macros %} | {% import '@LcShop/backend/order/macros.html.twig' as order_macros %} | ||||
{% block global_actions %} | |||||
{% if entity.user is not null %} | |||||
<button id="btn-ticket-write-to-user" | |||||
data-url="{{ path('easyadmin', {'entity': 'Ticket', 'action': 'new'}) }}" | |||||
data-user="{{ entity.user.id }}" | |||||
data-order="{{ entity.id }}" | |||||
class="btn-sm btn-success" | |||||
type="button"><i class="fa fa-pen-alt"></i> {{ "action.ticket.writeToUser"|trans }} | |||||
</button> | |||||
{% endif %} | |||||
{% endblock %} | |||||
{% block main %} | {% block main %} | ||||
<div class="lc-vue-js-container" id="lc-order-edit"> | <div class="lc-vue-js-container" id="lc-order-edit"> |
{% extends app.request.query.get('action') == 'edit' ? '@LcShop/backend/default/edit.html.twig' : '@LcShop/backend/default/new.html.twig' %} | |||||
{% extends app.request.query.get('action') == 'edit' | |||||
? (app.request.query.get('ajax') == 1 ? '@LcShop/backend/default/edit-ajax.html.twig' : '@LcShop/backend/default/edit.html.twig') | |||||
: '@LcShop/backend/default/new.html.twig' %} | |||||
{% block entity_form %} | {% block entity_form %} | ||||
{% include '@LcShop/backend/productfamily/form.html.twig' %} | {% include '@LcShop/backend/productfamily/form.html.twig' %} | ||||
{% block script_javascript %} | {% block script_javascript %} | ||||
{{ parent() }} | {{ parent() }} | ||||
{% include '@LcShop/backend/default/block/script-vuejs.html.twig' %} | {% include '@LcShop/backend/default/block/script-vuejs.html.twig' %} | ||||
<script src="{{ asset('bundles/lcshop/js/backend/script/productfamily/vuejs-product-family.js')|lc_cache }}"></script> | |||||
<script src="{{ asset('bundles/lcshop/js/backend/script/productfamily/vuejs-product-family.js') }}"></script> | |||||
<script> | |||||
lcInitProductFamily() ; | |||||
</script> | |||||
{% endblock %} | {% endblock %} |
{% import '@LcShop/backend/productfamily/macros.html.twig' as product_family_macros %} | {% import '@LcShop/backend/productfamily/macros.html.twig' as product_family_macros %} | ||||
{% set formValues = form.vars.value %} | {% set formValues = form.vars.value %} | ||||
<div id="lc-product-family-edit"> | |||||
<div class="card card-light"> | |||||
<div id="lc-product-family-edit" class="{% if app.request.query.get('inAdvancedEditingTable') %}in-advanced-editing-table{% endif %}"> | |||||
<div class="card card-light card-sections"> | |||||
<div class="lc-vue-js-container card-header p-0 border-bottom-0"> | <div class="lc-vue-js-container card-header p-0 border-bottom-0"> | ||||
<ul class="nav nav-tabs" id="nav-params"> | <ul class="nav nav-tabs" id="nav-params"> | ||||
<li class="nav-item" v-for="section in sectionsArray"> | <li class="nav-item" v-for="section in sectionsArray"> | ||||
<span class="glyphicon glyphicon-triangle-bottom"></span> | <span class="glyphicon glyphicon-triangle-bottom"></span> | ||||
<i class="fa fa-exclamation-circle invalid-form"></i> | <i class="fa fa-exclamation-circle invalid-form"></i> | ||||
</a> | </a> | ||||
</li> | </li> | ||||
</ul> | </ul> | ||||
</div> | </div> | ||||
{% if formValues.activeProducts %}activeProducts: "{{ formValues.activeProducts }}",{% endif %} | {% if formValues.activeProducts %}activeProducts: "{{ formValues.activeProducts }}",{% endif %} | ||||
{% if formValues.giftVoucherActive %}giftVoucherActive: "{{ formValues.giftVoucherActive }}",{% endif %} | {% if formValues.giftVoucherActive %}giftVoucherActive: "{{ formValues.giftVoucherActive }}",{% endif %} | ||||
{% if formValues.productsQuantityAsTitle %}productsQuantityAsTitle: {{ formValues.productsQuantityAsTitle }},{% endif %} | {% if formValues.productsQuantityAsTitle %}productsQuantityAsTitle: {{ formValues.productsQuantityAsTitle }},{% endif %} | ||||
{% set current_section = app.request.query.get('currentSection') %} | |||||
{% if current_section is defined and current_section|length > 0 %}currentSection: "{{ current_section }}",{% endif %} | |||||
{% if form.sections.vars.value %}section: {{ form.sections.vars.value[0] }},{% endif %} | |||||
}; | }; | ||||
multiplyingFactor = "{{ form.multiplyingFactor.vars.value }}" | multiplyingFactor = "{{ form.multiplyingFactor.vars.value }}" | ||||
</div> | </div> | ||||
</div> | </div> | ||||
{% if entity.note|striptags !="" %} | {% if entity.note|striptags !="" %} | ||||
<div class="row"> | |||||
<div class="row row-note"> | |||||
{{ macros.startCard(12, 'ProductFamily.note', 'light') }} | {{ macros.startCard(12, 'ProductFamily.note', 'light') }} | ||||
{{ entity.note|raw }} | {{ entity.note|raw }} | ||||
{{ macros.endCard() }} | {{ macros.endCard() }} | ||||
</div> | </div> | ||||
{{ form_widget(form.stayOnPage, {"attr": {"v-model": "stayOnPage"}}) }} | {{ form_widget(form.stayOnPage, {"attr": {"v-model": "stayOnPage"}}) }} | ||||
</div> | </div> | ||||
{{ form_end(form) }} | {{ form_end(form) }} | ||||
{{ productFamily.unit.unitReference }} | {{ productFamily.unit.unitReference }} | ||||
{% endif %} | {% endif %} | ||||
</strong> | </strong> | ||||
</span> | |||||
</span> | |||||
<br /> | <br /> | ||||
{% endfor %} | {% endfor %} | ||||
{% endmacro total_order_product_family %} | {% endmacro total_order_product_family %} |
{% import '@LcShop/backend/default/block/macros.html.twig' as macros %} | {% import '@LcShop/backend/default/block/macros.html.twig' as macros %} | ||||
<div class="row"> | <div class="row"> | ||||
{{ macros.startCard(8, 'ProductFamily.main','light') }} | |||||
<div class="col-12"> | |||||
{{ macros.startCard(8, 'ProductFamily.status','light') }} | |||||
<div class="col-6"> | |||||
{{ form_row(form.status) }} | {{ form_row(form.status) }} | ||||
</div> | </div> | ||||
<div class="col-12"> | |||||
<div class="col-6"> | |||||
<label>Status de vente</label> | |||||
{{ form_row(form.saleStatus) }} | {{ form_row(form.saleStatus) }} | ||||
</div> | </div> | ||||
<div class="col-12"> | |||||
{{ form_label(form.sections) }} | |||||
{% for section in form.sections %} | |||||
<div class="form-check"> | |||||
<label class="form-check-label" for="{{ section.vars.id }}"> | |||||
<input v-model="section" type="radio" id="{{ section.vars.id }}" name="{{ section.vars.full_name }}" class="form-check-input" value="{{ section.vars.value }}" {{ section.vars.checked == true ? 'checked="checked"' : '' }}> | |||||
<span class="checkmark"></span> | |||||
{{ section.vars.label }} | |||||
</label> | |||||
</div> | |||||
{% endfor %} | |||||
{% do form.sections.setRendered %} | |||||
</div> | |||||
{{ macros.endCard() }} | |||||
{{ macros.startCard(8, 'ProductFamily.main','light') }} | |||||
<div class="col-12"> | <div class="col-12"> | ||||
{{ form_row(form.supplier) }} | {{ form_row(form.supplier) }} | ||||
</div> | </div> | ||||
<div class="col-12 product-categories"> | <div class="col-12 product-categories"> | ||||
{% for category in form.productCategories %} | {% for category in form.productCategories %} | ||||
<div class="field {{ category.vars.disabled ? 'parent' }}"> | |||||
<div class="field {{ category.vars.disabled ? 'parent' }}"> | |||||
{{ form_row(category) }} | {{ form_row(category) }} | ||||
</div> | </div> | ||||
{% set lastMessage = item.ticketMessages.last %} | {% set lastMessage = item.ticketMessages.last %} | ||||
{% if lastMessage.answerByAdmin != true %} | |||||
<span class="badge badge-danger"> | |||||
{% if lastMessage %} | |||||
{% if lastMessage.answerByAdmin != true %} | |||||
<span class="badge badge-danger"> | |||||
New | New | ||||
</span> | |||||
</span> | |||||
{% endif %} | |||||
{{ lastMessage.createdAt|date('d/m/Y H:i') }} par {{ lastMessage.createdBy }} | |||||
{% endif %} | {% endif %} | ||||
{{ lastMessage.createdAt|date('d/m/Y H:i') }} par {{ lastMessage.createdBy }} |
{% embed "@LcShop/backend/default/block/embed_modal.twig" %} | |||||
{% trans_default_domain 'lcshop' %} | |||||
{% block id %}modal-new-ticket{% endblock %} | |||||
{% block title %}{{ "action.ticket.writeToUser"|trans }}{% endblock %} | |||||
{% block form_start %} | |||||
{{ form_start(form, {'attr': { 'id' : 'newTicket', 'action': path('easyadmin', {'entity' : 'Ticket', 'action': 'new'})}}) }} | |||||
{% form_theme form '@LcShop/backend/form/custom_modal_bootstrap_4.html.twig' %} | |||||
{% endblock %} | |||||
{% block content %} | |||||
<div class="col"> | |||||
{{ form_row(form.user) }} | |||||
{{ form_row(form.subject) }} | |||||
{% if form.orderId.vars.value is not empty %} | |||||
<p> | |||||
<strong>Ce ticket concernera la commande #{{ form.orderId.vars.value }}</strong><br /> | |||||
<i>Si vous ne le souhaitez pas, écrivez à l'utilisateur depuis l'onglet utilisateur</i> | |||||
</p> | |||||
{% endif %} | |||||
{{ form_rest(form) }} | |||||
</div> | |||||
{% endblock %} | |||||
{% block footer %} | |||||
{{ parent() }} | |||||
<button type="button" class="btn btn-primary btn-save" >{{ 'action.send'|trans }}</button> | |||||
{#{{ form_rest(form) }}#} | |||||
{% endblock %} | |||||
{% block form_end %} | |||||
{{ form_end(form) }} | |||||
{% endblock %} | |||||
{% endembed %} |
{% extends app.request.query.get('action') == 'edit' ? '@LcShop/backend/default/edit.html.twig' : '@LcShop/backend/default/new.html.twig' %} | |||||
{% extends app.request.query.get('action') == 'edit' ? '@LcShop/backend/default/edit.html.twig' : '@LcShop/backend/default/new.html.twig' %} | |||||
{% trans_default_domain 'lcshop' %} | {% trans_default_domain 'lcshop' %} | ||||
{% block global_actions %} | |||||
<button id="btn-ticket-write-to-user" | |||||
data-url="{{ path('easyadmin', {'entity': 'Ticket', 'action': 'new'}) }}" | |||||
data-user="{{ entity.id }}" | |||||
class="btn-sm btn-success" | |||||
type="button"><i class="fa fa-pen-alt"></i> {{ "action.ticket.writeToUser"|trans }}</button> | |||||
{% endblock %} | |||||
{% block entity_form %} | {% block entity_form %} | ||||
{% import '@LcShop/backend/default/block/macros.html.twig' as macros %} | {% import '@LcShop/backend/default/block/macros.html.twig' as macros %} | ||||
{{ form_start(form) }} | {{ form_start(form) }} | ||||
{% form_theme form '@LcShop/backend/form/custom_bootstrap_4.html.twig' %} | {% form_theme form '@LcShop/backend/form/custom_bootstrap_4.html.twig' %} | ||||
<div class="row"> | <div class="row"> | ||||
<div class="col-7"> | |||||
{{ macros.card_start() }} | |||||
<div class="col"> | |||||
{% for field in form.children %} | |||||
{{ form_row(field) }} | |||||
{% endfor %} | |||||
</div> | |||||
{{ macros.card_end() }} | |||||
</div> | |||||
<div class="col-7"> | |||||
{{ macros.card_start() }} | |||||
<div class="col"> | |||||
{% for field in form.children %} | |||||
{{ form_row(field) }} | |||||
{% endfor %} | |||||
</div> | |||||
{{ macros.card_end() }} | |||||
</div> | |||||
<div class="col-5"> | <div class="col-5"> | ||||
<div class="row" id="user-addresses"> | <div class="row" id="user-addresses"> | ||||
{% for address in entity.addresses %} | |||||
{% if address.status >=0 %} | |||||
{% include '@LcShop/backend/user/block_useraddress.html.twig' %} | |||||
{% endif %} | |||||
{% endfor %} | |||||
{% for address in entity.addresses %} | |||||
{% if address.status >=0 %} | |||||
{% include '@LcShop/backend/user/block_useraddress.html.twig' %} | |||||
{% endif %} | |||||
{% endfor %} | |||||
</div> | </div> | ||||
<button type="button" data-url="{{ path('easyadmin', {"action": 'editAddressUser', 'entity': 'User', 'id': entity.id, 'addressId': 'new'}) }}" | |||||
class="btn btn-primary btn-add-user-address" ><i class="fa fa-plus"></i> {{ 'action.address.add'|trans }} | |||||
<button type="button" | |||||
data-url="{{ path('easyadmin', {"action": 'editAddressUser', 'entity': 'User', 'id': entity.id, 'addressId': 'new'}) }}" | |||||
class="btn btn-primary btn-add-user-address"><i | |||||
class="fa fa-plus"></i> {{ 'action.address.add'|trans }} | |||||
</button> | </button> | ||||
</div> | </div> |
{% extends '@LcShop/backend/default/show.html.twig' %} | {% extends '@LcShop/backend/default/show.html.twig' %} | ||||
{% trans_default_domain 'lcshop' %} | {% trans_default_domain 'lcshop' %} | ||||
{% block global_actions %} | |||||
<button id="btn-ticket-write-to-user" | |||||
data-url="{{ path('easyadmin', {'entity': 'Ticket', 'action': 'new'}) }}" | |||||
data-user="{{ entity.user.id }}" | |||||
class="btn-sm btn-success" | |||||
type="button"><i class="fa fa-pen-alt"></i> {{ "action.ticket.writeToUser"|trans }}</button> | |||||
{% endblock %} | |||||
{% block main %} | {% block main %} | ||||
<div class="row"> | <div class="row"> | ||||
<td class="sorted">{{ creditHistory.id }}</td> | <td class="sorted">{{ creditHistory.id }}</td> | ||||
<td class="association">{{ creditHistory.type }}</td> | <td class="association">{{ creditHistory.type }}</td> | ||||
<td class="">{{ creditHistory.amountInherited }} €</td> | <td class="">{{ creditHistory.amountInherited }} €</td> | ||||
<td class="">{{ creditHistory.meanPaymentInherited }}</td> | |||||
<td class="">{{ creditHistory.meanPaymentInherited }}</td> | |||||
<td class="">{{ creditHistory.paidAtInherited |date('d-m-y') }}</td> | <td class="">{{ creditHistory.paidAtInherited |date('d-m-y') }}</td> | ||||
<td class="">{{ creditHistory.referenceInherited }}</td> | |||||
<td class="">{{ creditHistory.commentInherited }}</td> | |||||
<td class="">{{ creditHistory.referenceInherited }}</td> | |||||
<td class="">{{ creditHistory.commentInherited }}</td> | |||||
</tr> | </tr> | ||||
{% else %} | {% else %} | ||||
{% block head_stylesheets %} | {% block head_stylesheets %} | ||||
{{ parent() }} | {{ parent() }} | ||||
<link rel="stylesheet" href="{{ asset('bundles/lcshop/css/backend/adminlte/plugins/datatables/fixedHeader.dataTables.min.css') }}"> | |||||
<link rel="stylesheet" | |||||
href="{{ asset('bundles/lcshop/css/backend/adminlte/plugins/datatables/fixedHeader.dataTables.min.css') }}"> | |||||
<link rel="stylesheet" | <link rel="stylesheet" | ||||
href="{{ asset('bundles/lcshop/css/backend/adminlte/plugins/datatables/dataTables.bootstrap4.min.css') }}"> | href="{{ asset('bundles/lcshop/css/backend/adminlte/plugins/datatables/dataTables.bootstrap4.min.css') }}"> | ||||
{% endblock %} | {% endblock %} |
use Lc\ShopBundle\Context\PriceUtilsInterface; | use Lc\ShopBundle\Context\PriceUtilsInterface; | ||||
use Lc\ShopBundle\Context\ProductFamilyUtilsInterface; | use Lc\ShopBundle\Context\ProductFamilyUtilsInterface; | ||||
use Lc\ShopBundle\Context\ReductionCreditInterface; | use Lc\ShopBundle\Context\ReductionCreditInterface; | ||||
use Lc\ShopBundle\Context\SectionInterface; | |||||
use Lc\ShopBundle\Context\SectionUtilsInterface; | |||||
use Lc\ShopBundle\Context\UserUtilsInterface; | use Lc\ShopBundle\Context\UserUtilsInterface; | ||||
use Lc\ShopBundle\Model\ProductFamily; | use Lc\ShopBundle\Model\ProductFamily; | ||||
use Lc\ShopBundle\Services\CreditUtils; | use Lc\ShopBundle\Services\CreditUtils; | ||||
use Lc\ShopBundle\Services\DocumentUtils; | use Lc\ShopBundle\Services\DocumentUtils; | ||||
use Lc\ShopBundle\Services\UserUtils; | use Lc\ShopBundle\Services\UserUtils; | ||||
use Lc\ShopBundle\Services\Utils; | use Lc\ShopBundle\Services\Utils; | ||||
use Lc\ShopBundle\Services\UtilsManager; | |||||
use Symfony\Component\Routing\RouterInterface; | use Symfony\Component\Routing\RouterInterface; | ||||
use Symfony\Component\Security\Core\Security; | use Symfony\Component\Security\Core\Security; | ||||
protected $utils; | protected $utils; | ||||
protected $creditUtils; | protected $creditUtils; | ||||
protected $router; | protected $router; | ||||
protected $sectionUtils ; | |||||
public function __construct(EntityManagerInterface $em, Security $security, RouterInterface $router, UserUtilsInterface $userUtils, | public function __construct(EntityManagerInterface $em, Security $security, RouterInterface $router, UserUtilsInterface $userUtils, | ||||
MerchantUtilsInterface $merchantUtils, PriceUtilsInterface $priceUtils, ProductFamilyUtilsInterface $productFamilyUtils, | MerchantUtilsInterface $merchantUtils, PriceUtilsInterface $priceUtils, ProductFamilyUtilsInterface $productFamilyUtils, | ||||
DocumentUtils $documentUtils, Utils $utils, CreditUtils $creditUtils) | |||||
DocumentUtils $documentUtils, Utils $utils, CreditUtils $creditUtils, SectionUtilsInterface $sectionUtils) | |||||
{ | { | ||||
$this->em = $em; | $this->em = $em; | ||||
$this->security = $security; | $this->security = $security; | ||||
$this->utils = $utils; | $this->utils = $utils; | ||||
$this->creditUtils = $creditUtils; | $this->creditUtils = $creditUtils; | ||||
$this->router = $router; | $this->router = $router; | ||||
$this->sectionUtils = $sectionUtils ; | |||||
} | } | ||||
public function createOrderShop($params) | public function createOrderShop($params) | ||||
{ | { | ||||
//TODO vérifier que l'utilisateur n'a pas déjà une commande en cours | //TODO vérifier que l'utilisateur n'a pas déjà une commande en cours | ||||
throw new \ErrorException('La commande doit être liée à un merchant.'); | throw new \ErrorException('La commande doit être liée à un merchant.'); | ||||
} | } | ||||
// pour le moment, à la création, on lie simplement la commande à la section "Marché" | |||||
$section = $this->sectionUtils->getSectionMarket() ; | |||||
if($section) { | |||||
$orderShop->setSection($section) ; | |||||
} | |||||
else { | |||||
throw new \ErrorException('La commande doit être liée à une section.'); | |||||
} | |||||
$orderShop = $this->changeOrderStatus('cart', $orderShop); | $orderShop = $this->changeOrderStatus('cart', $orderShop); | ||||
return $orderShop; | return $orderShop; | ||||
public function addOrderProduct($orderShop, $orderProductAdd, $persist = true) | public function addOrderProduct($orderShop, $orderProductAdd, $persist = true) | ||||
{ | { | ||||
$return = false; | $return = false; | ||||
if (!$orderShop) { | if (!$orderShop) { | ||||
$user = $this->security->getUser(); | $user = $this->security->getUser(); | ||||
$visitor = $this->userUtils->getVisitorCurrent(); | $visitor = $this->userUtils->getVisitorCurrent(); | ||||
$orderShop = $this->createOrderShop([ | $orderShop = $this->createOrderShop([ | ||||
'user' => $user, | 'user' => $user, | ||||
'visitor' => $visitor, | 'visitor' => $visitor, | ||||
'merchant' => $this->merchantUtils->getMerchantCurrent() | |||||
'merchant' => $this->merchantUtils->getMerchantCurrent(), | |||||
]); | ]); | ||||
} | } | ||||
namespace Lc\ShopBundle\Services\Order; | namespace Lc\ShopBundle\Services\Order; | ||||
use Lc\ShopBundle\Context\OrderShopInterface; | use Lc\ShopBundle\Context\OrderShopInterface; | ||||
use Lc\ShopBundle\Model\OrderStatus; | use Lc\ShopBundle\Model\OrderStatus; | ||||
} | } | ||||
if($createIfNotExist && !$orderShop) { | if($createIfNotExist && !$orderShop) { | ||||
$merchant = $this->merchantUtils->getMerchantCurrent() ; | |||||
$orderShop = $this->createOrderShop([ | $orderShop = $this->createOrderShop([ | ||||
'user' => $user, | 'user' => $user, | ||||
'visitor' => $visitor, | 'visitor' => $visitor, | ||||
'merchant' => $this->merchantUtils->getMerchantCurrent() | |||||
'merchant' => $merchant, | |||||
]); | ]); | ||||
} | } | ||||
} | } | ||||
$allCategoriesSalesOff = true; | $allCategoriesSalesOff = true; | ||||
$unavailableSpecificDay = false; | |||||
foreach ($product->getProductFamily()->getProductCategories() as $category){ | foreach ($product->getProductFamily()->getProductCategories() as $category){ | ||||
if($category->getParent()) { | if($category->getParent()) { | ||||
if($category->getSaleStatus() && $category->getParent()->getSaleStatus()) | if($category->getSaleStatus() && $category->getParent()->getSaleStatus()) | ||||
$allCategoriesSalesOff = false; | $allCategoriesSalesOff = false; | ||||
} | } | ||||
else { | else { | ||||
if($category->getSaleStatus()) $allCategoriesSalesOff = false; | |||||
if($category->getSaleStatus()) { | |||||
$allCategoriesSalesOff = false; | |||||
} | |||||
} | } | ||||
// specific day | |||||
$displaySpecificDay = $category->getDisplaySpecificDay() ; | |||||
if($displaySpecificDay && $displaySpecificDay != date('N')) { | |||||
$unavailableSpecificDay = true; | |||||
} | |||||
} | |||||
if($allCategoriesSalesOff) { | |||||
return false; | |||||
} | |||||
if($unavailableSpecificDay) { | |||||
return false; | |||||
} | } | ||||
if($allCategoriesSalesOff) return false; | |||||
return true ; | return true ; | ||||
} | } |
public function getBuyingPrice(ProductPropertyInterface $product) | public function getBuyingPrice(ProductPropertyInterface $product) | ||||
{ | { | ||||
if ($product->getBehaviorPriceInherited() == 'by-piece') { | if ($product->getBehaviorPriceInherited() == 'by-piece') { | ||||
return $product->getBuyingPriceInherited(); | |||||
return $product->getBuyingPriceInherited() ; | |||||
} | } | ||||
elseif ($product->getBehaviorPriceInherited() == 'by-reference-unit') { | elseif ($product->getBehaviorPriceInherited() == 'by-reference-unit') { | ||||
if ($product->getQuantityInherited() > 0) { | if ($product->getQuantityInherited() > 0) { | ||||
return $product->getBuyingPriceByRefUnitInherited() * ($product->getQuantityInherited() / $product->getUnitInherited()->getCoefficient()); | return $product->getBuyingPriceByRefUnitInherited() * ($product->getQuantityInherited() / $product->getUnitInherited()->getCoefficient()); | ||||
}else{ | |||||
} | |||||
else { | |||||
return 0; | return 0; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
public function getMultiplyingFactor(ProductPropertyInterface $product){ | |||||
public function getBuyingPriceWithTax(ProductPropertyInterface $product) | |||||
{ | |||||
return $this->applyTax( | |||||
$this->getBuyingPrice($product), | |||||
$product->getTaxRateInherited()->getValue() | |||||
); | |||||
} | |||||
public function getBuyingPriceByRefUnit(ProductPropertyInterface $product) | |||||
{ | |||||
return $product->getBuyingPriceByRefUnitInherited() ; | |||||
} | |||||
public function getBuyingPriceByRefUnitWithTax(ProductPropertyInterface $product) | |||||
{ | |||||
return $this->applyTax( | |||||
$this->getBuyingPriceByRefUnit($product), | |||||
$product->getTaxRateInherited()->getValue() | |||||
); | |||||
} | |||||
public function getMultiplyingFactor(ProductPropertyInterface $product) | |||||
{ | |||||
return $this->round($this->getPriceWithTax($product) / $this->getBuyingPrice($product)); | return $this->round($this->getPriceWithTax($product) / $this->getBuyingPrice($product)); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
public function getMultiplyingFactor($productFamily) | |||||
{ | |||||
if($productFamily->getBehaviorPrice() == ProductFamily::BEHAVIOR_PRICE_BY_PIECE) { | |||||
if($productFamily->getBuyingPrice() > 0) { | |||||
return number_format($this->priceUtils->getPriceWithTax($productFamily) / $productFamily->getBuyingPrice(), 3) ; | |||||
} | |||||
} | |||||
elseif($productFamily->getBehaviorPrice() == ProductFamily::BEHAVIOR_PRICE_BY_REFERENCE_UNIT) { | |||||
if($productFamily->getBuyingPriceByRefUnit() > 0) { | |||||
return number_format($this->priceUtils->getPriceByRefUnitWithTax($productFamily) / $productFamily->getBuyingPriceByRefUnit(), 3) ; | |||||
} | |||||
} | |||||
} | |||||
} | } |
<?php | |||||
namespace Lc\ShopBundle\Services ; | |||||
use Doctrine\ORM\EntityManagerInterface; | |||||
use Http\Discovery\Exception\NotFoundException; | |||||
use Lc\ShopBundle\Context\MerchantUtilsInterface; | |||||
use Lc\ShopBundle\Context\SectionInterface; | |||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | |||||
class SectionUtils | |||||
{ | |||||
protected $em ; | |||||
protected $merchantUtils ; | |||||
protected $sectionRepository ; | |||||
public function __construct(EntityManagerInterface $em, MerchantUtilsInterface $merchantUtils) | |||||
{ | |||||
$this->em = $em ; | |||||
$this->sectionRepository = $this->em->getRepository($this->em->getClassMetadata(SectionInterface::class)->getName()) ; | |||||
$this->merchantUtils = $merchantUtils ; | |||||
} | |||||
public function getSection($devAlias) | |||||
{ | |||||
$section = $this->sectionRepository->findOneBy([ | |||||
'merchant' => $this->merchantUtils->getMerchantCurrent(), | |||||
'devAlias' => $devAlias | |||||
]) ; | |||||
if(!$section) { | |||||
throw new NotFoundException('La section '.$devAlias.' est introuvable') ; | |||||
} | |||||
return $section ; | |||||
} | |||||
} |
$ticketMessage->setStatus(1) ; | $ticketMessage->setStatus(1) ; | ||||
$ticketMessage->setTicket($ticket) ; | $ticketMessage->setTicket($ticket) ; | ||||
$ticketMessage->setMessage($params['message']) ; | $ticketMessage->setMessage($params['message']) ; | ||||
if(isset($params['createByAdmin']) && $params['createByAdmin'])$ticketMessage->setAnswerByAdmin(true); | |||||
$this->em->persist($ticketMessage); | $this->em->persist($ticketMessage); | ||||
$this->em->flush() ; | $this->em->flush() ; | ||||
// envoi email au client | |||||
$this->mailUtils->send([ | |||||
MailUtils::SUBJECT => 'Nouvelle demande', | |||||
MailUtils::TO_EMAIL => $email, | |||||
MailUtils::CONTENT_TEMPLATE => 'mail/ticket-new', | |||||
MailUtils::CONTENT_DATA => [ | |||||
'firstname' => $firstname, | |||||
'ticket' => $ticket | |||||
], | |||||
]) ; | |||||
if(isset($params['createByAdmin']) && $params['createByAdmin']) { | |||||
// envoi email au client | |||||
$this->mailUtils->send([ | |||||
MailUtils::SUBJECT => 'Vous avez reçu un nouveau message', | |||||
MailUtils::TO_EMAIL => $email, | |||||
MailUtils::CONTENT_TEMPLATE => 'mail/ticket-new-by-admin', | |||||
MailUtils::CONTENT_DATA => [ | |||||
'firstname' => $firstname, | |||||
'ticket' => $ticket | |||||
], | |||||
]); | |||||
}else{ | |||||
$this->mailUtils->send([ | |||||
MailUtils::SUBJECT => 'Nouvelle demande', | |||||
MailUtils::TO_EMAIL => $email, | |||||
MailUtils::CONTENT_TEMPLATE => 'mail/ticket-new', | |||||
MailUtils::CONTENT_DATA => [ | |||||
'firstname' => $firstname, | |||||
'ticket' => $ticket | |||||
], | |||||
]); | |||||
} | |||||
$this->notifyAdmin($ticket, $ticketMessage); | $this->notifyAdmin($ticket, $ticketMessage); |
]); | ]); | ||||
} | } | ||||
public function urlEncryptData($datas){ | |||||
$key = 'secretToken'; | |||||
foreach ($datas as $data) { | |||||
$key .= $data; | |||||
} | |||||
return md5($key); | |||||
} | |||||
} | } |
use Lc\ShopBundle\Context\OrderUtilsInterface; | use Lc\ShopBundle\Context\OrderUtilsInterface; | ||||
use Lc\ShopBundle\Context\PriceUtilsInterface; | use Lc\ShopBundle\Context\PriceUtilsInterface; | ||||
use Lc\ShopBundle\Context\ProductFamilyUtilsInterface; | use Lc\ShopBundle\Context\ProductFamilyUtilsInterface; | ||||
use Lc\ShopBundle\Context\SectionUtilsInterface; | |||||
use Lc\ShopBundle\Context\Services\StatisticsUtilsInterface; | use Lc\ShopBundle\Context\Services\StatisticsUtilsInterface; | ||||
use Lc\ShopBundle\Context\UserUtilsInterface; | use Lc\ShopBundle\Context\UserUtilsInterface; | ||||
use League\Flysystem\Util; | use League\Flysystem\Util; | ||||
protected $ticketUtils ; | protected $ticketUtils ; | ||||
protected $statisticsUtils; | protected $statisticsUtils; | ||||
protected $pointLocationUtils ; | protected $pointLocationUtils ; | ||||
protected $sectionUtils ; | |||||
public function __construct( | public function __construct( | ||||
Utils $utils, | Utils $utils, | ||||
MailUtils $mailUtils, | MailUtils $mailUtils, | ||||
TicketUtils $ticketUtils, | TicketUtils $ticketUtils, | ||||
PointLocationUtils $pointLocationUtils, | PointLocationUtils $pointLocationUtils, | ||||
UtilsProcess $utilsProcess | |||||
UtilsProcess $utilsProcess, | |||||
SectionUtilsInterface $sectionUtils | |||||
) | ) | ||||
{ | { | ||||
$this->utils = $utils ; | $this->utils = $utils ; | ||||
$this->ticketUtils = $ticketUtils ; | $this->ticketUtils = $ticketUtils ; | ||||
$this->pointLocationUtils = $pointLocationUtils ; | $this->pointLocationUtils = $pointLocationUtils ; | ||||
$this->utilsProcess = $utilsProcess ; | $this->utilsProcess = $utilsProcess ; | ||||
$this->sectionUtils = $sectionUtils ; | |||||
} | } | ||||
public function getUtils(): Utils | public function getUtils(): Utils | ||||
return $this->utilsProcess ; | return $this->utilsProcess ; | ||||
} | } | ||||
public function getSectionUtils(): SectionUtilsInterface | |||||
{ | |||||
return $this->sectionUtils ; | |||||
} | |||||
} | } |