<?php
/**
* Created by Mediterranean Develup Solutions
* User: jorge.defreitas@develup.solutions
* Date: 06/07/2017
* Time: 14:26
*/
namespace App\Controller;
use App\Entity\Cities;
use App\Entity\Country;
use App\Entity\Provinces;
use App\Entity\Regions;
use App\Entity\Supplier;
use App\Entity\RevisionCarga;
use App\Entity\SupplierContact;
use App\Entity\SupplierDescription;
use App\Entity\SupplierGroup;
use App\Entity\SupplierIdeaServicesControl;
use App\Entity\SupplierSettingsType;
use App\Form\SupplierSettingsTypeType;
use App\Form\SupplierType;
use Doctrine\ORM\EntityManagerInterface;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Contracts\Translation\TranslatorInterface;
class SupplierController extends AbstractController
{
private $translator;
private EntityManagerInterface $em;
public function __construct(TranslatorInterface $translator, EntityManagerInterface $em) {
$this->translator = $translator;
$this->em = $em;
}
/**
* @Route("/supplier", name="supplier_home")
*/
public function indexAction(Request $request) {
return $this->redirectToRoute('supplier_index_simple_letters', [ 'ind' => 0 ]);
}
/**
* @Route("/supplier/list/{idgroup}", defaults={"idgroup" = 0}, name="supplier_index")
*/
public function listAction($idgroup, Request $request) {
$em = $this->getDoctrine()->getManager();
$name = is_null($request->request->get('settingstype'))? '' : $request->request->get('settingstype')['name'];
$suppliersettingstypefrom = new SupplierSettingsType();
if (!empty($name)) {
$suppliersettingstype = $em->getRepository(SupplierSettingsType::class)->findOneByName($name);
$suppliersettingstypefrom->setName($suppliersettingstype);
}
$form = $this->createSupplierSettingsTypeForm($suppliersettingstypefrom);
$group = $em->getRepository(SupplierGroup::class)->findById($idgroup);
if (!empty($name)){
$suppliers = $em->getRepository(Supplier::class)->findBy(
array( 'tags' => $name )
);
}else{
if ($idgroup == 0){
$suppliers = $em->getRepository(Supplier::class)->findAll();
}else{
$suppliers = $em->getRepository(Supplier::class)->findBy(
array( 'groupId' => $idgroup)
);
}
}
/* evitar errores por no tener nada */
$data_supplier = array();
foreach($suppliers as $supplier) {
$country = $em->getRepository(Country::class)->findOneById($supplier->getCountry());
$supplier->setCountry($country->getCountry());
$regions = $em->getRepository(Regions::class)->findOneById($supplier->getRegion());
if (!(is_null($regions))) {
$supplier->setRegion($regions->getRegion());
}else{
$supplier->setRegion('1');
}
$province = $em->getRepository(Provinces::class)->findOneById($supplier->getProvince());
if (!(is_null($province))) {
$supplier->setProvince($province->getName());
}else{
$supplier->setProvince('1');
}
$cities = $em->getRepository(Cities::class)->findOneById($supplier->getPopulation());
$supplier->setPopulation($cities->getCity());
if (!is_null($supplier->getGroupId())){
$groupname = $em->getRepository(SupplierGroup::class)->findOneById($supplier->getGroupId());
if(is_null($groupname)){
$supplier->setGroupId("N/G");
}else{
$supplier->setGroupId($groupname->getName());
}
}
$contacts = $em->getRepository(SupplierContact::class)->findBy(
array( 'supplierId' => $supplier->getId())
);
$supplierIdeaServicesControl = $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($supplier->getId());
if (!empty($supplierIdeaServicesControl)) { //Gustavo Ayala: agregué este condicional para para que si viene vacio el getId no genere un error
$data_supplier[] = array(
'controlGid' => $supplierIdeaServicesControl->getId(),
'supplier' => $supplier,
'contacts' => $contacts
);
}
}
return $this->render('supplier/supplier/list-supplier.html.twig', array(
'groups' => $group,
'supplier' => $data_supplier,
'form' => $form->createView()
));
}
private function createSupplierSettingsTypeForm(SupplierSettingsType $entity)
{
$form = $this->createForm(SupplierSettingsTypeType::class, $entity, array(
'action' => $this->generateUrl('supplier_index'),
'method' => 'POST'
));
return $form;
}
/**
* @Route("/supplier/listsimple/{ind}", defaults={"ind" = 0}, name="supplier_index_simple")
*/
public function listSupplierSimpleAction($ind, Request $request) {
$idgroup = 0;
$em = $this->getDoctrine()->getManager();
$name = $request->request->get('settingstype')['name'];
$suppliersettingstypefrom = new SupplierSettingsType();
if (!empty($name)) {
$suppliersettingstype = $em->getRepository(SupplierSettingsType::class)->findOneByName($name);
$suppliersettingstypefrom->setName($suppliersettingstype);
}
$form = $this->createSupplierSettingsTypeForm($suppliersettingstypefrom);
$group = $em->getRepository(SupplierGroup::class)->findById($idgroup);
$suppliersBigArray = array();
if (!empty($name)){
$suppliers = $em->getRepository(Supplier::class)->findBy(
array( 'tags' => $name )
);
}else{
if ($idgroup == 0){
// $suppliers = $em->getRepository(Supplier::class)->findAll();
$parameters = array();
// $dql = 'SELECT p
// FROM App\Entity\Supplier p
// WHERE p.idDocument is not NULL
// ORDER BY p.id ASC ';
$dql = 'SELECT p
FROM App\Entity\Supplier p
ORDER BY p.name ASC ';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliersBigArray = $query->getResult();
}else{
$suppliers = $em->getRepository(Supplier::class)->findBy(
array( 'groupId' => $idgroup)
);
}
}
$ind = $ind * 250;
$suppliers = array_slice($suppliersBigArray, $ind, 250);
// Generando el arreglo de la botonera para los saltos de pagina
$indStart = 0;
$indEndArray = sizeof($suppliersBigArray) - 1;
$arrayBoton = array();
for($indStart = 0; $indStart <= $indEndArray; $indStart = $indStart + 250){
if($indStart + 250 > $indEndArray){
//Ya tienes el ultimo elemento
$indEnd = $indEndArray;
} else {
$indEnd = $indStart + 249;
}
//Buscamos las letras y compañias de inicio y fin
$companyInicio = $suppliersBigArray[$indStart]->getName();
$letraInicio = substr($companyInicio, 0,1);
$companyFin = $suppliersBigArray[$indEnd]->getName();
$letraFin = substr($companyFin, 0,1);
$elem = array(
'indInicio' => $indStart,
'indFin' => $indEnd,
'letraInicio' => $letraInicio,
'companyInicio' => $companyInicio,
'letraFin' => $letraFin,
'companyFin' => $companyFin,
);
$arrayBoton[] = $elem;
}
/* evitar errores por no tener nada */
$data_supplier = array();
foreach($suppliers as $supplier) {
$country = $em->getRepository(Country::class)->findOneById($supplier->getCountry());
$supplier->setCountry($country->getCountry());
$regions = $em->getRepository(Regions::class)->findOneById($supplier->getRegion());
if (!(is_null($regions))) {
$supplier->setRegion($regions->getRegion());
}else{
$supplier->setRegion('1');
}
$province = $em->getRepository(Provinces::class)->findOneById($supplier->getProvince());
if (!(is_null($province))) {
$supplier->setProvince($province->getName());
}else{
$supplier->setProvince('1');
}
$cities = $em->getRepository(Cities::class)->findOneById($supplier->getPopulation());
$supplier->setPopulation($cities->getCity());
if (!is_null($supplier->getGroupId())){
$groupname = $em->getRepository(SupplierGroup::class)->findOneById($supplier->getGroupId());
if (!is_null($groupname)) {
$supplier->setGroupId($groupname->getName());
}
}
// $contacts = $em->getRepository(SupplierContact::class)->findBy(
// array( 'supplierId' => $supplier->getId())
// );
$supplierIdeaServicesControl = $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($supplier->getId());
$arraySuppliers = array(
'groupId' => $supplier->getGroupId(),
'tags' => $supplier->getTags(),
'type' => $supplier->getType(),
'name' => $supplier->getName(),
'idDocument' => $supplier->getIdDocument(),
'company' => $supplier->getCompany(),
'id' => $supplier->getId(),
);
if (!empty($supplierIdeaServicesControl)) {
$data_supplier[] = array(
'controlGid' => $supplierIdeaServicesControl->getId(),
'supplier' => $arraySuppliers,
// 'supplier' => $supplier,
// 'contacts' => $contacts
);
}
}
return $this->render('supplier/supplier/list-supplier-simple.html.twig', array(
'groups' => $group,
'supplier' => $data_supplier,
'arrayBoton' => $arrayBoton,
'form' => $form->createView()
));
}
/**
* @Route("/supplier/supplierlistsimpleletters/{ind}", name="supplier_index_simple_letters")
*/
public function listSupplierSimpleLettersAction($ind, Request $request)
{
$em = $this->getDoctrine()->getManager();
$data_supplier = array();
$arrayBoton = array();
if (true){
// Creacion de la Botonera
$elem = array('letra' => '0'); $arrayBoton['0'] = $elem;
$elem = array('letra' => 'A'); $arrayBoton['A'] = $elem;
$elem = array('letra' => 'B'); $arrayBoton['B'] = $elem;
$elem = array('letra' => 'C'); $arrayBoton['C'] = $elem;
$elem = array('letra' => 'D'); $arrayBoton['D'] = $elem;
$elem = array('letra' => 'E'); $arrayBoton['E'] = $elem;
$elem = array('letra' => 'F'); $arrayBoton['F'] = $elem;
$elem = array('letra' => 'G'); $arrayBoton['G'] = $elem;
$elem = array('letra' => 'H'); $arrayBoton['H'] = $elem;
$elem = array('letra' => 'I'); $arrayBoton['I'] = $elem;
$elem = array('letra' => 'J'); $arrayBoton['J'] = $elem;
$elem = array('letra' => 'K'); $arrayBoton['K'] = $elem;
$elem = array('letra' => 'L'); $arrayBoton['L'] = $elem;
$elem = array('letra' => 'M'); $arrayBoton['M'] = $elem;
$elem = array('letra' => 'N'); $arrayBoton['N'] = $elem;
$elem = array('letra' => 'Ñ'); $arrayBoton['Ñ'] = $elem;
$elem = array('letra' => 'O'); $arrayBoton['O'] = $elem;
$elem = array('letra' => 'P'); $arrayBoton['P'] = $elem;
$elem = array('letra' => 'Q'); $arrayBoton['Q'] = $elem;
$elem = array('letra' => 'R'); $arrayBoton['R'] = $elem;
$elem = array('letra' => 'S'); $arrayBoton['S'] = $elem;
$elem = array('letra' => 'T'); $arrayBoton['T'] = $elem;
$elem = array('letra' => 'U'); $arrayBoton['U'] = $elem;
$elem = array('letra' => 'V'); $arrayBoton['V'] = $elem;
$elem = array('letra' => 'W'); $arrayBoton['W'] = $elem;
$elem = array('letra' => 'X'); $arrayBoton['X'] = $elem;
$elem = array('letra' => 'Y'); $arrayBoton['Y'] = $elem;
$elem = array('letra' => 'Z'); $arrayBoton['Z'] = $elem;
}
if ($ind == '0'){
// Caso base, viene vacio se mostraran los que no empiezan por letra
$arraySuppliersZero = $em->getRepository(Supplier::class)->findAll();
$arraySuppliers = array();
// Creamos un arreglo con los indices
foreach ($arraySuppliersZero as $item){
$arraySuppliers[$item->getId()] = $item;
}
//Eliminamos del arreglo los elelmentos que se deban listar en A,B,C,...,Y,Z
if (true){
$indice = 'a';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'b';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'c';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'd';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'e';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'f';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'g';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'h';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'i';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'j';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'k';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'l';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'm';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'n';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'ñ';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'o';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'p';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'q';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'r';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 's';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 't';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'u';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'v';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'w';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'x';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'y';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
if (true){
$indice = 'z';
$parameters = array(
'namelist' => $indice.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
// Buscamos los elementos de esta letra y los removemos del arreglo
foreach ($suppliers as $item){
if (array_key_exists($item->getId(),$arraySuppliers)){
// Si el elemento se encuentra en el arreglo lo quitamos por que pertenece al listado de la letra
unset($arraySuppliers[$item->getId()]);
}
}
}
$suppliers = $arraySuppliers;
} else {
$parameters = array(
'namelist' => $ind.'%'
);
$dql = 'SELECT i
FROM App\Entity\Supplier i
WHERE i.name LIKE :namelist
ORDER BY i.name ASC';
$query = $em->createQuery($dql)->setParameters($parameters);
$suppliers = $query->getResult();
}
foreach($suppliers as $supplier){
$supplierIdeaServicesControl = $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($supplier->getId());
$arraySuppliers = array(
'groupId' => $supplier->getGroupId(),
'tags' => $supplier->getTags(),
'type' => $supplier->getType(),
'name' => $supplier->getName(),
'idDocument' => $supplier->getIdDocument(),
'company' => $supplier->getCompany(),
'id' => $supplier->getId(),
);
if (!empty($supplierIdeaServicesControl)) {
$data_supplier[] = array(
'controlGid' => $supplierIdeaServicesControl->getId(),
'supplier' => $arraySuppliers,
);
}
}
return $this->render('supplier/supplier/list-supplier-simple-letters.html.twig', array(
'supplier' => $data_supplier,
'arrayBoton' => $arrayBoton,
));
}
/**
* @Route("/supplier/add", name="supplier_add")
*/
public function addSupplierAction(Request $request)
{
$supplier = new Supplier();
$form = $this->createSupplierCreateForm($supplier);
return $this->render('supplier/supplier/add-supplier.html.twig',
array(
'description' => '',
'form' => $form->createView()
)
);
}
private function createSupplierCreateForm(Supplier $entity)
{
$form = $this->createForm(SupplierType::class, $entity, array(
'action' => $this->generateUrl('supplier_create'),
'method' => 'POST'
));
return $form;
}
/**
* @Route("/supplier/create", name="supplier_create")
*/
public function createAction(Request $request, LoggerInterface $logger)
{
$tags = $request->request->get('supplier')['tags'] ?? [];
if(isset($request->request->get('supplier')['tags'])){
$supplierData = $request->request->get('supplier');
$supplierData['tags'] = implode(',', $tags); // Elimina 'tags' del array clonado
// Reemplaza el array de 'supplier' modificado de vuelta en el request
$request->request->set('supplier', $supplierData);
}
$region = $request->request->get('supplier')['region'];
$province = $request->request->get('supplier')['province'];
$population = $request->request->get('supplier')['population'];
/*PARA MAYUSCULAS*/
$name = $request->request->get('supplier')['name'];
$company = $request->request->get('supplier')['company'];
/* esto lo obtengo a las malas del formulario :) */
$language_data = $request->request->get("language");
$description_data = $request->request->get("description");
$description_form = array(
'language' => $language_data,
'description' => $description_data
);
$supplier = new Supplier();
$form = $this->createSupplierCreateForm($supplier);
$form->handleRequest($request);
$supplier ->setPopulation($population);
$supplier ->setProvince($province);
$supplier ->setRegion($region);
$url = $request->request->get('supplier')['url'];
if(!empty($url)){
$urlparts= parse_url($url);
if(isset($urlparts['scheme'])){
$scheme = $urlparts['scheme'];
if ($scheme == 'https' OR $scheme == 'http') {
$supplier->setUrl($url);
}else{
$supplier->setUrl('http://'.$url);
}
}else{
$supplier->setUrl('http://'.$url);
}
}
if(!empty($name)){
$supplier ->setName(strtoupper($name));
}
if(!empty($company)){
$supplier ->setCompany(strtoupper($company));
}
$group_client = $form->get('groupId')->getData();
if(!is_null($group_client)){
$supplier->setGroupId($group_client->getId());
}
$telephone_data = $form->get('telephone')->getData();
// $email_data = $form->get('email')->getData();
$country = $form->get('country')->getData();
if(!is_null($country)){
$supplier->setCountry($country->getId());
}
$errores=0;
$campo="";
if (empty($population)){
$errores = 1;
$campo = $this->translator->trans("City");
}elseif (empty($province)){
$errores = 1;
$campo = $this->translator->trans("Province");
}
$type = $form->get('type')->getData();
if(!is_null($type)) {
$supplier->setType($type->getBase());
}
// if(isset($request->request->get('supplier')['tags']) && $request->request->get('supplier')['tags'] != ''){
$supplier->setTags($request->request->get('supplier')['tags']);
$verifico_phone = $this->getDoctrine()->getRepository(Supplier::class)->findOneByTelephone($telephone_data);
// $verifico_email = $this->getDoctrine()->getRepository(Supplier::class)->findOneByEmail($email_data);
$isSupplierInOut = $form->get('is_supplier_in_out')->getData();
$isSupplierGreenPatio = $form->get('is_supplier_green_patio')->getData();
$isSupplierAvExpress = $form->get('is_supplier_av_express')->getData();
$isSupplierDevelup = $form->get('is_supplier_develup')->getData();
if(!is_null($isSupplierInOut)){
$supplier->setIsSupplierInOut($isSupplierInOut);
}
if(!is_null($isSupplierGreenPatio)){
$supplier->setIsSupplierGreenPatio($isSupplierGreenPatio);
}
if(!is_null($isSupplierAvExpress)){
$supplier->setIsSupplierAvExpress($isSupplierAvExpress);
}
if(!is_null($isSupplierDevelup)){
$supplier->setIsSupplierDevelup($isSupplierDevelup);
}
if($errores == "0") {
if (empty($verifico_phone)) {
if($form->isValid())
{
$em = $this->getDoctrine()->getManager();
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$supplier->setCreatedId($user_id);
$supplier->setUpdatedId($user_id);
// $em->persist($supplier);
// $em->flush();
/* Gestión de eventos en Log */
$user_lastname = $user_logueado->getLastname();
$user_name = $user_logueado->getName();
$user_email = $user_logueado->getEmail();
$user_rol = $user_logueado->getRoles();
$event_url = $request->getPathInfo();
$event_complete = $user_name.' '.$user_lastname.' - '.$user_email.' - '.$user_rol[0].' | '.$event_url;
try{
$em->persist($supplier);
$em->flush();
$controlgeneral = new SupplierIdeaServicesControl();
$controlgeneral->setSupplierId($supplier->getId());
$em->persist($controlgeneral);
$em->flush();
/* Meto :p la data en description */
if (!empty($language_data) && !empty($description_data)) {
$description = new SupplierDescription();
$description->setSupplierId($controlgeneral->getId());
$description->setLanguage($language_data);
$description->setDescription($description_data);
$description->setCreatedId($user_id);
$description->setUpdatedId($user_id);
$em->persist($description);
$em->flush();
} else {
$description = new SupplierDescription();
$description->setSupplierId($controlgeneral->getId());
$description->setLanguage(0);
$description->setDescription('');
$description->setCreatedId($user_id);
$description->setUpdatedId($user_id);
$em->persist($description);
$em->flush();
}
// Control para el sistema de revision
$revision1 = new RevisionCarga();
$revision2 = new RevisionCarga();
$revision3 = new RevisionCarga();
$revision1->setIdType($supplier->getId());
$revision2->setIdType($supplier->getId());
$revision3->setIdType($supplier->getId());
$revision1->setName($supplier->getName());
$revision2->setName($supplier->getName());
$revision3->setName($supplier->getName());
// Datos generales
$revision1->setType('PROVEEDOR - Datos');
$revision1->setLink('supplier/edit/'.$supplier->getId());
$revision1->setStatus(false);
$em->persist($revision1);
$em->flush();
// Descripcion
$revision2->setType('PROVEEDOR - Descripción');
// Buscamos el ID de la descripcion
$idact = $supplier->getId();
$controlgeneral = $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($idact);
$idctrl = $controlgeneral->getId();
$supdesc = $em->getRepository(SupplierDescription::class)->findOneBySupplierId($idctrl);
$id = $supdesc->getId();
// FIN Buscamos el ID de la descripcion
$revision2->setLink('supplier/description/edit/'.$id);
$revision2->setStatus(false);
$em->persist($revision2);
$em->flush();
// Galería
$revision3->setType('PROVEEDOR - Galería');
$revision3->setLink('supplier/gallery/list/'.$supplier->getId());
$revision3->setStatus(false);
$em->persist($revision3);
$em->flush();
// FIN Control para el sistema de revision
$event = 'The supplier has been created..';
$successMessage = $this->translator->trans($event);
$this->addFlash('mensajesupplier', $successMessage);
$logger->info($event_complete.' | '.$event);
} catch (\Exception $e){
$event = 'An error occurred: '.$e->getMessage();
/* Para el log */
$logger->error($event_complete.' | '.$event);
/* Para el usuario */
$errorMessage = $this->translator->trans($event);
$this->addFlash('mensajesuppliererror', $errorMessage);
}
/* Fin Gestión de eventos en Log */
// $supplierrappelcontrol = new SupplierRappelControl();
// $supplierrappelcontrol->setSupplierId($supplier->getId());
// $supplierrappelcontrol->setCreatedId($user_id);
// $supplierrappelcontrol->setUpdatedId($user_id);
// $em->persist($supplierrappelcontrol);
// $em->flush();
// return $this->redirectToRoute('supplier_index_simple_letters', [ 'ind' => 0 ]);
/*CONTROL GENERAL*/
$controlgeneral = $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($supplier->getId());
$ids = $controlgeneral->getId();
return $this->redirectToRoute('services_index',
array(
'ids' => $ids
)
);
}else{
$errorMessage = $this->translator->trans('Error, some fields are empty');
$this->addFlash('mensajesuppliererror', $errorMessage);
}
}else{
$errorMessage = $this->translator->trans('The Supplier already exists');
$this->addFlash('mensajesuppliererror', $errorMessage);
}
} else {
$errorMessage = $this->translator->trans('Error, this field is empty ');
$this->addFlash('mensajeclienterror', $errorMessage.$campo);
}
return $this->render('supplier/supplier/add-supplier.html.twig', array(
'description' => $description_form,
'form' => $form->createView())
);
}
/**
* @Route("/supplier/edit/{id}", name="supplier_edit")
*/
public function editAction($id)
{
$em = $this->getDoctrine()->getManager();
/*CONTROL GENERAL*/
$controlgeneral = $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($id);
$ids = $controlgeneral->getId();
$supplier = $em->getRepository(Supplier::class)->findOneById($id);
$country = $em->getRepository(Country::class)->findOneById($supplier->getCountry());
$supplier->setCountry($country);
$grupo = $em->getRepository(SupplierGroup::class)->findOneById($supplier->getGroupId());
$supplier->setGroupId($grupo);
$suppliersettingstype = $em->getRepository(SupplierSettingsType::class)->findOneByName($supplier->getType());
$supplier->setType($suppliersettingstype);
$form = $this->createEditSupplierForm($supplier, $id);
$tags = explode(",", $supplier->getTags());
$supplier->setTags($tags);
return $this->render('supplier/supplier/edit-supplier.html.twig',
array(
'id' =>$id,
'ids' =>$ids,
'supplier' => $supplier,
'form' => $form->createView()
)
);
}
private function createEditSupplierForm(Supplier $entity, $id)
{
$form = $this->createForm(SupplierType::class, $entity,
array(
'action' => $this->generateUrl('supplier_update',
array(
'id' => $id
)
), 'method' => 'PUT'));
return $form;
}
/**
* @Route("/supplier/update/{id}", name="supplier_update", methods={"POST", "PUT"})
*/
public function updateAction($id, Request $request, LoggerInterface $logger)
{
$province = $request->request->get('supplier')['province'];
$population = $request->request->get('supplier')['population'];
$region = $request->request->get('supplier')['region'];
/*PARA MAYUSCULAS*/
$name = $request->request->get('supplier')['name'];
$company = $request->request->get('supplier')['company'];
$em = $this->getDoctrine()->getManager();
/*CONTROL GENERAL*/
$controlgeneral = $em->getRepository(SupplierIdeaServicesControl::class)->findOneBySupplierId($id);
$ids = $controlgeneral->getId();
$supplier = $em->getRepository(Supplier::class)->findOneById($id);
$url = $request->request->get('supplier')['url'];
$form = $this->createEditSupplierForm($supplier, $id);
$form->handleRequest($request);
if(!empty($url)){
$urlparts= parse_url($url);
if(isset($urlparts['scheme'])){
$scheme = $urlparts['scheme'];
if ($scheme == 'https' OR $scheme == 'http') {
$supplier->setUrl($url);
}else{
$supplier->setUrl('http://'.$url);
}
}else{
$supplier->setUrl('http://'.$url);
}
}
$supplier ->setPopulation($population);
$supplier ->setProvince($province);
$supplier ->setRegion($region);
if(!empty($name)){
$supplier ->setName(strtoupper($name));
}
if(!empty($company)){
$supplier ->setCompany(strtoupper($company));
}
$country = $form->get('country')->getData();
if(!is_null($country)){
$supplier->setCountry($country->getId());
}
$type = $form->get('type')->getData();
if(!is_null($type)) {
$supplier->setType($type->getBase());
}
if(isset($request->request->get('supplier')['tags']) && !empty($request->request->get('supplier')['tags'])){
$supplier_tags = $request->request->get('supplier')['tags'];
if(!is_null($supplier_tags)){
$supplier->setTags($supplier_tags);
}
}else{
}
$groupId = $form->get('groupId')->getData();
if(!is_null($groupId)){
$supplier->setGroupId($groupId->getId());
}
if($form->isSubmitted() && $form->isValid())
{
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$supplier->getUpdatedId($user_id);
$em = $this->getDoctrine()->getManager();
// $em->persist($supplier);
// $em->flush();
/* Gestión de eventos en Log */
$user_lastname = $user_logueado->getLastname();
$user_name = $user_logueado->getName();
$user_email = $user_logueado->getEmail();
$user_rol = $user_logueado->getRoles();
$event_url = $request->getPathInfo();
$event_complete = $user_name.' '.$user_lastname.' - '.$user_email.' - '.$user_rol[0].' | '.$event_url;
try{
$em->persist($supplier);
$em->flush();
// Control para el sistema de revision
// Puede existir una revision de esta actividad
$em = $this->getDoctrine()->getManager();
$revision = $em->getRepository(RevisionCarga::class)->findOneBy(
array('idtype'=>$supplier->getId(),
'type'=>'PROVEEDOR - Datos'));
if ($revision == null){
// Se hace una nueva revision - Titulo, Destino y observacion
$revision = new RevisionCarga();
$revision->setIdType($supplier->getId());
$revision->setName($supplier->getName());
$revision->setType('PROVEEDOR - Datos');
$revision->setLink('supplier/edit/'.$supplier->getId());
} else {
// Ya hay una revision previa
$revision->setName($supplier->getName()); // El nombre puede haber cambiado
}
$revision->setStatus(false);
$em->persist($revision);
$em->flush();
// FIN Control para el sistema de revision
$event = 'The supplier has been modified.';
$successMessage = $this->translator->trans($event);
$this->addFlash('mensajesupplier', $successMessage);
$logger->info($event_complete.' | '.$event);
} catch (\Exception $e){
$event = 'An error occurred: '.$e->getMessage().' | transport';
/* Para el log */
$logger->error($event_complete.' | '.$event);
/* Para el usuario */
$errorMessage = $this->translator->trans($event);
$this->addFlash('mensajesuppliererror', $errorMessage);
}
/* Fin Gestión de eventos en Log */
$successMessage = $this->translator->trans('The supplier has been modified.');
$this->addFlash('mensajesupplier', $successMessage);
return $this->redirectToRoute('supplier_index_simple_letters', [ 'ind' => 0 ]);
}
return $this->render('/supplier/supplier/edit-supplier.html.twig',
array(
'id'=> $id,
'ids' =>$ids,
'supplier' => $supplier,
'form' => $form->createView()
)
);
}
/**
* @Route("/supplier/add-image", name="supplier_image")
*/
public function addSupplierImage()
{
$dataa = $_POST['image'];
list($type, $data) = explode(';', $dataa);
list(, $data) = explode(',', $data);
$data = base64_decode($data);
$imageName = time().'.png';
$ruta = "assets/images/suppliers/";
if (!file_exists($ruta)) {
mkdir($ruta,0777,true);
}
$file = fopen($ruta.$imageName, "wb");
fwrite($file, $data);
fclose($file);
$return = array(
'base64' => $dataa,
'nombre_archivo' => $ruta.$imageName,
);
$response = new JsonResponse($return);
return $response;
}
/**
* Devuelve el proveedor según el id recibido por url
*
* @Route("/supplier/get/{id}", name="get_supplier", methods={"GET"})
*/
public function getClientAction($id) {
$client = $this->em->getRepository(Supplier::class)->findOneById($id);
$return = array(
'id' => $client->getId(),
'name' => $client->getName(),
'typology' => $client->getTypology(),
);
$response = new JsonResponse($return);
return $response;
}
}