src/Controller/HomeController.php line 27
<?phpnamespace App\Controller;use App\Entity\Aging;use App\Entity\Hotel;use App\Entity\Search;use App\Entity\User;use App\Form\FilterType;use App\Repository\AgingRepository;use App\Repository\FullStatsticAgenComRepository;use App\Repository\HistoryForcastRepository;use App\Repository\ManagerReportDataRepository;use App\Repository\MarketStatisticsRepository;use App\Repository\PMAccountByRoomRepository;use App\Repository\TransactionCodesGrossRepository;use App\Repository\ZeroRateRoomsRepository;use Knp\Component\Pager\PaginatorInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;class HomeController extends AbstractController{#[Route('/', name: 'app_home')]public function index(): Response{return $this->render('home/index.html.twig', []);}#[Route('/analytics', name: 'app_analytics', methods: ['GET', 'POST'])]public function analytics(Request $request, ManagerReportDataRepository $managerReportDataRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mDay = $currentDate->format('d');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mDay = $search->getDays();$mYear = $search->getYears();}$mrByDay = $managerReportDataRepository->findMRBy(['TOTAL_REVENUE','GUEST_IN_HOUSE','ROOM_REVENUE','PHYSICAL_ROOMS','OCC_PERC_WO_CHO','OCC_ROOMS','COMP_ROOMS','HOUSE_USE_ROOMS','FIT_MEM_DEP_ROOMS','ADULTS_IN_HOUSE','CHILDREN_IN_HOUSE','TOTAL_REVENUE_GUEST',], 'DAY', $mHotel, $mDay, $mMonth, $mYear);$mrByDay = array_reduce($mrByDay, function ($h, $data) {$h[$data['SUB_GRP_1']][] = $data['SUM_AMOUNT'];return $h;}, []);$mrByMonth = $managerReportDataRepository->findMRBy(['TOTAL_REVENUE','GUEST_IN_HOUSE','ROOM_REVENUE','PHYSICAL_ROOMS','OCC_PERC_WO_CHO','OCC_ROOMS','COMP_ROOMS','HOUSE_USE_ROOMS','FIT_MEM_DEP_ROOMS','ADULTS_IN_HOUSE','CHILDREN_IN_HOUSE','TOTAL_REVENUE_GUEST',], 'MONTH', $mHotel, $mDay, $mMonth, $mYear);$mrByMonth = array_reduce($mrByMonth, function ($h, $data) {$h[$data['SUB_GRP_1']][] = $data['SUM_AMOUNT'];return $h;}, []);$mrByYear = $managerReportDataRepository->findMRBy(['TOTAL_REVENUE','GUEST_IN_HOUSE','ROOM_REVENUE','PHYSICAL_ROOMS','OCC_PERC_WO_CHO','OCC_ROOMS','COMP_ROOMS','HOUSE_USE_ROOMS','FIT_MEM_DEP_ROOMS','ADULTS_IN_HOUSE','CHILDREN_IN_HOUSE','TOTAL_REVENUE_GUEST',], 'YEAR', $mHotel, $mDay, $mMonth, $mYear);$mrByYear = array_reduce($mrByYear, function ($h, $data) {$h[$data['SUB_GRP_1']][] = $data['SUM_AMOUNT'];return $h;}, []);return $this->render('analytics/index.html.twig', ['mr_by_day' => $mrByDay,'mr_by_month' => $mrByMonth,'mr_by_year' => $mrByYear,'form' => $form->createView(),]);}#[Route('/reports', name: 'app_reports')]public function reports(): Response{return $this->render('analytics/reports.html.twig', []);}#[Route('/aging', name: 'app_aging')]public function aging(Request $request, AgingRepository $agingRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->handleRequest($request);$mHotel = null;$mDay = $currentDate->format('d');$mMonth = $currentDate->format('m');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mDay = $search->getDays();$mYear = $search->getYears();}$agingData = $agingRepository->findAGBy($mHotel, $mDay, $mMonth, $mYear);$agings = [];/** @var $aging Aging */foreach ($agingData as $aging) {$agings[$aging->getRESORT()][$aging->getTYPE()][] = $aging;}return $this->render('analytics/aging.html.twig', ['form' => $form->createView(),'agings' => $agings,]);}#[Route('/guests', name: 'app_guests')]public function guests(Request $request, PMAccountByRoomRepository $PMAccountByRoomRepository, PaginatorInterface $paginator): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search, ['items' => true,]);$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mDay = $currentDate->format('d');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mDay = $search->getDays();$mYear = $search->getYears();}$builder = $PMAccountByRoomRepository->createQueryBuilder('p');if ($mHotel) {$builder->andWhere('p.RESORT = :hotel')->setParameter('hotel', $mHotel->getName());}else{if (!$this->isGranted(User::ROLE_ADMIN) && !$this->isGranted(User::ROLE_IT_MANAGER)){$hotels = array_reduce($this->getUser()->getHotels()->toArray(), function ($h, Hotel $v){$h[]=$v->getName(); return $h;}, []);$builder->andWhere('p.RESORT IN(:hotels)')->setParameter('hotels', $hotels);}}if ($mDay) {$builder->andWhere('DAY(p.createdAt) = :day')->setParameter('day', $mDay);}if ($mMonth) {$builder->andWhere('MONTH(p.createdAt) = :month')->setParameter('month', $mMonth);}if ($mYear) {$builder->andWhere('YEAR(p.createdAt) = :year')->setParameter('year', $mYear);}$guests = $paginator->paginate($builder->getQuery(),$request->query->getInt('page', 1), /*page number*/$search->getItems(), /*limit per page*/);// $guests = $PMAccountByRoomRepository->getGuests();return $this->render('analytics/guests.html.twig', ['guests' => $guests,'form' => $form->createView(),]);}#[Route('/tablehrg', name: 'app_tablehrg')]public function tablehrg(Request $request, HistoryForcastRepository $historyForcastRepository, ManagerReportDataRepository $managerReportDataRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->remove('days');$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mYear = $search->getYears();}$hf = $historyForcastRepository->findHFBy($mHotel, $mMonth, $mYear);$mrByMonth = array_reduce($hf, function ($h, $data) {$h[$data['RESORT']][$data['CONSIDERED_DATE']->format('Y')][$data['CONSIDERED_DATE']->format('M')][$data['CONSIDERED_DATE']->format('jS')][$data['REC_TYPE']] = $data;return $h;}, []);// $mrByMonth = $managerReportDataRepository->findMRBy([// 'PHYSICAL_ROOMS_MINUS_OOO',// 'AVAIL_ROOMS',// 'OCC_ROOMS',// 'OCC_PERC',// ], 'MONTH', $mHotel, null, $mMonth, $mYear);// $mrByMonth = array_reduce($mrByMonth, function ($h, $data) {// $h[$data['RESORT']][$data['createdAt']->format('M')][$data['SUB_GRP_1']][$data['createdAt']->format('jS')]['DESCRIPTION'] = $data['DESCRIPTION'];// $h[$data['RESORT']][$data['createdAt']->format('M')][$data['SUB_GRP_1']][$data['createdAt']->format('jS')]['SUM_AMOUNT'] = $data['SUM_AMOUNT'];// return $h;// }, []);return $this->render('analytics/tablehrg.html.twig', ['form' => $form->createView(),'mr_by_month' => $mrByMonth,]);}#[Route('/hrg', name: 'app_hrg')]public function hrg(Request $request, ManagerReportDataRepository $managerReportDataRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->remove('days');$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mYear = $search->getYears();}return $this->render('analytics/hrg.html.twig', ['form' => $form->createView(),]);}#[Route('/rate', name: 'app_rate')]public function rate(Request $request, ZeroRateRoomsRepository $rateRoomsRepository, PaginatorInterface $paginator): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search, ['items' => true]);$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mDay = $currentDate->format('d');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mDay = $search->getDays();$mYear = $search->getYears();}$builder = $rateRoomsRepository->createQueryBuilder('z');if ($mHotel) {$builder->andWhere('z.RESORT = :hotel')->setParameter('hotel', $mHotel->getName());}else{if (!$this->isGranted(User::ROLE_ADMIN) && !$this->isGranted(User::ROLE_IT_MANAGER)){$hotels = array_reduce($this->getUser()->getHotels()->toArray(), function ($h, Hotel $v){$h[]=$v->getName(); return $h;}, []);$builder->andWhere('z.RESORT IN(:hotels)')->setParameter('hotels', $hotels);}}if ($mDay) {$builder->andWhere('DAY(z.createdAt) = :day')->setParameter('day', $mDay);}if ($mMonth) {$builder->andWhere('MONTH(z.createdAt) = :month')->setParameter('month', $mMonth);}if ($mYear) {$builder->andWhere('YEAR(z.createdAt) = :year')->setParameter('year', $mYear);}$raterooms = $paginator->paginate($builder->getQuery(),$request->query->getInt('page', 1), /*page number*/$search->getItems(), /*limit per page*/);// $raterooms = $rateRoomsRepository->getRooms();return $this->render('analytics/rate.html.twig', ['raterooms' => $raterooms,'form' => $form->createView(),]);}#[Route('/tablermf', name: 'app_tablermf')]public function tablermf(Request $request, HistoryForcastRepository $historyForcastRepository, ManagerReportDataRepository $managerReportDataRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->remove('days');$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mYear = $search->getYears();}$hf = $historyForcastRepository->findHFBy($mHotel, $mMonth, $mYear);// dump($hf);$mrByMonth = array_reduce($hf, function ($h, $data) {$h[$data['RESORT']][$data['CONSIDERED_DATE']->format('Y')][$data['CONSIDERED_DATE']->format('M')][$data['CONSIDERED_DATE']->format('jS')][$data['REC_TYPE']] = $data;return $h;}, []);// dump($mrByMonth);// $mrByMonth = $managerReportDataRepository->findMRBy([// 'PHYSICAL_ROOMS_MINUS_OOO',// 'AVAIL_ROOMS',// 'OCC_ROOMS',// 'OCC_PERC',// ], 'MONTH', $mHotel, null, $mMonth, $mYear);// $mrByMonth = array_reduce($mrByMonth, function ($h, $data) {// $h[$data['RESORT']][$data['createdAt']->format('M')][$data['SUB_GRP_1']][$data['createdAt']->format('jS')]['DESCRIPTION'] = $data['DESCRIPTION'];// $h[$data['RESORT']][$data['createdAt']->format('M')][$data['SUB_GRP_1']][$data['createdAt']->format('jS')]['SUM_AMOUNT'] = $data['SUM_AMOUNT'];// $h[$data['RESORT']][$data['createdAt']->format('M')][$data['SUB_GRP_1']][$data['createdAt']->format('jS')]['YEAR'] = $data['YEAR'];// return $h;// }, []);return $this->render('analytics/tablermf.html.twig', ['form' => $form->createView(),'mr_by_month' => $mrByMonth,]);}#[Route('/rmf', name: 'app_rmf')]public function rmf(): Response{return $this->render('analytics/rmf.html.twig', ['controller_name' => 'HomeController',]);}#[Route('/revenue', name: 'app_revenue')]public function revenue(Request $request, ManagerReportDataRepository $managerReportDataRepository, TransactionCodesGrossRepository $transactionCodesGrossRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);// $form->remove('years');$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mDay = $currentDate->format('d');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mDay = $search->getDays();$mYear = $search->getYears();}$thisYear = $mYear;$lastYear = $mYear - 1;$data = [];$data1 = [];$data2 = [];$mrByHotelByDay = $managerReportDataRepository->findMRBy(['FOOD_BEV_REVENUE','ROOM_REVENUE','OCC_PERC_WO_CHO','OCC_MINUS_COMP_HU','TOTAL_REVENUE',], 'DAY', $mHotel, $mDay, $mMonth, $thisYear);foreach ($mrByHotelByDay as $mr) {$data[$mr['RESORT']]['THIS_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMOUNT'];}// dump($mrByHotelByDay);$mrByHotelByDay = $managerReportDataRepository->findMRBy(['FOOD_BEV_REVENUE','ROOM_REVENUE','OCC_PERC_WO_CHO','OCC_MINUS_COMP_HU','TOTAL_REVENUE',], 'DAY', $mHotel, $mDay, $mMonth, $lastYear);foreach ($mrByHotelByDay as $mr) {$data[$mr['RESORT']]['LAST_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMOUNT'] ?? 0;}$tcgByHotelByDay = $transactionCodesGrossRepository->findMRBy(['2825',], 'DAY', $mHotel, $mDay, $mMonth, $thisYear);// dump($tcgByHotelByDay);foreach ($tcgByHotelByDay as $mr) {$data[$mr['RESORT']]['THIS_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMT_TOTAL'];}$tcgByHotelByDay = $transactionCodesGrossRepository->findMRBy(['2825',], 'DAY', $mHotel, $mDay, $mMonth, $lastYear);foreach ($tcgByHotelByDay as $mr) {$data[$mr['RESORT']]['LAST_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMT_TOTAL'] ?? 0;}$mrByHotelByMonth = $managerReportDataRepository->findMRBy(['FOOD_BEV_REVENUE','ROOM_REVENUE','OCC_PERC_WO_CHO','OCC_MINUS_COMP_HU','TOTAL_REVENUE',], 'MONTH', $mHotel, $mDay, $mMonth, $thisYear);foreach ($mrByHotelByMonth as $mr) {$data1[$mr['RESORT']]['THIS_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMOUNT'];}$mrByHotelByMonth = $managerReportDataRepository->findMRBy(['FOOD_BEV_REVENUE','ROOM_REVENUE','OCC_PERC_WO_CHO','OCC_MINUS_COMP_HU','TOTAL_REVENUE',], 'MONTH', $mHotel, $mDay, $mMonth, $lastYear);foreach ($mrByHotelByMonth as $mr) {$data1[$mr['RESORT']]['LAST_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMOUNT'];}$tcgByHotelByMonth = $transactionCodesGrossRepository->findMRBy(['2825',], 'MONTH', $mHotel, $mDay, $mMonth, $thisYear);foreach ($tcgByHotelByMonth as $mr) {$data1[$mr['RESORT']]['THIS_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMT_TOTAL'];}$tcgByHotelByMonth = $transactionCodesGrossRepository->findMRBy(['2825',], 'MONTH', $mHotel, $mDay, $mMonth, $lastYear);foreach ($tcgByHotelByMonth as $mr) {$data1[$mr['RESORT']]['LAST_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMT_TOTAL'] ?? 0;}$mrByHotelByYear = $managerReportDataRepository->findMRBy(['FOOD_BEV_REVENUE','ROOM_REVENUE','OCC_PERC_WO_CHO','OCC_MINUS_COMP_HU','TOTAL_REVENUE',], 'YEAR', $mHotel, $mDay, $mMonth, $thisYear);foreach ($mrByHotelByYear as $mr) {$data2[$mr['RESORT']]['THIS_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMOUNT'];}$mrByHotelByYear = $managerReportDataRepository->findMRBy(['FOOD_BEV_REVENUE','ROOM_REVENUE','OCC_PERC_WO_CHO','OCC_MINUS_COMP_HU','TOTAL_REVENUE',], 'YEAR', $mHotel, $mDay, $mMonth, $lastYear);foreach ($mrByHotelByYear as $mr) {$data2[$mr['RESORT']]['LAST_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMOUNT'];}$tcgByHotelByYear = $transactionCodesGrossRepository->findMRBy(['2825',], 'YEAR', $mHotel, $mDay, $mMonth, $thisYear);foreach ($tcgByHotelByYear as $mr) {$data2[$mr['RESORT']]['THIS_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMT_TOTAL'];}$tcgByHotelByYear = $transactionCodesGrossRepository->findMRBy(['2825',], 'YEAR', $mHotel, $mDay, $mMonth, $lastYear);foreach ($tcgByHotelByYear as $mr) {$data2[$mr['RESORT']]['LAST_YEAR'][$mr['SUB_GRP_1']] = $mr['SUM_AMT_TOTAL'] ?? 0;}//// $mrByYear = $managerReportDataRepository->findMRBy([// 'TOTAL_REVENUE',// 'ROOM_REVENUE',// 'OCC_PERC',// ], 'YEAR', $mHotel, $mDay, $mMonth, $mYear);// $mrByYear = array_reduce($mrByYear, function ($h, $data) {// $h[$data['SUB_GRP_1']][] = $data['SUM_AMOUNT'];// return $h;// }, []);return $this->render('analytics/revenue.html.twig', ['form' => $form->createView(),'mr_by_hotel_by_day' => $data,'mr_by_hotel_by_month' => $data1,'mr_by_hotel_by_year' => $data2,'search' => $search,// 'mr_by_month' => $mrByMonth,// 'mr_by_year' => $mrByYear,// 'form' => $form->createView(),]);}#[Route('/daily', name: 'app_daily')]public function daily(Request $request, ManagerReportDataRepository $managerReportDataRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->remove('days');$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mYear = $search->getYears();}$mrByHotelByDay = $managerReportDataRepository->findMRBy(['HOUSE_USE_ROOMS',// 'FOOD_BEV_REVENUE',// 'ROOM_REVENUE',// 'OCC_PERC_WO_CHO',// 'OCC_MINUS_COMP_HU',// 'TOTAL_REVENUE',], 'DAY', $mHotel, null, $mMonth, $mYear);return $this->render('analytics/daily.html.twig', ['form' => $form->createView(),'search' => $search,]);}#[Route('/otb_pu', name: 'app_otb_pu')]public function otb_pu(Request $request, MarketStatisticsRepository $marketStatisticsRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->remove('days');$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mYear = $search->getYears();}$fsByDay = $marketStatisticsRepository->findMSByDay($mHotel, null, $mMonth, $mYear);$mrByMonth = array_reduce($fsByDay, function ($h, $data) {$h[$data['createdAt']->format('d/m/Y')][$data['PARENT_MARKET_CODE']] = $data;return $h;}, []);$val = array_key_first($mrByMonth);$labels = $val ? array_reduce($mrByMonth[$val], function ($h, $value) {$h[] = $value['MARKET_GROUP_DESCRIPTION'];return $h;}, []) : [];return $this->render('analytics/otb_pu.html.twig', ['form' => $form->createView(),'mr_by_month' => $mrByMonth,'labels' => $labels,]);}#[Route('/daily_hotel_dashboard', name: 'app_daily_hotel_dashboard')]public function daily_hotel_dashboard(Request $request, MarketStatisticsRepository $marketStatisticsRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mDay = $currentDate->format('d');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mDay = $search->getDays();$mYear = $search->getYears();}$fsByDay = $marketStatisticsRepository->findMSBy(['PM_DAY_ROOM',// Direct Hotel'WEB','IND','LEI',// 'LEI',//Corpo'GCOR','GLSR','GRI','GRT','BCR',], $mHotel, $mDay, $mMonth, $mYear);$fsByDay = array_reduce($fsByDay, function ($h, $data) {$h['PM_DAY_ROOM'][$data['PARENT_MARKET_CODE']] = ['MARKET_GROUP_DESCRIPTION' => $data['MARKET_GROUP_DESCRIPTION'], 'SUM_AMOUNT' => $data['PM_DAY_ROOM']];$h['PM_DAY_ARR'][$data['PARENT_MARKET_CODE']] = ['MARKET_GROUP_DESCRIPTION' => $data['MARKET_GROUP_DESCRIPTION'], 'SUM_AMOUNT' => $data['PM_DAY_ARR']];$h['PM_DAY_CREV'][$data['PARENT_MARKET_CODE']] = ['MARKET_GROUP_DESCRIPTION' => $data['MARKET_GROUP_DESCRIPTION'], 'SUM_AMOUNT' => $data['PM_DAY_CREV']];return $h;}, []);// dump($fsByDay);// $fsByMonth = $marketStatisticsRepository->findMSBy([// 'PM_DAY_ROOM',// 'PM_DAY_PERSON',// 'PM_MONTH_ROOM',// 'PM_MONTH_PERSON',// 'PM_MONTH_PERSON',// 'PM_YEAR_ROOM',// 'PM_YEAR_PRS',// 'PM_DAY_CREV',// 'PM_MONTH_CREV',// 'PM_YEAR_CREV',// 'PM_YEAR_ARR',// 'PM_MONTH_ARR',// 'PM_DAY_ARR',// 'PM_DAY_PER_OCC',// 'PM_MTD_PER_OCC',// 'PM_YTD_PER_OCC',// ], $mHotel, $mDay, $mMonth, $mYear);// $fsByMonth = array_reduce($fsByMonth, function ($h, $data) {// $h[$data['SUB_GRP_1']][] = $data['SUM_AMOUNT'];// return $h;// }, []);//// $fsByYear = $marketStatisticsRepository->findMSBy([// 'PM_DAY_ROOM',// 'PM_DAY_PERSON',// 'PM_MONTH_ROOM',// 'PM_MONTH_PERSON',// 'PM_MONTH_PERSON',// 'PM_YEAR_ROOM',// 'PM_YEAR_PRS',// 'PM_DAY_CREV',// 'PM_MONTH_CREV',// 'PM_YEAR_CREV',// 'PM_YEAR_ARR',// 'PM_MONTH_ARR',// 'PM_DAY_ARR',// 'PM_DAY_PER_OCC',// 'PM_MTD_PER_OCC',// 'PM_YTD_PER_OCC',// ], $mHotel, $mDay, $mMonth, $mYear);// $fsByYear = array_reduce($fsByYear, function ($h, $data) {// $h[$data['SUB_GRP_1']][] = $data['SUM_AMOUNT'];// return $h;// }, []);return $this->render('analytics/daily_hotel_dashboard.html.twig', ['form' => $form->createView(),'mr_by_day' => $fsByDay,// 'mr_by_month' => $fsByMonth,// 'mr_by_year'=> $fsByYear]);}#[Route('/ops_dashboard', name: 'app_ops_dashboard')]public function ops_dashboard(Request $request, HistoryForcastRepository $historyForcastRepository, ManagerReportDataRepository $managerReportDataRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->remove('days');$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mYear = $search->getYears();}$hf = $historyForcastRepository->findHFBy($mHotel, $mMonth, $mYear);$mrByMonth = array_reduce($hf, function ($h, $data) {$h[$data['RESORT']][$data['CONSIDERED_DATE']->format('Y')][$data['CONSIDERED_DATE']->format('M')][$data['CONSIDERED_DATE']->format('jS')][$data['REC_TYPE']] = $data;return $h;}, []);return $this->render('analytics/ops_dashboard.html.twig', ['form' => $form->createView(),'mr_by_month' => $mrByMonth,]);}#[Route('/pricing', name: 'app_pricing')]public function pricing(Request $request, HistoryForcastRepository $historyForcastRepository, ManagerReportDataRepository $managerReportDataRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->remove('days');$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mYear = $search->getYears();}$hf = $historyForcastRepository->findHFBy($mHotel, $mMonth, $mYear);$mrByMonth = array_reduce($hf, function ($h, $data) {$h[$data['RESORT']][$data['CONSIDERED_DATE']->format('Y')][$data['CONSIDERED_DATE']->format('M')][$data['CONSIDERED_DATE']->format('jS')][$data['REC_TYPE']] = $data;return $h;}, []);return $this->render('analytics/pricing.html.twig', ['form' => $form->createView(),'mr_by_month' => $mrByMonth,]);}#[Route('/day', name: 'app_day')]public function day(Request $request, HistoryForcastRepository $historyForcastRepository, ManagerReportDataRepository $managerReportDataRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->remove('days');$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mYear = $search->getYears();}$hf = $historyForcastRepository->findHFBy($mHotel, $mMonth, $mYear);$mrByMonth = array_reduce($hf, function ($h, $data) {$h[$data['RESORT']][$data['CONSIDERED_DATE']->format('Y')][$data['CONSIDERED_DATE']->format('M')][$data['CONSIDERED_DATE']->format('jS')][$data['REC_TYPE']] = $data;return $h;}, []);return $this->render('analytics/day.html.twig', ['form' => $form->createView(),'mr_by_month' => $mrByMonth,]);}#[Route('/overview', name: 'app_overview')]public function overview(Request $request, HistoryForcastRepository $historyForcastRepository, ManagerReportDataRepository $managerReportDataRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->remove('days');$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mYear = $search->getYears();}$hf = $historyForcastRepository->findHFBy($mHotel, $mMonth, $mYear);$mrByMonth = array_reduce($hf, function ($h, $data) {$h[$data['RESORT']][$data['CONSIDERED_DATE']->format('Y')][$data['CONSIDERED_DATE']->format('M')][$data['CONSIDERED_DATE']->format('jS')][$data['REC_TYPE']] = $data;return $h;}, []);return $this->render('analytics/overview.html.twig', ['form' => $form->createView(),'mr_by_month' => $mrByMonth,]);}#[Route('/rooms_analysis', name: 'app_rooms_analysis')]public function rooms_analysis(Request $request, MarketStatisticsRepository $marketStatisticsRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->remove('days');$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mYear = $search->getYears();}$fsByDay = $marketStatisticsRepository->findMSByDay($mHotel, null, $mMonth, $mYear);$mrByMonth = array_reduce($fsByDay, function ($h, $data) {$h[$data['MARKET_GROUP_DESCRIPTION']][$data['createdAt']->format('d/m/Y')][] = $data;return $h;}, []);$labels = array_reduce($fsByDay, function ($h, $value) {$h[$value['createdAt']->format('m/d/Y')] = $value['createdAt']->format('d/m/Y');return $h;}, []);return $this->render('analytics/rooms_analysis.html.twig', ['form' => $form->createView(),'mr_by_month' => $mrByMonth,'labels' => array_unique($labels),]);}#[Route('/production', name: 'app_production')]public function production(Request $request, FullStatsticAgenComRepository $fullStatsticAgenComRepository): Response{$currentDate = new \DateTime('-1 day');$search = (new Search())->setDays($currentDate->format('d'))->setMonths($currentDate->format('m'))->setYears($currentDate->format('Y'));$form = $this->createForm(FilterType::class, $search);$form->handleRequest($request);$mHotel = null;$mMonth = $currentDate->format('m');$mDay = $currentDate->format('d');$mYear = $currentDate->format('Y');if ($form->isSubmitted() && $form->isValid()) {$mHotel = $search->getHotels();$mMonth = $search->getMonths();$mDay = $search->getDays();$mYear = $search->getYears();}$fsByDay = $fullStatsticAgenComRepository->findMSBy(['PM_DAY_ROOM',// Direct Hotel'WEB','IND','LEI',// 'LEI',//Corpo'GCOR','GLSR','GRI','GRT','BCR',], $mHotel, $mDay, $mMonth, $mYear);$fsByDay = array_reduce($fsByDay, function ($h, $data) {$h['PM_DAY_ROOM'][$data['PARENT_MARKET_CODE']] = ['MARKET_GROUP_DESCRIPTION' => $data['MARKET_GROUP_DESCRIPTION'], 'SUM_AMOUNT' => $data['PM_DAY_ROOM']];$h['PM_DAY_ARR'][$data['PARENT_MARKET_CODE']] = ['MARKET_GROUP_DESCRIPTION' => $data['MARKET_GROUP_DESCRIPTION'], 'SUM_AMOUNT' => $data['PM_DAY_ARR']];$h['PM_DAY_CREV'][$data['PARENT_MARKET_CODE']] = ['MARKET_GROUP_DESCRIPTION' => $data['MARKET_GROUP_DESCRIPTION'], 'SUM_AMOUNT' => $data['PM_DAY_CREV']];return $h;}, []);dump($fsByDay);return $this->render('analytics/production.html.twig', ['form' => $form->createView(),'mr_by_day' => $fsByDay,// 'mr_by_month' => $fsByMonth,// 'mr_by_year'=> $fsByYear]);}}