src/Controller/AllegroDataAdsController.php line 505

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\AllegroDataAds;
  4. use App\Entity\Project;
  5. use App\Entity\RaportAdsNew;
  6. use App\Entity\RaportDate;
  7. use App\Form\RaportAdsFilterType;
  8. use App\Form\RaportAdsNewType;
  9. use App\Form\RaportDateType;
  10. use App\Module\Slack\SlackManager;
  11. use App\Repository\AllegroDataAdsRepository;
  12. use App\Repository\ProjectRepository;
  13. use App\Repository\RaportAdsNewRepository;
  14. use App\Repository\RaportDateRepository;
  15. use App\Service\PaginationService;
  16. use Doctrine\Common\Collections\ArrayCollection;
  17. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  18. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\HttpFoundation\JsonResponse;
  21. use Symfony\Component\HttpFoundation\Request;
  22. use Symfony\Component\HttpFoundation\Response;
  23. use Symfony\Component\HttpFoundation\StreamedResponse;
  24. use Symfony\Component\Routing\Annotation\Route;
  25. use Symfony\Component\Serializer\SerializerInterface;
  26. class AllegroDataAdsController extends AbstractController
  27. {
  28.     /**
  29.      * @Route("/allegro-data-ads", name="allegro_data_ads", methods={"POST"})
  30.      */
  31.     public function index(Request $requestAllegroDataAdsRepository $allegroDataAdsRepositoryProjectRepository $projectRepository): Response
  32.     {
  33.         return $this->json(["error" => false"message" => "success"]);
  34.         if (!$request->getContent()) {
  35.             return $this->json(["error" => true"message" => "request body don't have a data field"]);
  36.         }
  37.         $data json_decode($request->getContent(), true);
  38.         if (!$data) {
  39.             return $this->json(["error" => true"message" => "json not valid"]);
  40.         }
  41.         $project $projectRepository->findProjectByAllegroName($data['nickname']);
  42.         $allegroDataAds = new AllegroDataAds();
  43.         $allegroDataAds->setData($data)
  44.             ->setProject($project[0] ?? null)
  45.             ->setDate(new \DateTimeImmutable($data['date']." 12:00"));
  46.         $allegroDataAdsRepository->save($allegroDataAds);
  47. //
  48. //        $allegroData = null;
  49. //        if(!isset($data['file'])) {
  50. //            $allegroData = $allegroDataAdsRepository->findData($data['nickname'], new \DateTimeImmutable($data['date']." 12:00"));
  51. //        }
  52. //
  53. //        if ($allegroData) {
  54. //            foreach($allegroData as $allData) {
  55. //                if (isset($data['file']) && isset($allData->getData['file']) ||
  56. //                    !isset($data['file']) && !isset($allData->getData['file'])) {
  57. //                    $allData->setData($data);
  58. //                    $allegroDataAdsRepository->save($allData);
  59. //
  60. //                    break;
  61. //                }
  62. //            }
  63. //        } else {
  64. //            $allegroDataAds = new AllegroDataAds();
  65. //            $allegroDataAds->setData($data)
  66. //                ->setProject($project[0] ?? null)
  67. //                ->setDate(new \DateTimeImmutable($data['date']." 12:00"));
  68. //
  69. //            $allegroDataAdsRepository->save($allegroDataAds);
  70. //        }
  71.         return $this->json(["error" => false"message" => "success"]);
  72.     }
  73.     /**
  74.      * @Route("/raport-ads", name="allegro_ads_chart")
  75.      */
  76.     public function list(Request $requestRaportAdsNewRepository $raportAdsNewRepositoryPaginationService $paginationService)
  77.     {
  78.         $page $request->get("page") ?? 1;
  79.         $user $this->getUser();
  80.         $leader null;
  81.         if ($this->isGranted("ROLE_EMPLOYER") || $this->isGranted("ROLE_ADMIN")) {
  82.             $user null;
  83.         }
  84.         $form $this->createForm(RaportAdsFilterType::class, null, [
  85.             'user' => $this->getUser(),
  86.         ]);
  87.         $form->handleRequest($request);
  88.         if ($form->isSubmitted() && $form->isValid()) {
  89.             /** @var Project $project */
  90.             $project $form->get('project')->getData();
  91.             if ($project) {
  92.                 $user $project->getClient()->first();
  93.             }
  94.             if ($this->isGranted("ROLE_EMPLOYER")) {
  95.                 $leaderData $form->get('users')->getData();
  96.                 if ($leaderData) {
  97.                     $leader $leaderData;
  98.                 }
  99.             }
  100.         }
  101.         $raports $raportAdsNewRepository->getRaportList($page$user$leader);
  102.         return $this->render('allegro_data_ads/index.html.twig', [
  103.             'raports'    => $raports,
  104.             'form'       => $form->createView(),
  105.             'page'       => $page,
  106.             'pagination' => $paginationService->paginate(
  107.                 $raportAdsNewRepository->countReportForUser($user),
  108.                 $page
  109.             ),
  110.         ]);
  111.     }
  112.     /**
  113.      * @Route("/data-raportu", name="allegro_ads_raport_date")
  114.      */
  115.     public function newRaportDate(Request $requestRaportDateRepository $raportDateRepository)
  116.     {
  117.         $raportDate = new RaportDate();
  118.         $form $this->createForm(RaportDateType::class, $raportDate);
  119.         $form->handleRequest($request);
  120.         if ($form->isSubmitted() && $form->isValid()) {
  121.             $raportDateRepository->save($raportDate);
  122.             $this->addFlash("success""Pomyślnie dodana data");
  123.             return $this->redirectToRoute('allegro_ads_raport_date');
  124.         }
  125.         return $this->render('allegro_data_ads/raport_date.html.twig', [
  126.             'form'           => $form->createView(),
  127.             'nextRaportList' => $raportDateRepository->getAllNextRaportDate(),
  128.         ]);
  129.     }
  130.     /**
  131.      * @Route("/data-raportu-usun/{date}", name="allegro_ads_raport_date_delete")
  132.      */
  133.     public function deleteRaportDateDelete(RaportDateRepository $raportDateRepositoryRaportDate $date)
  134.     {
  135.         $raportDateRepository->remove($date);
  136.         $this->addFlash("info""Pomyślnie usunięta data");
  137.         return $this->redirectToRoute('allegro_ads_raport_date');
  138.     }
  139.     /**
  140.      * @Route("/allegro-ads/nowy", name="allegro_ads_new")
  141.      */
  142.     public function new(Request $requestRaportAdsNewRepository $raportAdsNewRepository)
  143.     {
  144.         $allegroAdsNew = new RaportAdsNew();
  145.         $form $this->createForm(RaportAdsNewType::class, $allegroAdsNew, [
  146.             'user'      => $this->getUser(),
  147.             'rangeDate' => "",
  148.         ]);
  149.         $form->handleRequest($request);
  150.         if ($form->isSubmitted() && $form->isValid()) {
  151.             $date explode("do"$form->get("rangeDate")->getData());
  152.             $from $date[0];
  153.             $to $date[1];
  154.             $allegroAdsNew->setAccount($form->get('account')->getViewData())
  155.                 ->setDateFrom(new \DateTime($from))
  156.                 ->setDateTo(new \DateTime($to))
  157.                 ->setTypeGraphicStatistic($_REQUEST['type-graphic-statistic'])
  158.                 ->setTypeStatistic($_REQUEST['type-statistic']);
  159.             $raportAdsNewRepository->save($allegroAdsNew);
  160.             return $this->redirectToRoute('allegro_ads_chart');
  161.         }
  162.         return $this->render('allegro_data_ads/new.html.twig', [
  163.             'form' => $form->createView(),
  164.         ]);
  165.     }
  166.     /**
  167.      * @Route("/allegro-ads/edytuj/{allegroAdsNew}", name="allegro_ads_edit")
  168.      */
  169.     public function edit(Request $requestRaportAdsNewRepository $raportAdsNewRepositoryRaportAdsNew $allegroAdsNew)
  170.     {
  171.         $form $this->createForm(RaportAdsNewType::class, $allegroAdsNew, [
  172.             'user'      => $this->getUser(),
  173.             'rangeDate' => $allegroAdsNew->getDateFrom()->format("Y-m-d")." to ".$allegroAdsNew->getDateTo()->format("Y-m-d"),
  174.         ]);
  175.         $form->handleRequest($request);
  176.         if ($form->isSubmitted() && $form->isValid()) {
  177.             $date explode("do"$form->get("rangeDate")->getData());
  178.             $from $date[0];
  179.             $to = isset($date[1]) ? $date[1] : $date[0];
  180.             $allegroAdsNew->setAccount($form->get('account')->getViewData())
  181.                 ->setDateFrom(new \DateTime($from))
  182.                 ->setDateTo(new \DateTime($to));
  183.             $raportAdsNewRepository->save($allegroAdsNew);
  184.             return $this->redirectToRoute('allegro_ads_chart');
  185.         }
  186.         return $this->render('allegro_data_ads/new.html.twig', [
  187.             'form' => $form->createView(),
  188.         ]);
  189.     }
  190.     /**
  191.      * @Route("/allegro-ads/usun/{allegroAdsNew}", name="allegro_ads_remove")
  192.      */
  193.     public function remove(Request $requestRaportAdsNewRepository $raportAdsNewRepositoryRaportAdsNew $allegroAdsNew)
  194.     {
  195.         $raportAdsNewRepository->remove($allegroAdsNew);
  196.         return $this->redirectToRoute('allegro_ads_chart');
  197.     }
  198.     /**
  199.      * @Route("/allegro-ads-slack/{allegroAdsNew}", name="allegro_ads_slack")
  200.      */
  201.     public function slack(SlackManager $slackManagerRaportAdsNew $allegroAdsNew)
  202.     {
  203.         $link "<https://czas.qsell.pl".$this->generateUrl('allegro_ads_new_show', ["raportAdsNew" => $allegroAdsNew->getId()])."|".$allegroAdsNew->getAccount().">";
  204.         $slackManager->write(":chart_with_upwards_trend: *PRZYGOTOWANY ZOSTAŁ RAPORT ALLEGRO ADS DLA KONTA:* ".PHP_EOL.PHP_EOL."*".$allegroAdsNew->getAccount()."*".PHP_EOL.PHP_EOL.":arrow_right: KLIKNIJ (".$link.") ABY SPRAWDZIĆ"$allegroAdsNew->getProject()->getClientSlackChannelId());
  205.         return $this->redirectToRoute('allegro_ads_chart');
  206.     }
  207.     /**
  208.      * @Route("/allegro-ads/pobierz/{raportAdsNew}", name="allegro_ads_new_download")
  209.      */
  210.     public function download(RaportAdsNew $raportAdsNewAllegroDataAdsRepository $allegroDataAdsRepositorySerializerInterface $serializer)
  211.     {
  212.         if ($this->isGranted("ROLE_CLIENT") && !$raportAdsNew->getProject()->getClient()->contains($this->getUser())) {
  213.             $this->addFlash("error""Brak dostępu");
  214.             return $this->redirectToRoute('allegro_ads_chart');
  215.         }
  216.         $data $allegroDataAdsRepository->findDataFile($raportAdsNew->getAccount(), $raportAdsNew->getDateFrom(), $raportAdsNew->getDateTo(), $raportAdsNew->getProject());
  217.         $arr = [];
  218.         $i 0;
  219.         foreach ($data as $val) {
  220.             if ($raportAdsNew->getDateTo() < (new \DateTimeImmutable('2024-02-01 00:00:00'))) {
  221.                 $fileData str_replace("''""\'"$val->getData()['file']);
  222.                 $fileData str_replace("'""\""$fileData);
  223.                 $fileData preg_replace('/(?<=\d)"(?=(?![,:}]))/''\''$fileData);
  224.                 $file $serializer->decode('['.$fileData.']''json');
  225.             } else {
  226.                 $file $val->getData()['file'];
  227.             }
  228.             if (!$file) {
  229.                 continue;
  230.             }
  231.             foreach ($file as $f) {
  232.                 $a = [];
  233.                 foreach ($f as $key => $value) {
  234.                     if ($key == "Nazwa kampanii" || $key == "Nazwa grupy reklam") {
  235.                         continue;
  236.                     }
  237.                     if ($i == 0) {
  238.                         $arr[0][] = $key;
  239.                     }
  240.                     $a[] = $value;
  241.                 }
  242.                 $arr[] = $a;
  243.                 $i++;
  244.             }
  245.         }
  246.         $spreadsheet = new Spreadsheet();
  247.         $spreadsheet->getActiveSheet()->fromArray($arr);
  248.         $writer = new Xlsx($spreadsheet);
  249.         $response = new StreamedResponse(
  250.             function () use ($writer) {
  251.                 $writer->save('php://output');
  252.             }
  253.         );
  254.         $response->headers->set('Content-Type''application/vnd.ms-excel');
  255.         $response->headers->set('Content-Disposition''attachment;filename="raport.xlsx"');
  256.         $response->headers->set('Cache-Control''max-age=0');
  257.         return $response;
  258.     }
  259.     /**
  260.      * @Route("/allegro-ads/{raportAdsNew}", name="allegro_ads_new_show")
  261.      */
  262.     public function show(RaportAdsNew $raportAdsNewAllegroDataAdsRepository $allegroDataAdsRepository)
  263.     {
  264.         if ($this->isGranted("ROLE_CLIENT") && !$raportAdsNew->getProject()->getClient()->contains($this->getUser())) {
  265.             $this->addFlash("error""Brak dostępu");
  266.             return $this->redirectToRoute('allegro_ads_chart');
  267.         }
  268.         $file false;
  269.         $data $allegroDataAdsRepository->findDataFile($raportAdsNew->getAccount(), $raportAdsNew->getDateFrom(), $raportAdsNew->getDateTo(), $raportAdsNew->getProject());
  270.         if ($data) {
  271.             $file true;
  272.         }
  273.         return $this->render('allegro_data_ads/show.html.twig', [
  274.             'raport' => $raportAdsNew,
  275.             'file'   => $file,
  276.         ]);
  277.     }
  278.     /**
  279.      * @Route("/raport/{raportAdsNew}/{account}", name="allegro_ads_new_show_last")
  280.      */
  281.     public function showLast(string $raportAdsNewstring $accountRaportAdsNewRepository $raportAdsNewRepositoryProjectRepository $projectRepositoryAllegroDataAdsRepository $allegroDataAdsRepository)
  282.     {
  283.         $raport $raportAdsNewRepository->findOneBy([
  284.             "project" => $projectRepository->findOneBy(["name" => $raportAdsNew"type" => Project::TYPE_ACTIVE]),
  285.             "account" => $account,
  286.         ],
  287.             [
  288.                 "id" => "DESC",
  289.             ]);
  290. //        if (!$raport) {
  291. //            dd($projectRepository->findOneBy(["name" => $raportAdsNew, "type" => Project::TYPE_ACTIVE]), $raportAdsNewRepository->getLastRaport($projectRepository->findOneBy(["name" => $raportAdsNew]), $account));
  292. //        }
  293.         if ($this->isGranted("ROLE_CLIENT") && !$raport->getProject()->getClient()->contains($this->getUser())) {
  294.             $this->addFlash("error""Brak dostępu");
  295.             return $this->redirectToRoute('allegro_ads_chart');
  296.         }
  297.         $file false;
  298.         $data $allegroDataAdsRepository->findDataFile($raport->getAccount(), $raport->getDateFrom(), $raport->getDateTo(), $raport->getProject());
  299.         if ($data) {
  300.             $file true;
  301.         }
  302.         return $this->render('allegro_data_ads/show.html.twig', [
  303.             'raport' => $raport,
  304.             'file'   => $file,
  305.         ]);
  306.     }
  307.     /**
  308.      * @Route("/allegro-ads-project-account/{project}", name="allegro_ads_project_account")
  309.      */
  310.     public function dataAccountAllegro(Project $project): JsonResponse
  311.     {
  312.         return $this->json(explode(","$project->getAllegroAccount()));
  313.     }
  314.     /**
  315.      * @Route("/allegro-ads-json/{project}", name="allegro_ads_json")
  316.      */
  317.     public function dataJson(Request $requestProject $projectRaportAdsNewRepository $raportAdsNewRepository): JsonResponse
  318.     {
  319.         $date explode("do"$request->get("range"));
  320.         $from $date[0];
  321.         $to $date[1];
  322.         $datas $project->getAllegroDataAds()->filter(function (AllegroDataAds $allegroDataAds) use ($from$to) {
  323.             if ($allegroDataAds->getDate() >= new \DateTime($from) && $allegroDataAds->getDate() <= (new \DateTime($to))->modify("+1 day")) {
  324.                 return $allegroDataAds->getData();
  325.             }
  326.         });
  327.         $iterator $datas->getIterator();
  328.         $iterator->uasort(function ($a$b) {
  329.             return $a->getDate() <=> $b->getDate();
  330.         });
  331.         $datas = new ArrayCollection(iterator_to_array($iterator));
  332.         $ad = [];
  333.         $count = [];
  334.         if ($request->get("instant") || $request->get("week")) {
  335.             $raportAdsNew null;
  336.             if ($request->get("instant")) {
  337.                 $raportAdsNew $raportAdsNewRepository->find($request->get("raportId"));
  338.             }
  339.             if ($request->get("week") || $raportAdsNew->getTypeStatistic() == 1) {
  340.                 foreach ($datas as $data) {
  341.                     if (isset($data->getData()['file']) || isset($data->getData()['graphic-ads'])) {
  342.                         continue;
  343.                     }
  344.                     if (trim(strtolower($data->getData()['nickname'])) == trim(strtolower($request->get("nickname")))) {
  345.                         $date = (new \DateTimeImmutable())->setISODate($data->getDate()->format("Y"), $data->getDate()->format("W"))->format("Y-m-d");
  346.                         if (!isset($ad[$date])) {
  347.                             $ad[$date] = [];
  348.                             $count[$date] = 0;
  349.                         }
  350.                         $count[$date]++;
  351.                         $ad[$date] = [
  352.                             "nickname"        => $data->getData()['nickname'],
  353.                             "klikniecia"      => $this->stringToFloat($data->getData()['klikniecia']) + $this->getDataArray($date$ad'klikniecia'),
  354.                             "odslony"         => $this->stringToFloat($data->getData()['odslony']) + $this->getDataArray($date$ad'odslony'),
  355.                             "ctr"             => $this->stringToFloat($data->getData()['ctr']) + $this->getDataArray($date$ad'ctr'),
  356.                             "cpc"             => $this->stringToFloat($data->getData()['cpc']) + $this->getDataArray($date$ad'cpc'),
  357.                             "koszt"           => $this->stringToFloat($data->getData()['koszt']) + $this->getDataArray($date$ad'koszt'),
  358.                             "zwrot"           => $this->stringToFloat($data->getData()['zwrot']) + $this->getDataArray($date$ad'zwrot'),
  359.                             "zainteresowanie" => $this->stringToFloat($data->getData()['zainteresowanie']) + $this->getDataArray($date$ad'zainteresowanie'),
  360.                             "sprzedane"       => $this->stringToFloat($data->getData()['sprzedane']) + $this->getDataArray($date$ad'sprzedane'),
  361.                             "wartosc"         => $this->stringToFloat($data->getData()['wartosc']) + $this->getDataArray($date$ad'wartosc'),
  362.                             "date"            => $date,
  363.                         ];
  364.                     }
  365.                 }
  366.                 $allegroData = [];
  367.                 foreach ($ad as $key => $data) {
  368.                     $data['ctr'] = $data['ctr'] / $count[$key];
  369.                     $data['cpc'] = $data['cpc'] / $count[$key];
  370.                     $data['zwrot'] = $data['zwrot'] / $count[$key];
  371.                     $allegroData[] = [
  372.                         "data" => $data,
  373.                         "date" => $key,
  374.                     ];
  375.                 }
  376.                 return $this->json($allegroData);
  377.             }
  378.         }
  379.         $allegroData = [];
  380.         foreach ($datas as $data) {
  381.             if (trim(strtolower($data->getData()['nickname'])) == trim(strtolower($request->get("nickname")))) {
  382.                 if (isset($data->getData()['klikniecia'])) {
  383.                     $dataParse = [
  384.                         "nickname"        => $data->getData()['nickname'],
  385.                         "klikniecia"      => (string)$data->getData()['klikniecia'],
  386.                         "odslony"         => (string)$data->getData()['odslony'],
  387.                         "ctr"             => (string)$data->getData()['ctr'],
  388.                         "cpc"             => (string)$data->getData()['cpc'],
  389.                         "koszt"           => (string)$data->getData()['koszt'],
  390.                         "zwrot"           => (string)$data->getData()['zwrot'],
  391.                         "zainteresowanie" => (string)$data->getData()['zainteresowanie'],
  392.                         "sprzedane"       => (string)$data->getData()['sprzedane'],
  393.                         "wartosc"         => (string)$data->getData()['wartosc'],
  394.                     ];
  395.                 } else {
  396.                     $dataParse $data->getData();
  397.                 }
  398.                 $allegroData[] = [
  399.                     "data" => $dataParse,
  400.                     "date" => $data->getDate()->format("m-d"),
  401.                 ];
  402.             }
  403.         }
  404.         return $this->json($allegroData);
  405.     }
  406.     private function getDataArray(string $date, array $adstring $name)
  407.     {
  408.         if (isset($ad[$date][$name])) {
  409.             $string str_replace(" """$ad[$date][$name]);
  410.             $string str_replace("zł"""$string);
  411.             return (float)str_replace(",""."$string);
  412.         }
  413.         return 0;
  414.     }
  415.     private function stringToFloat(string $string): float
  416.     {
  417.         $string str_replace(" """$string);
  418.         $string str_replace("zł"""$string);
  419.         return (float)str_replace(",""."$string);
  420.     }
  421.     private function floatToString(string $string): float
  422.     {
  423.         return (string)str_replace("."","$string);
  424.     }
  425.     /**
  426.      * @Route("/allegro-ads-graphic-json/{project}", name="allegro_ads_graphic_json")
  427.      */
  428.     public function dataGrphicJson(Request $requestProject $projectRaportAdsNewRepository $raportAdsNewRepository): JsonResponse
  429.     {
  430.         $date explode("do"$request->get("from"));
  431.         $from $date[0];
  432.         $to $date[1];
  433.         $datas $project->getAllegroDataAds()->filter(function (AllegroDataAds $allegroDataAds) use ($from$to) {
  434.             if ($allegroDataAds->getDate() >= new \DateTime($from) && $allegroDataAds->getDate() <= (new \DateTime($to))->modify("+1 day") && isset($allegroDataAds->getData()['graphic-ads'])) {
  435.                 return $allegroDataAds->getData();
  436.             }
  437.         });
  438.         $iterator $datas->getIterator();
  439.         $iterator->uasort(function ($a$b) {
  440.             return $a->getDate() <=> $b->getDate();
  441.         });
  442.         $datas = new ArrayCollection(iterator_to_array($iterator));
  443.         $ad = [];
  444.         $count = [];
  445.         if ($request->get("instant") || $request->get("week")) {
  446.             $raportAdsNew null;
  447.             if ($request->get("instant")) {
  448.                 $raportAdsNew $raportAdsNewRepository->find($request->get("raportId"));
  449.             }
  450.             if ($request->get("week") || $raportAdsNew->getTypeGraphicStatistic() == 1) {
  451.                 foreach ($datas as $data) {
  452.                     if (!isset($data->getData()['graphic-ads'])) {
  453.                         continue;
  454.                     }
  455.                     if (trim(strtolower($data->getData()['nickname'])) == trim(strtolower($request->get("nickname")))) {
  456.                         $date = (new \DateTimeImmutable())->setISODate($data->getDate()->format("Y"), $data->getDate()->format("W"))->format("Y-m-d");
  457.                         if (!isset($ad[$date])) {
  458.                             $ad[$date] = [];
  459.                             $count[$date] = 0;
  460.                         }
  461.                         $count[$date]++;
  462.                         $ad[$date] = [
  463.                             "nickname"         => $data->getData()['nickname'],
  464.                             "klikniecia"       => $this->stringToFloat($data->getData()['graphic-ads']['klikniecia']) + $this->getDataArray($date$ad'klikniecia'),
  465.                             "odslony"          => $this->stringToFloat($data->getData()['graphic-ads']['odslony']) + $this->getDataArray($date$ad'odslony'),
  466.                             "ctr"              => $this->stringToFloat($data->getData()['graphic-ads']['ctr']) + $this->getDataArray($date$ad'ctr'),
  467.                             "cpm"              => $this->stringToFloat($data->getData()['graphic-ads']['cpm']) + $this->getDataArray($date$ad'cpm'),
  468.                             "koszt"            => $this->stringToFloat($data->getData()['graphic-ads']['koszt']) + $this->getDataArray($date$ad'koszt'),
  469.                             "zwroty"           => $this->stringToFloat($data->getData()['graphic-ads']['zwroty']) + $this->getDataArray($date$ad'zwroty'),
  470.                             "zasieg"           => isset($data->getData()['graphic-ads']['zasieg']) ? $this->stringToFloat($data->getData()['graphic-ads']['zasieg']) + $this->getDataArray($date$ad'zasieg') : "0",
  471.                             "zaitnteresowanie" => $this->stringToFloat($data->getData()['graphic-ads']['zaitnteresowanie'] ?? $data->getData()['graphic-ads']['zainteresowanie']) + $this->getDataArray($date$ad'zainteresowanie'),
  472.                             "sprzedanewsp"     => isset($data->getData()['graphic-ads']['sprzedanewsp']) ? $this->stringToFloat($data->getData()['graphic-ads']['sprzedanewsp']) + $this->getDataArray($date$ad'sprzedanewsp') : "0",
  473.                             "sprzedane"        => $this->stringToFloat($data->getData()['graphic-ads']['sprzedane']) + $this->getDataArray($date$ad'sprzedane'),
  474.                             "wartosc"          => $this->stringToFloat($data->getData()['graphic-ads']['wartosc']) + $this->getDataArray($date$ad'wartosc'),
  475.                             "date"             => $date,
  476.                         ];
  477.                     }
  478.                 }
  479.                 $allegroData = [];
  480.                 foreach ($ad as $key => $data) {
  481.                     $data['ctr'] = $data['ctr'] / $count[$key];
  482.                     $data['cpm'] = $data['cpm'] / $count[$key];
  483.                     $allegroData[] = [
  484.                         "data" => ["graphic-ads" => $data],
  485.                         "date" => $key,
  486.                     ];
  487.                 }
  488.                 return $this->json($allegroData);
  489.             }
  490.         }
  491.         $allegroData = [];
  492.         foreach ($datas as $data) {
  493.             if (trim(strtolower($data->getData()['nickname'])) == trim(strtolower($request->get("nickname")))) {
  494.                 $allegroData[] = [
  495.                     "data" => $data->getData(),
  496.                     "date" => $data->getDate()->format("m-d"),
  497.                 ];
  498.             }
  499.         }
  500.         return $this->json($allegroData);
  501.     }
  502. }