HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/limestate-api/Controllers/CityDistrictsController.php
<?php

class CityDistrictsController {

	public static function actionDefault($id = null) {
		$flat = CityDistricts::find($id);
		Ajax::success([
			'district' => $flat,
		]);
	}

	public static function actionList() {
		$districts = CityDistricts::$db->select()->from(CityDistricts::$table_name . ' cd')
			->fetchAll();

		Ajax::success($districts);
	}

    public static function actionExpandList() {
        $districts = CityDistricts::$db->select('cd.*', 'COUNT(c.id) complex_count')
            ->from(CityDistricts::$table_name . ' cd')
            ->joinLeft(Complex::$table_name . ' c', 'cd.id = c.city_district_id')
            ->joinLeft(Building::$table_name . ' b', 'b.complex_id = c.id AND b.published = 1')
            ->joinLeft(Flat::$table_name . ' f', 'f.building_id = b.id AND f.published = 1')
            ->where('b.published = 1')
            ->where('c.published = 1')
            ->group('cd.id')
            ->fetchAll();

        Ajax::success($districts);
    }

	public static function actionBestOffers() {
		$flats = Flat::$db->select('SUM(f.total_area) area, MIN(f.price) min_price, f.rooms, b.city_district_id')->from(Flat::$table_name . ' f')
			->join(Building::$table_name . ' b', 'b.id = f.building_id')
			->group('f.rooms, b.city_district_id')
            ->where('f.price > 0')
            ->where('b.published = 1')
            ->where('f.published = 1')
            ->where('b.city_district_id IS NOT NULL')
			->fetchAll();

		$offers = Flat::$db->select('COUNT(f.id) total, b.city_district_id')->from(Flat::$table_name . ' f')
            ->join(Building::$table_name . ' b', 'b.id = f.building_id')
            ->group('b.city_district_id')
            ->where('f.price > 0')
            ->where('b.published = 1')
            ->where('f.published = 1')
            ->where('b.city_district_id IS NOT NULL')
            ->fetchAll();

		$districts = CityDistricts::$db->select()->from(CityDistricts::$table_name . ' cd')
            ->fetchAll();

		Ajax::success([
			'data' => $flats,
			'offers' => $offers,
			'districts' => $districts
		]);
	}
}