<?php
namespace App\MDS\GreenPatioBundle\Controller;
use App\MDS\GreenPatioBundle\Entity\Reservation;
use App\MDS\GreenPatioBundle\Entity\ReservationLoungeDetails;
use App\MDS\GreenPatioBundle\Entity\ReservationLoungeSimple;
use App\MDS\GreenPatioBundle\Entity\ReservationService;
use Google\Service\MigrationCenterAPI\DateTime;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class ReservationsServicesController extends AbstractController
{
/**
* @Route("reservations/white/services/add/{cat}/{resid}", name="reservations_white_addservices")
*/
public function listAction($cat, $resid, Request $request) {
$em = $this->getDoctrine()->getManager();
$service= new ReservationService();
$service->setReservationId($resid);
$service->setSupplierId(0);
$countcolor = null;
/* MANEJO DE ADICIONALES EN EL DIA DEL EVENTO O DESPUES EL DIA DEL EVENTO */
$reserva = $em->getRepository(Reservation::class)->findOneById($resid);
$dayEvent = $reserva->getDateStart()->format('Y-m-d');
$today = date('Y-m-d');
if( $today >= $dayEvent){
$additional = "Additional";
}else{
$additional = "Normal";
}
$service->setDateInAt($reserva->getDateStart());
$service->setDateOutAt($reserva->getDateEnd());
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$service->setCreatedId($user_id);
$service->setUpdatedId($user_id);
$service->setCreatedAt(new \DateTime("now"));
$service->setUpdatedAt(new \DateTime("now"));
/* metemos Services en Blanco *////////////////////////////////////////////////////////////////
$serviceswhite = $cat;
if(!empty($serviceswhite)){
$service->setServiceId('0');
switch ($serviceswhite) {
case 1:
$service->setServiceCatId('1');
$service->setServiceCatName('Accommodation');
$countcolor = 'teal';
break;
case 2:
$service->setServiceCatId('2');
$service->setServiceCatName('Activities');
$countcolor = 'blue';
break;
case 3:
$service->setServiceCatId('3');
$service->setServiceCatName('Av');
$countcolor = 'slate';
break;
case 4:
$service->setServiceCatId('4');
$service->setServiceCatName('Creative');
$countcolor = 'orange';
break;
case 5:
$service->setServiceCatId('5');
$service->setServiceCatName('Cruise');
$countcolor = 'brown';
break;
case 6:
$service->setServiceCatId('6');
$service->setServiceCatName('Entertainment');
$countcolor = 'green';
break;
case 7:
$service->setServiceCatId('7');
$service->setServiceCatName('Gifts');
$countcolor = 'pink';
break;
case 8:
$service->setServiceCatId('8');
$service->setServiceCatName('Guide');
$countcolor = 'orange';
break;
case 9:
$service->setServiceCatId('9');
$service->setServiceCatName('Itineraries');
$countcolor = 'indigo';
break;
case 10:
$service->setServiceCatId('10');
$service->setServiceCatName('Lounge');
$countcolor = 'warning';
break;
case 11:
$service->setServiceCatId('11');
$service->setServiceCatName('Catering');
$countcolor = 'purple-300';
break;
case 12:
$service->setServiceCatId('12');
$service->setServiceCatName('Others');
// $countcolor = 'danger';
$countcolor = 'danger-800';
break;
case 13:
$service->setServiceCatId('13');
$service->setServiceCatName('Transport');
$countcolor = 'grey';
break;
case 14:
$service->setServiceCatId('14');
$service->setServiceCatName('Technology');
$countcolor = 'slate-800';
break;
case 15:
$service->setServiceCatId('15');
$service->setServiceCatName('Asistencia');
// $countcolor = 'indigo-800';
$countcolor = 'danger-300';
break;
case 16:
$service->setServiceCatId('16');
$service->setServiceCatName('DDR');
$countcolor = 'green-300';
break;
case 17:
$service->setServiceCatId('17');
$service->setServiceCatName('Seguridad');
$countcolor = 'green-600';
break;
case 18:
$service->setServiceCatId('18');
$service->setServiceCatName('WiFi');
$countcolor = 'green-800';
break;
case 19:
$service->setServiceCatId('19');
$service->setServiceCatName('Mobiliario');
$countcolor = 'orange-300';
break;
case 20:
$service->setServiceCatId('20');
$service->setServiceCatName('Parking');
$countcolor = 'info-300';
break;
case 21:
$service->setServiceCatId('21');
$service->setServiceCatName('Limpieza');
$countcolor = 'green-300';
break;
default:
$service->setServiceCatId('12');
$service->setServiceCatName('Others');
$countcolor = 'danger-800';
break;
}
if (is_null($countcolor)) {$countcolor = 'blue-100';}
$service->setContcolor($countcolor);
$service->setName(' ');
$service->setPrice('0.00');
$service->setCurrency('Euro');
$service->setUnits('1');
$service->setCommission('0');
$service->setIva('0');
$service->setPax('0');
$service->setOver('0');
$service->setViewInfo(0);
$em->persist($service);
$em->flush();
$em->clear();
}
/* salida de data */
return $this->redirectToRoute('reservations_greenpatio_edit', array(
'id' => $resid,
'token' => null,
'_fragment' => 'btn_srv'
));
}
/**
* @Route("reservations/white/services/addclean/{resid}/{loungesimpleid}", name="reservations_white_addservices_cleaning")
* Carga automatica de los servicios de limpieza
* Agregar un servicio de limpieza en la reserva resid con la fecha del loungesimpleid, no se mostrara en factura
*/
public function addCleningAction($resid, $loungesimpleid, EntityManagerInterface $em, Request $request) {
// Rafa indica que se debe quitar esta asignación, mas adelante eliminaremos el codigo, despues de que prueben el sistema sin esta funcionalidad
if (false) {
$resLoungeSimple = $em->getRepository(ReservationLoungeSimple::class)->findOneById($loungesimpleid);
$service = new ReservationService();
$service->setReservationId($resid);
$service->setSupplierId(0);
$service->setDateInAt($resLoungeSimple->getDateStart());
$service->setDateOutAt($resLoungeSimple->getDateEnd());
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$service->setCreatedId($user_id);
$service->setUpdatedId($user_id);
$service->setCreatedAt(new \DateTime("now"));
$service->setUpdatedAt(new \DateTime("now"));
$service->setServiceCatId('21');
$service->setServiceCatName('Limpieza');
$service->setContcolor('green-300');
$service->setName('HORAS ( ' . $resLoungeSimple->getLoungeName() . ' )');
$service->setPrice('14');
$service->setCurrency('Euro');
$service->setUnits('8');
$service->setCommission('0');
$service->setIva('0');
$service->setPax('0');
$service->setOver('0');
$service->setIva('21');
$service->setOpIva('1');
$service->setOpCommission('1');
$service->setCommission('57.14');
$service->setViewInfo(0);
$service->setToinvoice(0);
$service->setServiceId(0);
$em->persist($service);
$em->flush();
}
return $this->redirectToRoute('reservations_greenpatio_edit', array(
'id' => $resid,
'token' => null,
'_fragment' => 'btn_quotes'
));
}
/**
* @Route("/deletesimplecleaning/{idRes}/{idLng}/{dateInAt}/{dateOutAt}", name="reservations_greenpatio_delete_simple_lounge_cleaning")
* Al eliminar un Reservation Simple Lounge de la cotizacion, se deben eliminar sus horas de limpieza
*/
public function deleteLoungeCleaningAction($idRes, $idLng, $dateInAt, $dateOutAt, EntityManagerInterface $em, Request $request)
{
$loungeDetails = $em->getRepository(ReservationLoungeDetails::class)->findOneById($idLng);
$stringName = 'HORAS ( '.$loungeDetails->getName().' )';
$serviceCatIdClean = 21;
$dateInAt = new \DateTime($dateInAt);
$dateOutAt = new \DateTime($dateOutAt);
$qb = $em->getRepository(ReservationService::class)->createQueryBuilder('rs');
$serviceClean = $qb->where('rs.reservationId = :id')
->andWhere('rs.name = :name')
->andWhere('rs.dateInAt = :dateInAt')
->andWhere('rs.dateOutAt = :dateOutAt')
->andWhere('rs.serviceCatId = :serviceCatId')
->setParameter('id', $idRes)
->setParameter('name', $stringName)
->setParameter('dateInAt', $dateInAt)
->setParameter('dateOutAt', $dateOutAt)
->setParameter('serviceCatId', $serviceCatIdClean)
->getQuery()
->getResult();
if (empty($serviceClean)) {
return $this->redirectToRoute('reservations_greenpatio_edit_simple',
array(
'id' => $idRes,
'token' => null,
'_fragment' => 'btn_quotes'
));
} else {
// Se elimina el servicio de horas de limpieza de la sala
$em->remove($serviceClean[0]);
$em->flush();
return $this->redirectToRoute('reservations_greenpatio_edit_simple',
array(
'id' => $idRes,
'token' => null,
'_fragment' => 'btn_quotes'
));
}
}
}