Погледи
Детали за договори за изнајмување
CREATE OR REPLACE VIEW domify.LeaseDetailsView AS SELECT L.id AS lease_id, L.start_date, L.end_date, L.rent_amount, L.deposit_amount, Li.id AS listing_id, Li.title AS listing_title, Li.description AS listing_description, Li.status AS listing_status, U.id AS unit_id, U.unit_number, U.floor, U.area_sq_m, P.id AS property_id, P.title AS property_title, PT.name AS property_type, A.street, A.number, A.municipality, A.city, A.country, T.id AS tenant_id, TU.first_name AS tenant_first_name, TU.last_name AS tenant_last_name, TU.rating AS tenant_rating, LL.id AS landlord_id, LU.first_name AS landlord_first_name, LU.last_name AS landlord_last_name, LU.rating AS landlord_rating, (SELECT ARRAY_AGG(image) FROM domify.UnitImage WHERE unit_id = U.id) AS unit_images, CASE WHEN CURRENT_DATE BETWEEN L.start_date AND L.end_date THEN (L.end_date - CURRENT_DATE) ELSE NULL END AS days_remaining FROM domify.Lease L JOIN domify.Listing Li ON L.listing_id = Li.id JOIN domify.Unit U ON Li.unit_id = U.id JOIN domify.Property P ON U.property_id = P.id JOIN domify.PropertyType PT ON P.property_type_id = PT.id JOIN domify.Address A ON P.address_id = A.id JOIN domify.TenantProfile T ON L.tenant_id = T.id JOIN domify.UserD TU ON T.id = TU.id JOIN domify.LandlordProfile LL ON L.landlord_id = LL.id JOIN domify.UserD LU ON LL.id = LU.id;
- Прикажува целосни информации за изнајмување: детали за изнајмувањето, станарот, сопственикот, имотот, листингот, адресата и останатите слики. Пресметува и колку денови остануваат до крај на договорот.
- Корисен е кога сакаме да имаме централизиран приказ на сите потребни податоци за еден договор.
Активни слободни огласи
CREATE OR REPLACE VIEW domify.ActiveListingsView AS SELECT L.id AS listing_id, L.title, U.rent_amount, A.city, A.municipality, CONCAT(A.street, ' ', A.number, ', ', A.municipality, ', ', A.city) AS display_address, PT.name AS property_type, UI.image AS unit_image FROM domify.Listing L JOIN domify.Unit U ON L.unit_id = U.id JOIN domify.Property P ON U.property_id = P.id JOIN domify.PropertyType PT ON P.property_type_id = PT.id JOIN domify.Address A ON P.address_id = A.id LEFT JOIN domify.UnitImage UI ON U.id = UI.unit_id WHERE L.status = 'слободно';
- Прикажува тековни активни/слободни огласи со клучни информации: наслов, кирија, адреса, тип на имот и слика.
- Корисен за брзо пребарување и прикажување на слободни огласи за изнајмување.
Заинтересирани станари за оглас
CREATE OR REPLACE VIEW domify.InterestedTenantsView AS SELECT I.listing_id, L.title AS listing_title, TP.id AS tenant_id, UT.first_name, UT.last_name, UT.email, UT.rating, UT.bio, AT.city AS tenant_city, AT.municipality AS tenant_municipality FROM domify.Interested I JOIN domify.Listing L ON I.listing_id = L.id JOIN domify.TenantProfile TP ON I.tenant_profile_id = TP.id JOIN domify.UserD UT ON TP.id = UT.id JOIN domify.Address AT ON UT.address_id = AT.id;
- Прикажува кои станари се заинтересирале за одреден оглас, заедно со нивните лични податоци, рејтинг и адреса.
- Сопствениците можат да ги видат потенцијалните станари и полесно да изберат кому да изнајмат.
Детали за огласи за изнајмување
CREATE OR REPLACE VIEW domify.ListingDetailsView AS SELECT L.id AS listing_id, L.title, L.description, L.available_from, L.available_to, L.status, U.id AS unit_id, U.unit_number, U.floor, U.bedrooms, U.bathrooms, U.area_sq_m, U.rent_amount, P.id AS property_id, P.title AS property_title, P.description AS property_description, PT.name AS property_type, OU.first_name, OU.last_name, A.street, A.number, A.municipality, A.city, A.country, U.rent_amount * 2 AS deposit_amount, COALESCE(interest_count.count, 0) AS interested_count, ARRAY_AGG(UI.image) FILTER (WHERE UI.image IS NOT NULL) AS unit_images FROM domify.Listing L JOIN domify.Unit U ON L.unit_id = U.id JOIN domify.Property P ON U.property_id = P.id JOIN domify.PropertyType PT ON P.property_type_id = PT.id JOIN domify.Address A ON P.address_id = A.id JOIN domify.UserD OU ON P.owner_id = OU.id LEFT JOIN domify.UnitImage UI ON U.id = UI.unit_id LEFT JOIN ( SELECT listing_id, COUNT(*) as count FROM domify.Interested GROUP BY listing_id ) interest_count ON L.id = interest_count.listing_id GROUP BY L.id, L.title, L.description, L.available_from, L.available_to, L.status, U.id, U.unit_number, U.floor, U.bedrooms, U.bathrooms, U.area_sq_m, U.rent_amount, P.id, P.title, P.description, PT.name, OU.first_name, OU.last_name, A.street, A.number, A.municipality, A.city, A.country, interest_count.count;
- Прикажува детални информации за огласите: единицата, имотот, сопственикот, адресата, депозитот, број на заинтересирани станари и сите слики.
- Дава целосна слика за огласот на едно место, со што станарите и сопствениците добиваат комплетни информации.
Last modified
7 hours ago
Last modified on 08/19/25 23:18:05
Note:
See TracWiki
for help on using the wiki.