<?php
/*
* This file is part of the Sylius package.
*
* (c) Paweł Jędrzejewski
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Sylius\Bundle\CoreBundle\Controller;
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
use Sylius\Component\Resource\ResourceActions;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Sylius\Component\Payment\Model\PayImport;
use Sylius\Component\Payment\Model\PayMov;
use Sylius\Component\Customer\Model\TurnTaxon; //temporal
class TurnController extends BaseController
{
public function eventsAction(Request $request): Response
{
// "2023-06-26T00:00:00-03:00"
$filters = $request->query->all('sylius_filter_turn', null);
$startDate = $request->query->get('start');
$endDate = $request->query->get('end');
$session = $request->getSession();
$session->set('sylius_filter_turn', $filters);
$start = (new \DateTime($startDate ? substr($startDate, 0, 16): 'first day of this month'));
// $start = new \DateTime('midnight');
$end = (new \DateTime($endDate ? substr($endDate, 0, 16): 'last day of this month'));
$url = $this->generateUrl('sylius_admin_turn_index');
$urlHc = $this->generateUrl('sylius_admin_product_hc');
return new JsonResponse(
$this->repository->getEvents($start, $end, $url, $filters, $urlHc)
);
}
public function editableAction(Request $request): Response
{
// "2023-06-26T00:00:00-03:00"
$startDateStr = $request->request->get('start', null);
$endDateStr = $request->request->get('end', null);
$id = $request->request->get('id', null);
if($startDateStr & $endDateStr){
$start = new \DateTime(substr($startDateStr, 0, 16));
$end = new \DateTime(substr($endDateStr, 0, 16));
$this->repository->updateEventEditable((int)$id, $start, $end);
$response = 'update';
}else{
$response = 'Not update';
}
return new JsonResponse(
['status' => $response]
);
}
public function disabledAction(Request $request): Response
{
$turnId = $request->query->get('id', null);
$turn = $this->repository->findOneBy(['id' => $turnId]);
if($turn){
$product = $turn->getProduct();
if($product && $product->isEnabled()){
$product->setEnabled(false);
$this->manager->merge($product);
}
$payCustomer = $turn->getPayCustomer();
if($payCustomer){
$pay = $payCustomer->getPay();
$pay->setEnabled(false);
if($pay->getImports() != 0){
$payImport = new PayImport($pay->getImports() * -1, 'Cancelación administrador');
$pay->addPayImport($payImport);
$pay->setImports(0);
}
if($pay->getPays() != 0){
$payMovs = $pay->getPayMovs();
foreach($payMovs as $pm){
$payMov = new PayMov();
$payMov->setTransactionDate($pm->getTransactionDate());
$payMov->setValue($pm->getValue() * (-1));
$payMov->setPayAcount($pm->getPayAcount());
$pay->addPayMov($payMov);
}
$pay->setPays(0);
}
$pay->setBalance(0);
$payCustomer->setPay($pay);
$this->manager->merge($payCustomer);
}
$turn->setEnabled(false);
$this->manager->merge($turn);
$this->manager->flush();
}
return new JsonResponse(
[
'status' => true,
]
);
}
}