src/Service/ClickHouse/DataManager/IncomeRawDataCHManagerService.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\Service\ClickHouse\DataManager;
  3. use App\Entity\Profile\ProfileType;
  4. use App\Enums\Constants;
  5. use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
  6. class IncomeRawDataCHManagerService extends ClickHouseBaseDataManagerService
  7. {
  8.     public const NAME 'income_raw_data';
  9.     public function getIncomeByComposition(ProfileType $profileType)
  10.     {
  11.         try {
  12.             // Get the ClickHouse connection
  13.             $db $this->getCHConnection();
  14.             $query "SELECT
  15.                       composition_id,
  16.                       sum(income_total_gbp_share_net) AS total_income_total_gbp_share_net,
  17.                       sum(income_se_net) AS total_income_se_net,
  18.                       sum(income_pa_net) AS total_income_pa_net,
  19.                       sum(income_pu_net) AS total_income_pu_net,
  20.                       sum(income_sw_net) AS total_income_sw_net
  21.                     FROM income_raw_data
  22.                     GROUP BY composition_id ";
  23.             switch ($profileType->getName()){
  24.                 case Constants::PROFILE_TYPE_SONGWRITER:
  25.                     $query .= "ORDER BY total_income_sw_net DESC;";
  26.                     break;
  27.                 case Constants::PROFILE_TYPE_PUBLISHER:
  28.                     $query .= "ORDER BY total_income_pu_net DESC;";
  29.                     break;
  30.                 case Constants::PROFILE_TYPE_PUBLISHER_ADMINISTRATOR:
  31.                     $query .= "ORDER BY total_income_pa_net DESC;";
  32.                     break;
  33.                 default:
  34.                     $query .= "ORDER BY total_income_total_gbp_share_net DESC;";
  35.                     break;
  36.             }
  37.             // Execute the query
  38.             $statement $db->executeQuery($query);
  39.             // Fetch and return the data as an array
  40.             return $statement->fetchAllAssociative();
  41.         }catch (\Exception $e) {
  42.             throw new BadRequestHttpException($e->getMessage());
  43.         }
  44.     }
  45. }