Changes between Initial Version and Version 1 of Views


Ignore:
Timestamp:
08/19/25 23:18:05 (10 hours ago)
Author:
221071
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Views

    v1 v1  
     1= Погледи
     2== Детали за договори за изнајмување
     3
     4{{{
     5CREATE OR REPLACE VIEW domify.LeaseDetailsView AS
     6SELECT
     7    L.id AS lease_id,
     8    L.start_date,
     9    L.end_date,
     10    L.rent_amount,
     11    L.deposit_amount,
     12   
     13    Li.id AS listing_id,
     14    Li.title AS listing_title,
     15    Li.description AS listing_description,
     16    Li.status AS listing_status,
     17   
     18    U.id AS unit_id,
     19    U.unit_number,
     20    U.floor,
     21    U.area_sq_m,
     22   
     23    P.id AS property_id,
     24    P.title AS property_title,
     25    PT.name AS property_type,
     26   
     27    A.street,
     28    A.number,
     29    A.municipality,
     30    A.city,
     31    A.country,
     32   
     33    T.id AS tenant_id,
     34    TU.first_name AS tenant_first_name,
     35    TU.last_name AS tenant_last_name,
     36    TU.rating AS tenant_rating,
     37   
     38    LL.id AS landlord_id,
     39    LU.first_name AS landlord_first_name,
     40    LU.last_name AS landlord_last_name,
     41    LU.rating AS landlord_rating,
     42   
     43    (SELECT ARRAY_AGG(image) FROM domify.UnitImage WHERE unit_id = U.id) AS unit_images,
     44   
     45    CASE
     46        WHEN CURRENT_DATE BETWEEN L.start_date AND L.end_date
     47        THEN (L.end_date - CURRENT_DATE)
     48        ELSE NULL
     49    END AS days_remaining
     50
     51FROM domify.Lease L
     52JOIN domify.Listing Li ON L.listing_id = Li.id
     53JOIN domify.Unit U ON Li.unit_id = U.id
     54JOIN domify.Property P ON U.property_id = P.id
     55JOIN domify.PropertyType PT ON P.property_type_id = PT.id
     56JOIN domify.Address A ON P.address_id = A.id
     57JOIN domify.TenantProfile T ON L.tenant_id = T.id
     58JOIN domify.UserD TU ON T.id = TU.id
     59JOIN domify.LandlordProfile LL ON L.landlord_id = LL.id
     60JOIN domify.UserD LU ON LL.id = LU.id;
     61}}}
     62
     63
     64* Прикажува целосни информации за изнајмување: детали за изнајмувањето, станарот, сопственикот, имотот, листингот, адресата и останатите слики. Пресметува и колку денови остануваат до крај на договорот. 
     65* Корисен е кога сакаме да имаме централизиран приказ на сите потребни податоци за еден договор.
     66----
     67
     68== Активни слободни огласи
     69
     70{{{
     71CREATE OR REPLACE VIEW domify.ActiveListingsView AS
     72SELECT
     73    L.id AS listing_id,
     74    L.title,
     75    U.rent_amount,
     76    A.city,
     77    A.municipality,
     78    CONCAT(A.street, ' ', A.number, ', ', A.municipality, ', ', A.city) AS display_address,
     79    PT.name AS property_type,
     80    UI.image AS unit_image
     81FROM domify.Listing L
     82JOIN domify.Unit U ON L.unit_id = U.id
     83JOIN domify.Property P ON U.property_id = P.id
     84JOIN domify.PropertyType PT ON P.property_type_id = PT.id
     85JOIN domify.Address A ON P.address_id = A.id
     86LEFT JOIN domify.UnitImage UI ON U.id = UI.unit_id
     87WHERE L.status = 'слободно';
     88}}}
     89
     90
     91* Прикажува тековни активни/слободни огласи со клучни информации: наслов, кирија, адреса, тип на имот и слика. 
     92* Корисен за брзо пребарување и прикажување на слободни огласи за изнајмување.
     93
     94
     95----
     96
     97== Заинтересирани станари за оглас
     98
     99{{{
     100CREATE OR REPLACE VIEW domify.InterestedTenantsView AS
     101SELECT
     102    I.listing_id,
     103    L.title AS listing_title,
     104    TP.id AS tenant_id,
     105    UT.first_name,
     106    UT.last_name,
     107    UT.email,
     108    UT.rating,
     109    UT.bio,
     110    AT.city AS tenant_city,
     111    AT.municipality AS tenant_municipality
     112FROM domify.Interested I
     113JOIN domify.Listing L ON I.listing_id = L.id
     114JOIN domify.TenantProfile TP ON I.tenant_profile_id = TP.id
     115JOIN domify.UserD UT ON TP.id = UT.id
     116JOIN domify.Address AT ON UT.address_id = AT.id;
     117}}}
     118
     119* Прикажува кои станари се заинтересирале за одреден оглас, заедно со нивните лични податоци, рејтинг и адреса. 
     120*  Сопствениците можат да ги видат потенцијалните станари и полесно да изберат кому да изнајмат.
     121
     122----
     123
     124== Детали за огласи за изнајмување
     125
     126{{{
     127CREATE OR REPLACE VIEW domify.ListingDetailsView AS
     128SELECT
     129    L.id AS listing_id,
     130    L.title,
     131    L.description,
     132    L.available_from,
     133    L.available_to,
     134    L.status,
     135    U.id AS unit_id,
     136    U.unit_number,
     137    U.floor,
     138    U.bedrooms,
     139    U.bathrooms,
     140    U.area_sq_m,
     141    U.rent_amount,
     142    P.id AS property_id,
     143    P.title AS property_title,
     144    P.description AS property_description,
     145    PT.name AS property_type,
     146    OU.first_name,
     147    OU.last_name,
     148    A.street,
     149    A.number,
     150    A.municipality,
     151    A.city,
     152    A.country,
     153    U.rent_amount * 2 AS deposit_amount,
     154    COALESCE(interest_count.count, 0) AS interested_count,
     155    ARRAY_AGG(UI.image) FILTER (WHERE UI.image IS NOT NULL) AS unit_images
     156FROM domify.Listing L
     157JOIN domify.Unit U ON L.unit_id = U.id
     158JOIN domify.Property P ON U.property_id = P.id
     159JOIN domify.PropertyType PT ON P.property_type_id = PT.id
     160JOIN domify.Address A ON P.address_id = A.id
     161JOIN domify.UserD OU ON P.owner_id = OU.id
     162LEFT JOIN domify.UnitImage UI ON U.id = UI.unit_id
     163LEFT JOIN (
     164    SELECT listing_id, COUNT(*) as count
     165    FROM domify.Interested
     166    GROUP BY listing_id
     167) interest_count ON L.id = interest_count.listing_id
     168GROUP BY L.id, L.title, L.description, L.available_from, L.available_to, L.status,
     169         U.id, U.unit_number, U.floor, U.bedrooms, U.bathrooms, U.area_sq_m, U.rent_amount,
     170         P.id, P.title, P.description, PT.name, OU.first_name, OU.last_name,
     171         A.street, A.number, A.municipality, A.city, A.country,
     172         interest_count.count;
     173}}}
     174
     175
     176* Прикажува детални информации за огласите: единицата, имотот, сопственикот, адресата, депозитот, број на заинтересирани станари и сите слики. 
     177*  Дава целосна слика за огласот на едно место, со што станарите и сопствениците добиваат комплетни информации.