<?php
namespace App\StatsBundle\Controller;
use App\Controller\EnabledEntityControllerInterface;
use App\Entity\Category;
use App\Entity\Supplier;
use App\Model\Dashboard\CustomerDashboard;
use App\Model\User\User as ModelUser;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class StatController extends AbstractController
{
/*
* @var ModelUser
*/
private $modelUser;
/*
* @var CustomerDashboard
*/
private $customerDashboard;
public function __construct(ModelUser $modelUser, CustomerDashboard $customerDashboard)
{
$this->modelUser = $modelUser;
$this->customerDashboard = $customerDashboard;
}
/**
* @Route("/dashboard", name="malys_stats_customer_dashboard", options={"expose"=true})
*/
public function dashboardAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$partnerCount = $em->getRepository(Supplier::class)->searchCount([
'partnersOnly' => true
]);
$categoryCount = $em->getRepository(Category::class)->searchCount([
'topCatOnly' => true
]);
return $this->render('front/dashboard/show.html.twig', [
'data' => [
'partnerCount' => $partnerCount,
'categoryCount' => $categoryCount,
],
]);
}
/**
* @Route("/dashboard/data", name="malys_api_stats_customer_dashboard", options={"expose"=true})
*/
public function dashboardDataAction(Request $request)
{
$defaultStart = '-60 days';
// $defaultEnd = new \DateTime( 'yesterday' );
$defaultEnd = 'yesterday';
$start = new \DateTime($request->get('start', $defaultStart));
$end = new \DateTime($request->get('end', $defaultEnd));
// Get user etabs
$user = $this->modelUser;
$user->fromCurrentUser();
$customers = $user->getShops(true);
$customersEntities = [];
foreach ($customers as $customer) {
$customersEntities[] = $customer->getEntity();
}
$dashboard = $this->customerDashboard;
$dashboard->setCustomers($customersEntities);
$dashboard->setStart($start);
$dashboard->setEnd($end);
//$dashboard->setStatus('confirm');
// $params = [
// 'start' => $start,
// 'end' => $end,
// 'status' => 'confirm',
// 'customers' => $customersEntities
// ];
//$data = $dashboard->build( $params );
$data = $dashboard->build();
// return new Response('<html><body></body></html>');
// die;
return new JsonResponse($data);
}
}