Untitled

 avatar
unknown
php
2 years ago
3.4 kB
6
Indexable
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AlterVwRoomsSmallFutureLeases extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        DB::statement('DROP VIEW IF EXISTS `vw_rooms`;');
        DB::statement('CREATE VIEW `vw_rooms` AS
          SELECT
              rooms.id,
              rooms.house_id,
              houses.region_id,
              rooms.price,
              IF(vw_future_member_leases.room_id IS NULL,
                 if(vw_member_leases.id AND (vw_member_leases.date_end IS NULL OR vw_member_leases.date_end > now() + INTERVAL 30 DAY), 0, 1),
                 0
              ) AS vacancy,
              if(now() < houses.date_lease_start, houses.date_lease_start,
                 if(vw_future_member_leases.room_id, null, if(vw_member_leases.id, (vw_member_leases.date_end + INTERVAL 1 DAY),
                    houses.date_lease_start))) AS move_in_at,
              (SELECT COUNT(rooms.id)
               FROM rooms
               WHERE
                 rooms.house_id = houses.id
                 AND rooms.deleted_at IS NULL) AS vacancies
            FROM rooms
              LEFT JOIN vw_latest_member_lease_by_rooms ON vw_latest_member_lease_by_rooms.room_id = rooms.id
              LEFT JOIN vw_member_leases ON vw_member_leases.id = vw_latest_member_lease_by_rooms.id
              LEFT JOIN vw_future_member_leases 
                ON vw_future_member_leases.room_id = rooms.id
                    AND COALESCE(vw_future_member_leases.date_end, NOW() + INTERVAL 3 MONTH) > NOW() + INTERVAL 30 DAY
              JOIN vw_houses AS houses ON (houses.id = rooms.house_id)
            WHERE
              rooms.deleted_at IS NULL');
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        DB::statement('DROP VIEW IF EXISTS `vw_rooms`;');
        DB::statement('CREATE VIEW `vw_rooms` AS
          SELECT
              rooms.id,
              rooms.house_id,
              houses.region_id,
              rooms.price,
              IF(vw_future_member_leases.room_id IS NULL,
                 if(vw_member_leases.id AND (vw_member_leases.date_end IS NULL OR vw_member_leases.date_end > now() + INTERVAL 30 DAY), 0, 1),
                 0
              ) AS vacancy,
              if(now() < houses.date_lease_start, houses.date_lease_start,
                 if(vw_future_member_leases.room_id, null, if(vw_member_leases.id, (vw_member_leases.date_end + INTERVAL 1 DAY),
                    houses.date_lease_start))) AS move_in_at,
              (SELECT COUNT(rooms.id)
               FROM rooms
               WHERE
                 rooms.house_id = houses.id
                 AND rooms.deleted_at IS NULL) AS vacancies
            FROM rooms
              LEFT JOIN vw_latest_member_lease_by_rooms ON vw_latest_member_lease_by_rooms.room_id = rooms.id
              LEFT JOIN vw_member_leases ON vw_member_leases.id = vw_latest_member_lease_by_rooms.id
              LEFT JOIN vw_future_member_leases ON vw_future_member_leases.room_id = rooms.id
              JOIN vw_houses AS houses ON (houses.id = rooms.house_id)
            WHERE
              rooms.deleted_at IS NULL');
    }
}
Editor is loading...