<?php
namespace App\Service;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\QueryBuilder;
use Omines\DataTablesBundle\Adapter\ArrayAdapter;
use Omines\DataTablesBundle\Column\TextColumn;
use Omines\DataTablesBundle\Column\DateTimeColumn;
use Omines\DataTablesBundle\Column\BoolColumn;
use Omines\DataTablesBundle\Adapter\Doctrine\ORMAdapter;
use Omines\DataTablesBundle\DataTableFactory;
use Omines\DataTablesBundle\DataTable;
use Omines\DataTablesBundle\Filter\ChoiceFilter;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class DatatablesHomeService
{
public function __construct(EntityManagerInterface $em, UrlGeneratorInterface $router, DataTableFactory $dataTableFactory,
GeneralService $general_service, TranslatorInterface $translator)
{
$this->router = $router;
$this->em = $em;
$this->factory = $dataTableFactory;
$this->general_service = $general_service;
$this->translator = $translator;
}
public function getFournisseurDerogation($user){
$table = $this->factory->create([])
->setName('datatable_superadmin_qualite')
//->add('date', DateTimeColumn::class, ['searchable' => true, 'className' => '_date', 'field' => 'u.date', 'label' => 'Date', 'format' => 'd/m/Y'])
->add('typeCmd', TextColumn::class, ['searchable' => false, 'field' => 'u.typeCmd', 'label' => $this->translator->trans('QU_TYPECOMMANDE')])
->add('numCommande', TextColumn::class, ['searchable' => true, 'field' => 'u.numCommande', 'label' => $this->translator->trans('QU_NUMCOMMANDE')])
->add('numLot', TextColumn::class, ['searchable' => true, 'field' => 'u.numLot', 'label' => $this->translator->trans('QU_NUMLOT')])
->add('reference', TextColumn::class, ['searchable' => true, 'field' => 'u.reference', 'label' => $this->translator->trans('G_REFERENCE')])
->add('coloris', TextColumn::class, ['searchable' => true, 'field' => 'color.code_couleur', 'label' => $this->translator->trans('G_COLORIS')])
->add('fournisseur', TextColumn::class, ['searchable' => false,'label' => $this->translator->trans('G_FOURNISSEUR'), 'className' => 'fiche_fourni', 'field' => 'fourni.name'])
->add('numDerogation', TextColumn::class, ['searchable' => false,'label' => $this->translator->trans('QU_NUMDERO'), 'className' => 'fiche_numdero', 'field' => 'u.numDerogation'])
->add('numPieceFournisseur', TextColumn::class, ['searchable' => false,'label' => $this->translator->trans('QU_NUMPIECEFOURNISSEUR'), 'className' => 'fiche_numpiecef', 'field' => 'u.numPieceFournisseur'])
;
$table
->createAdapter(ORMAdapter::class, [
'entity' => \App\Entity\FicheControle::class,
'query' => function (QueryBuilder $builder) use($user) {
$builder
->select('u')
->from(\App\Entity\FicheControle::class, 'u')
->join('u.statutFournisseur', 'statutf')
->join('u.statutPerele', "statutsp")
->join('u.coloris', 'color')
->join('u.fournisseur', 'fourni')
->where('statutf.id = 6 OR statutf.id = 7 OR statutf.id = 17 or statutf.id = 13')
->andWhere('u.ficheFerme = 0')
->orderBy('u.dateControleFournisseur');
if($user->getFournisseur() != null){
$builder->andWhere('fourni.id = :fid')
->setParameter('fid', $user->getFournisseur()->getId());
}
if($user->getBu() != null){
$builder->andWhere('u.bu = :bid')
->setParameter('bid', $user->getBu()->getId());
}
},
]);
return $table;
}
public function getSuperadminControlesReception(){
$table = $this->factory->create([])
->setName('datatable_superadmin_qualite')
//->add('date', DateTimeColumn::class, ['searchable' => true, 'className' => '_date', 'field' => 'u.date', 'label' => 'Date', 'format' => 'd/m/Y'])
->add('typeCmd', TextColumn::class, ['searchable' => false, 'field' => 'u.typeCmd', 'label' => $this->translator->trans('QU_TYPECOMMANDE')])
->add('numCommande', TextColumn::class, ['searchable' => true, 'field' => 'u.numCommande', 'label' => $this->translator->trans('QU_NUMCOMMANDE')])
->add('numLot', TextColumn::class, ['searchable' => true, 'field' => 'u.numLot', 'label' => $this->translator->trans('QU_NUMLOT')])
->add('reference', TextColumn::class, ['searchable' => true, 'field' => 'u.reference', 'label' => $this->translator->trans('G_REFERENCE')])
->add('coloris', TextColumn::class, ['searchable' => true, 'field' => 'color.code_couleur', 'label' => $this->translator->trans('G_COLORIS')])
->add('fournisseur', TextColumn::class, ['searchable' => false,'label' => $this->translator->trans('G_FOURNISSEUR'), 'className' => 'fiche_fourni', 'field' => 'fourni.name'])
->add('numDerogation', TextColumn::class, ['searchable' => false,'label' => 'N° déro', 'className' => 'fiche_numdero', 'field' => 'u.numDerogation'])
->add('numPieceFournisseur', TextColumn::class, ['searchable' => false,'label' => 'N°pièce fournisseur', 'className' => 'fiche_numpiecef', 'field' => 'u.numPieceFournisseur'])
;
$table
->createAdapter(ORMAdapter::class, [
'entity' => \App\Entity\FicheControle::class,
'query' => function (QueryBuilder $builder) {
$builder
->select('u')
->from(\App\Entity\FicheControle::class, 'u')
->join('u.statutFournisseur', 'statutf')
->join('u.statutPerele', "statutsp")
->join('u.coloris', 'color')
->join('u.fournisseur', 'fourni')
->where('statutf.id = 6') // OR statutf.id = 7 OR statutf.id = 17 or statutf.id = 13
->andWhere('u.ficheFerme = 0')
->orderBy('u.dateControleFournisseur');
},
]);
return $table;
}
public function getAtelierAttenteAtelier($user){
$table = $this->factory->create([])
->setName('datatable_ateliers_attente')
//->add('date', DateTimeColumn::class, ['searchable' => true, 'className' => '_date', 'field' => 'u.date', 'label' => 'Date', 'format' => 'd/m/Y'])
->add('statuta', TextColumn::class, ['searchable' => false, 'field' => 'statuta.name_fr', 'label' => "Statut atelier"])
->add('reference', TextColumn::class, ['searchable' => true, 'field' => 'u.reference', 'label' => $this->translator->trans('G_REFERENCE')])
->add('coloris', TextColumn::class, ['searchable' => true, 'field' => 'color.code_couleur', 'label' => $this->translator->trans('G_COLORIS')])
->add('fournisseur', TextColumn::class, ['searchable' => false,'label' => $this->translator->trans('G_FOURNISSEUR'), 'className' => 'fiche_fourni', 'field' => 'fourni.name'])
->add('tailles', TextColumn::class, ['searchable' => true, 'field' => 'u.tailles', 'label' => $this->translator->trans('G_TAILLE')])
->add('numLancement', TextColumn::class, ['searchable' => false,'label' => 'N° lancement', 'className' => 'fiche_numdero', 'field' => 'u.numLancement'])
->add('numLot', TextColumn::class, ['searchable' => true, 'field' => 'u.numLot', 'label' => $this->translator->trans('QU_NUMLOT')])
->add('quantiteControlee', TextColumn::class, ['searchable' => false,'label' => 'Quantité controlée', 'field' => 'u.quantiteControlee'])
->add('quantiteNonConforme', TextColumn::class, ['searchable' => false,'label' => 'Quantité NC', 'field' => 'u.quantiteNonConforme'])
->add('commentaires', TextColumn::class, ['searchable' => false,'label' => 'Commentaires', 'field' => 'u.commentaires'])
->add('userSaisie', TextColumn::class, ['searchable' => false,'label' => 'Saisie par', 'field' => 'u.userSaisie'])
->add('pdtFinisBloqueNonMonte', TextColumn::class, ['searchable' => false,'label' => 'Pdts finis bloqués non montés', 'field' => 'u.pdtFinisBloqueNonMonte'])
->add('pdtFiniMonteNc', TextColumn::class, ['searchable' => false,'label' => 'Pdts finis montés NC', 'field' => 'u.pdtFiniMonteNc'])
;
$table
->createAdapter(ORMAdapter::class, [
'entity' => \App\Entity\FicheRetourAtelier::class,
'query' => function (QueryBuilder $builder) use($user){
$builder
->select('u')
->from(\App\Entity\FicheRetourAtelier::class, 'u')
->join('u.statutSp', 'statut')
->join('u.statutAtelier', 'statuta')
->join('u.coloris2', 'color')
->join('u.fournisseur', 'fourni')
->where('u.ficheFerm = 0')
->andWhere('statuta.id = :sid')
->setParameter('sid', 13)
->orderBy('u.dateCrea')
;
if($user->getAtelier() != null){
$builder->join('u.atelier', 'ate')
->andWhere('ate.id = :ateid')
->setParameter('ateid', $user->getAtelier()->getId());
}
},
]);
return $table;
}
public function getAtelierAttenteDecision($user){
$table = $this->factory->create([])
->setName('datatable_ateliers_decision')
//->add('date', DateTimeColumn::class, ['searchable' => true, 'className' => '_date', 'field' => 'u.date', 'label' => 'Date', 'format' => 'd/m/Y'])
->add('statuta', TextColumn::class, ['searchable' => false, 'field' => 'statuta.name_fr', 'label' => "Statut atelier"])
->add('reference', TextColumn::class, ['searchable' => true, 'field' => 'u.reference', 'label' => $this->translator->trans('G_REFERENCE')])
->add('coloris', TextColumn::class, ['searchable' => true, 'field' => 'color.code_couleur', 'label' => $this->translator->trans('G_COLORIS')])
->add('fournisseur', TextColumn::class, ['searchable' => false,'label' => $this->translator->trans('G_FOURNISSEUR'), 'className' => 'fiche_fourni', 'field' => 'fourni.name'])
->add('tailles', TextColumn::class, ['searchable' => true, 'field' => 'u.tailles', 'label' => $this->translator->trans('G_TAILLE')])
->add('numLancement', TextColumn::class, ['searchable' => false,'label' => 'N° lancement', 'className' => 'fiche_numdero', 'field' => 'u.numLancement'])
->add('numLot', TextColumn::class, ['searchable' => true, 'field' => 'u.numLot', 'label' => $this->translator->trans('QU_NUMLOT')])
->add('quantiteControlee', TextColumn::class, ['searchable' => false,'label' => 'Quantité controlée', 'field' => 'u.quantiteControlee'])
->add('quantiteNonConforme', TextColumn::class, ['searchable' => false,'label' => 'Quantité NC', 'field' => 'u.quantiteNonConforme'])
->add('commentaires', TextColumn::class, ['searchable' => false,'label' => 'Commentaires', 'field' => 'u.commentaires'])
->add('userSaisie', TextColumn::class, ['searchable' => false,'label' => 'Saisie par', 'field' => 'u.userSaisie'])
->add('pdtFinisBloqueNonMonte', TextColumn::class, ['searchable' => false,'label' => 'Pdts finis bloqués non montés', 'field' => 'u.pdtFinisBloqueNonMonte'])
->add('pdtFiniMonteNc', TextColumn::class, ['searchable' => false,'label' => 'Pdts finis montés NC', 'field' => 'u.pdtFiniMonteNc'])
;
$table
->createAdapter(ORMAdapter::class, [
'entity' => \App\Entity\FicheRetourAtelier::class,
'query' => function (QueryBuilder $builder) use($user){
$builder
->select('u')
->from(\App\Entity\FicheRetourAtelier::class, 'u')
->join('u.statutSp', 'statut')
->join('u.statutAtelier', 'statuta')
->join('u.coloris2', 'color')
->join('u.fournisseur', 'fourni')
->where('u.ficheFerm = 0')
->andWhere('statut.id = :sid')
->setParameter('sid', 4)
->orderBy('u.dateCrea')
;
if($user->getAtelier() != null){
$builder->join('u.atelier', 'ate')
->andWhere('ate.id = :ateid')
->setParameter('ateid', $user->getAtelier()->getId());
}
},
]);
return $table;
}
public function getSuperadminAtelierAttente($user)
{
$table = $this->factory->create([])
->setName('datatable_superadmin_ateliers')
//->add('date', DateTimeColumn::class, ['searchable' => true, 'className' => '_date', 'field' => 'u.date', 'label' => 'Date', 'format' => 'd/m/Y'])
->add('statuta', TextColumn::class, ['searchable' => false, 'field' => 'statuta.name_fr', 'label' => "Statut atelier"])
->add('reference', TextColumn::class, ['searchable' => true, 'field' => 'u.reference', 'label' => $this->translator->trans('G_REFERENCE')])
->add('coloris', TextColumn::class, ['searchable' => true, 'field' => 'color.code_couleur', 'label' => $this->translator->trans('G_COLORIS')])
->add('fournisseur', TextColumn::class, ['searchable' => false,'label' => $this->translator->trans('G_FOURNISSEUR'), 'className' => 'fiche_fourni', 'field' => 'fourni.name'])
->add('tailles', TextColumn::class, ['searchable' => true, 'field' => 'u.tailles', 'label' => $this->translator->trans('G_TAILLE')])
->add('numLancement', TextColumn::class, ['searchable' => false,'label' => 'N° lancement', 'className' => 'fiche_numdero', 'field' => 'u.numLancement'])
->add('numLot', TextColumn::class, ['searchable' => true, 'field' => 'u.numLot', 'label' => $this->translator->trans('QU_NUMLOT')])
->add('quantiteControlee', TextColumn::class, ['searchable' => false,'label' => 'Quantité controlée', 'field' => 'u.quantiteControlee'])
->add('quantiteNonConforme', TextColumn::class, ['searchable' => false,'label' => 'Quantité NC', 'field' => 'u.quantiteNonConforme'])
->add('commentaires', TextColumn::class, ['searchable' => false,'label' => 'Commentaires', 'field' => 'u.commentaires'])
->add('userSaisie', TextColumn::class, ['searchable' => false,'label' => 'Saisie par', 'field' => 'u.userSaisie'])
->add('pdtFinisBloqueNonMonte', TextColumn::class, ['searchable' => false,'label' => 'Pdts finis bloqués non montés', 'field' => 'u.pdtFinisBloqueNonMonte'])
->add('pdtFiniMonteNc', TextColumn::class, ['searchable' => false,'label' => 'Pdts finis montés NC', 'field' => 'u.pdtFiniMonteNc'])
;
$table
->createAdapter(ORMAdapter::class, [
'entity' => \App\Entity\FicheRetourAtelier::class,
'query' => function (QueryBuilder $builder) use($user){
$builder
->select('u')
->from(\App\Entity\FicheRetourAtelier::class, 'u')
->join('u.statutSp', 'statut')
->join('u.statutAtelier', 'statuta')
->join('u.coloris2', 'color')
->join('u.fournisseur', 'fourni')
->where('u.ficheFerm = 0')
->andWhere('statut.id = :sid')
->setParameter('sid', 4)
->orderBy('u.dateCrea')
;
if($user->getDroits()->getRole() == "ROLE_SUPERADMIN" || $user->getDroits()->getRole() == "ROLE_ADMIN"){
}else{
//$builder->andWhere('u.bu = :bu')
// ->setParameter('bu', $user->getBu()->getId())
// ;
}
},
]);
return $table;
}
}