Az ingatlan-form mentési folyamata és adatmodellje
Az ingatlan-mentés lépései a validációval, a koordináta- és címkekezelés, a migráció előtti állapot, a geo-tár írása, a törzs- és kapcsolódó táblák, valamint a tulajdonos modell publikus metódusai.
A form (masterdata/property.form, edit jog) két hasábos (40/60). A mentés (masterdata/property.save, canSave(route, property_id); mivel nincs add kulcs, újnál is edit) egyetlen kérésben írja az alapadatot, a leírásokat, a címkéket, a helyiségeket, a közműveket és a meghatalmazásokat.
Mentés lépései
- Nyelvenkénti cím, rövid leírás, leírás (
property_description[language_id]); anameoszlop az alapnyelv címe, ennek híján az első kitöltött nyelvé; üresen hiba atitle-<alapnyelv>mezőn. - Koordináta: csak érvényes pár (|szélesség| ≤ 90, |hosszúság| ≤ 180), vessző pontra cserélve, 7 tizedesre kerekítve; üres = nincs pont.
- Client (üzemeltető) tartalmi jog-ellenőrzése.
- Meghatalmazás-sorok ellenőrzése (ha
mandate_form = 1). - Adatlap normalizálás (
Dlbtproperty::normalize()), helyiségek (normalizeRooms()) és területszámítás (computeAreas()). - Társasház: a
parent_property_idnem mutathat önmagára (akkor 0). - Címkék: a chipek közül az első aktív, motor-kezelővel bíró címke, ennek híján az első aktív címke kerül a régi
label_idoszlopba. - Új rekordnál
addProperty()(a válaszbanproperty_id), meglévőnéleditProperty(); áruház-hozzárendelés (sync_stores = 1)savePropertyStores(). saveDescriptions(), címkék (label::setObjectLabels('property', …)),saveRooms(),saveMeters(),saveMandates()(a válaszbanmandate_ids).- Visszaolvasás (
getProperty()); koordinátánál a pont a közös geo-tárba kerül (dlbtgeo->ingest(Dlbtproperty::geoSpec(...)), forrás-típusproperty, egy ingatlan = egy pont); hibánál a mentés sikeres marad,geo_warning-gal. - Siker: „Success: Property saved.”; nincs redirect, a form passzív figyelője a rejtett
property_id-ba írja az új azonosítót.
Ha az adatlap-oszlopok még hiányoznak, a mentés az alapadatot írja, és figyelmeztetésben kimondja, mi nem mentődött; a formon sárga doboz mutatja a migrációs napló sorát és a lánc akadályát, system/update + install joggal „Retry migrations” gombbal (system/update.retry).
Adatmodell
A táblanevek a telepítés saját előtagjával állnak az adatbázisban.
| Tábla | Fő mezők |
|---|---|
property | name, identifier, address, owner_company_id, match_value, label_id, note, status, created_by; cím: operator_company_id, country_code, postcode, city, street_name, street_type, house_number, building, staircase, floor, door, lot_number; adatlap: property_type (az első típus), property_types, property_uses, területek, latitude, longitude, details (JSON), cover_doc_id, parent_property_id |
property_description | (property_id, language_id): title, short_description, description |
property_to_store | property_id, store_id |
Idegen táblák, amelyekre hivatkozik (nem ír): company, doc_link (object_type = property), label_link, contract (törlés-védelem), a geo-tár.
Tulajdonos modell
admin/model/masterdata/property.php. Más modulok által használt publikus metódusok: getProperty(), getProperties(), getActiveProperties() (szerződés), getOperatedProperties() és hasOperatorColumn() (IFA), getValidMandate(), getMandatedPropertyIds(), mandateCovers() (szerződés), getGeocodeCandidates(), setCoordinates() (geo térkép), countRoomsByType() (helyiségtípus-törzs törlésvédelme), getPropertyStores(), savePropertyStores(). Catalog modell: getPropertyForView() (aktív + az aktuális áruházhoz rendelt), getDescription(), getRooms(), getPropertyForApi(), getPropertyChanges(). A Dlbtproperty könyvtár SQL nélküli mezőregiszter és számoló.
Segéd-végpontok
labelsearch (legfeljebb 20 aktív címke), labelcreate (dlbtlabel->ensureLabel), companies (közös cég-választó), companysearch (legalább 2 karakter, 20 aktív cég; tartalmi jog szerint nem szűr — bármely aktív cég lehet tulajdonos). Térkép a formon: Google Maps a „maps” típusú API-kulccsal; a „From address” a tagolt címből geokódol.