<?php
namespace App\Service\ClickHouse\DataManager;
use App\Entity\Profile\ProfileType;
use App\Enums\Constants;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
class IncomeRawDataCHManagerService extends ClickHouseBaseDataManagerService
{
public const NAME = 'income_raw_data';
public function getIncomeByComposition(ProfileType $profileType)
{
try {
// Get the ClickHouse connection
$db = $this->getCHConnection();
$query = "SELECT
composition_id,
sum(income_total_gbp_share_net) AS total_income_total_gbp_share_net,
sum(income_se_net) AS total_income_se_net,
sum(income_pa_net) AS total_income_pa_net,
sum(income_pu_net) AS total_income_pu_net,
sum(income_sw_net) AS total_income_sw_net
FROM income_raw_data
GROUP BY composition_id ";
switch ($profileType->getName()){
case Constants::PROFILE_TYPE_SONGWRITER:
$query .= "ORDER BY total_income_sw_net DESC;";
break;
case Constants::PROFILE_TYPE_PUBLISHER:
$query .= "ORDER BY total_income_pu_net DESC;";
break;
case Constants::PROFILE_TYPE_PUBLISHER_ADMINISTRATOR:
$query .= "ORDER BY total_income_pa_net DESC;";
break;
default:
$query .= "ORDER BY total_income_total_gbp_share_net DESC;";
break;
}
// Execute the query
$statement = $db->executeQuery($query);
// Fetch and return the data as an array
return $statement->fetchAllAssociative();
}catch (\Exception $e) {
throw new BadRequestHttpException($e->getMessage());
}
}
}