$weekendDays = Helper::getNumberOfWeekendDays($checkIn, $checkOut);
$query->leftJoin(\DB::raw('(
SELECT
apartment_id,
SUM(DATEDIFF(LEAST("' . $checkOut . '", end), GREATEST("' . $checkIn . '", start)) * price) AS total_special_price,
SUM(DATEDIFF(LEAST("' . $checkOut . '", end), GREATEST("' . $checkIn . '", start))) AS special_days_count,
SUM(count_weekend_days(GREATEST("' . $checkIn . '", start), LEAST("' . $checkOut . '", end))) AS special_weekend_days
FROM special_prices
WHERE start < "' . $checkOut . '" AND end > "' . $checkIn . '"
GROUP BY apartment_id
) AS sp'), 'sp.apartment_id', '=', 'a.id');
$priceExpression = "ROUND(
(pr." . $column . " * (" . $numberOfNights . " - COALESCE(sp.special_days_count, 0))
+ (COALESCE(a.weekend_extra_price, 0) * (" . $weekendDays . " - COALESCE(sp.special_weekend_days, 0)))
+ COALESCE(sp.total_special_price, 0)
) / " . $numberOfNights . "
)";
$weekendDays = Helper::getNumberOfWeekendDays($checkIn, $checkOut);
$query->leftJoin(\DB::raw('(
SELECT
apartment_id,
SUM(DATEDIFF(LEAST("' . $checkOut . '", end), GREATEST("' . $checkIn . '", start)) * price) AS total_special_price,
SUM(DATEDIFF(LEAST("' . $checkOut . '", end), GREATEST("' . $checkIn . '", start))) AS special_days_count,
SUM(count_weekend_days(GREATEST("' . $checkIn . '", start), LEAST("' . $checkOut . '", end))) AS special_weekend_days
FROM special_prices
WHERE start < "' . $checkOut . '" AND end > "' . $checkIn . '"
GROUP BY apartment_id
) AS sp'), 'sp.apartment_id', '=', 'a.id');
$priceExpression = "ROUND(
(pr." . $column . " * (" . $numberOfNights . " - COALESCE(sp.special_days_count, 0))
+ (COALESCE(a.weekend_extra_price, 0) * (" . $weekendDays . " - COALESCE(sp.special_weekend_days, 0)))
+ COALESCE(sp.total_special_price, 0)
) / " . $numberOfNights . "
)";