= Domify
== ER Дијаграм
[[Image(ERmodel_v2.png)]]
== Податочни побарувања
=== Ентитети
'''User – Генерален ентитет кој што дефинира корисници на апликацијата.'''
- id – нумерички тип (примарен клуч)
- first_name – текстуален тип (задолжителен атрибут)
- last_name – текстуален тип (задолжителен атрибут)
- email – текстуален тип (задолжителен атрибут)
- password_hash – текстуален тип (задолжителен атрибут)
- date_of_birth – датумски тип (задолжителен атрибут)
- rating- нумерички тип (задолжителен атрибут)
- bio - текстуален тип (опционален атрибут)
'''Property – Ентитет кој ги претставува недвижнините што се нудат за изнајмување.'''
- id – нумерички тип (примарен клуч)
- title – текстуален тип (задолжителен атрибут)
- description – текстуален тип (задолжителен атрибут)
- created_at – датумски тип (задолжителен атрибут)
'''PropertyType – Категорија на недвижнини (стан, куќа, деловен простор и сл.).'''
- id – нумерички тип (примарен клуч)
- name – текстуален тип (задолжителен атрибут)
'''PropertyImage – Слики поврзани со одредена недвижнина.'''
- id – нумерички тип (примарен клуч)
- image – слика тип (задолжителен атрибут)
'''Unit – Посебна единица/станбен простор во рамките на недвижнина.'''
- id – нумерички тип (примарен клуч)
- unit_number – текстуален тип (задолжителен атрибут)
- floor – нумерички тип (задолжителен атрибут)
- bedrooms – нумерички тип (задолжителен атрибут)
- bathrooms – нумерички тип (задолжителен атрибут)
- area_sq_m – нумерички тип (задолжителен атрибут)
- rent_amount – нумерички тип (опционален атрибут)
'''Listing – Оглас за достапност на одредена единица.'''
- id – нумерички тип (примарен клуч)
- available_from – датумски тип (задолжителен атрибут)
- available_to – датумски тип (задолжителен атрибут)
- status – текстуален тип (достапно, изнајмено итн.) (задолжителен атрибут)
- description – текстуален тип (опционален атрибут)
'''Lease – Договор за изнајмување помеѓу Изнајмувач и Издавач.'''
- id – нумерички тип (примарен клуч)
- start_date – датумски тип (задолжителен атрибут)
- end_date – датумски тип (задолжителен атрибут)
- rent_amount – нумерички тип (задолжителен атрибут)
- deposit_amount – нумерички тип (задолжителен атрибут)
'''Payment – Информации за уплатите поврзани со договорот за кирија.'''
- id – нумерички тип (примарен клуч)
- amount – нумерички тип (задолжителен атрибут)
- status – текстуален тип (на пример: успешно, неуспешно) (задолжителен атрибут)
- payment_date – датумски тип (задолжителен атрибут)
'''PaymentMethod – Начин на плаќање (картичка, трансакција, готово).'''
- id – нумерички тип (примарен клуч)
- name – текстуален тип (задолжителен атрибут)
'''TenantProfile – Профил на изнајмувачот. Произлгегува од User.'''
- id – нумерички тип (примарен клуч)
- first_name – текстуален тип (задолжителен атрибут)
- last_name – текстуален тип (задолжителен атрибут)
- email – текстуален тип (задолжителен атрибут)
- password_hash – текстуален тип (задолжителен атрибут)
- date_of_birth – датумски тип (задолжителен атрибут)
- rating – нумерички тип (задолжителен атрибут)
- bio – текстуален тип (опционален атрибут)
'''LandlordProfile – Профил на сопственикот. Произлгегува од User.'''
- id – нумерички тип (примарен клуч)
- first_name – текстуален тип (задолжителен атрибут)
- last_name – текстуален тип (задолжителен атрибут)
- email – текстуален тип (задолжителен атрибут)
- password_hash – текстуален тип (задолжителен атрибут)
- date_of_birth – датумски тип (задолжителен атрибут)
- rating – нумерички тип (задолжителен атрибут)
- bio – текстуален тип (опционален атрибут)
- managed_properties_count – нумерички тип (задолжителен атрибут)
- is_agent - булова вредност (задолжителен атрибут)
'''ServiceRequest – Барање за сервис или поправка од страна на изнајмувачот.'''
- id – нумерички тип (примарен клуч)
- description – текстуален тип (задолжителен атрибут)
- request_date – датумски тип (задолжителен атрибут)
- status – текстуален тип (задолжителен атрибут)
'''ServiceCategory – Категорија на услуги за сервисни барања (електрика, водовод и сл.).'''
- id – нумерички тип (примарен клуч)
- name – текстуален тип (задолжителен атрибут)
'''MaintenanceLog– Евиденција за извршени сервисни активности.'''
- id – нумерички тип (примарен клуч)
- description – текстуален тип (задолжителен атрибут)
- maintenance_date – датумски тип (задолжителен атрибут)
'''Inspection – Инспекција на единица за време или по завршување на договор.'''
- id – нумерички тип (примарен клуч)
- inspection_date – датумски тип (задолжителен атрибут)
- notes – текстуален тип (задолжителен атрибут)
'''Document – Датотеки поврзани со договори или кориснички профили.'''
- id – нумерички тип (примарен клуч)
- file_type – текстуален тип (PDF, JPG и сл.) (задолжителен атрибут)
- file_url – текстуален тип (задолжителен атрибут)
- uploaded_at – датумски тип (задолжителен атрибут)
'''Address –Податоци за локација на корисници и недвижнини.'''
- id – нумерички тип (примарен клуч)
- street – текстуален тип (задолжителен атрибут)
- city – текстуален тип (задолжителен атрибут)
- number– текстуален тип (задолжителен атрибут)
- country – текстуален тип (задолжителен атрибут)
'''Message - Порака помеѓу сопствникот и изнајмувачот за одредено изнајмување.'''
- id - нумерички тип (примарен клуч)
- sent_at - датум тип(задолжителен атрибут)
- content - текстуален тип(задолжителен атрибут)
=== Релации
- '''lives'''– 1:N релација помеѓу Address и User, каде што една адреса може да биде споделувана од повеќе корисници, а секој корисник мора да има една адреса
- '''owned_by''' – 1:N релација помеѓу User и Property, каде што секој сопственик (корисник) може да има повеќе недвижнини, а секоја недвижнина мора да припаѓа на еден сопственик (целосно учество од страна на Property).
- '''is_type''' – 1:N релација помеѓу PropertyType и Property, каде што секоја недвижнина има еден тип, а еден тип може да се користи за повеќе недвижнини (целосно учество од страна на Property).
- '''located''' – 1:1 релација помеѓу Address и Property, каде што секоја недвижнина има локација (адреса), а една адреса може да се користи за една недвижнина.
- '''comprised_of''' – 1:N релација помеѓу Property и Unit, каде што секоја недвижнина може да има повеќе единици, а секоја единица мора да припаѓа на една недвижнина (целосно учество од двата ентитета).
- '''listed''' – 1:N релација помеѓу Unit и Listing, каде што секоја единица може да има повеќе огласи во различен период, а секој оглас мора да биде поврзан со една единица (целосно учество од страна на Listing).
- '''image''' – 1:N релација помеѓу Property и PropertyImage, каде што една недвижнина може да има повеќе слики, а секоја слика мора да припаѓа на една недвижнина (целосно учество од страна на PropertyImage).
- '''is_for'''– 1:N релација помеѓу Unit и Lease , каде што секое изнајмување се однесува на една единица, а една единица може да биде изнајмена повеќепати (во различни периоди) (целосно учество од страна на Lease).
- '''tenant''' – 1:N релација помеѓу TenantProfile и Lease, каде што еден изнајмувач може да има повеќе изнајмувања, а секое изнајмување мора да припаѓа на еден изнајмувач(целосно учество од страна на Lease).
- '''landlord''' – 1:N релација помеѓу LandlordProfile и Lease, каде што секое изнајмување мора да има еден сопственик , a еден сопственик може да биде дел од повеќе изнајмувања (целосно учество од страна на Lease).
- '''payment_is_for_lease''' – 1:N релација помеѓу Lease и Payment, каде што секое изнајмување може да има повеќе наплаќања, а секое плаќање мора да се однесува на некој договор (целосно учество од Payment).
- '''refers_to''' – 1:N релација помеѓу PaymentMethod и Payment, каде што секое плаќање мора да користи одреден начин на плаќање, а еден начин на плаќање може да се користи од повеќе плаќања (целосно учество од Payment).
- '''servicerequest_is_for_lease''' – 1:N релација помеѓу Lease и ServiceRequest, каде што едно изнајмување може да има повеќе сервисни барања, а секое барање мора да биде поврзано со едно изнајмување.
- '''type''' – 1:N релација помеѓу ServiceCategory и ServiceRequest, каде што секое сервисно барање мора да има категорија, а една категорија може да ја имаат повеќе сервисни барања (целосно учество од страна на ServiceRequest).
- '''maintenancelog _for_ servicerequest''' – 1:N релација помеѓу ServiceRequest и MaintenanceLog, каде што едно барање може да има повеќе записи за поправки, а секој запис мора да биде поврзан со едно барање (целосно учество од MaintenanceLog).
- '''inspection _for_ lease''' - 1:N релација помеѓу Lease и Inspection, каде што инспекцијата се врши во рамки на некоe изнајмување, а за едно изнајмување може да има повеќе инспекции.
- '''document _refers_to_user'''– 1:N релација помеѓу User и Document, каде што корисник може да има повеќе документи, а секој документ мора да биде поврзан со еден корисник.
- '''document _is _for_lease''' – 1:N релација помеѓу Lease и Document, каде што едно изнајмување може да има повеќе документи, а секој документ мора да биде поврзан со еден договор.
- '''user_from_message''' - 1:N релација помеѓѕ User и Message, каде што е еден корисник може да испрати повеќе пораки, а секоја порака е испратена од еден корисник (целосно учество од Message).
- '''user_to_message''' - 1:N релација помеѓѕ User и Message, каде што е еден корисник може да добие повеќе пораки, а секоја порака е пратена до еден корисник (целосно учество од Message).
- '''about''' - 1:N релација помеѓу User и Leasing, каде што едно изнајмување може да биде дел од повеќе пораки, а една порака се однесува за едно изнајмување (целосно учество од Message).
== Историјат
[[html(Верзија 1 - Почетна верзија)]]
[[html(Верзија 2 - Промена во оваа верзија e тоа што релацијата is_for помеѓу Lease и Unit е отстранета и е додадена како 1:1 релација помеѓу Lease и Listing.)]]