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

  1. Nyelvenkénti cím, rövid leírás, leírás (property_description[language_id]); a name oszlop az alapnyelv címe, ennek híján az első kitöltött nyelvé; üresen hiba a title-<alapnyelv> mezőn.
  2. 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.
  3. Client (üzemeltető) tartalmi jog-ellenőrzése.
  4. Meghatalmazás-sorok ellenőrzése (ha mandate_form = 1).
  5. Adatlap normalizálás (Dlbtproperty::normalize()), helyiségek (normalizeRooms()) és területszámítás (computeAreas()).
  6. Társasház: a parent_property_id nem mutathat önmagára (akkor 0).
  7. 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_id oszlopba.
  8. Új rekordnál addProperty() (a válaszban property_id), meglévőnél editProperty(); áruház-hozzárendelés (sync_stores = 1) savePropertyStores().
  9. saveDescriptions(), címkék (label::setObjectLabels('property', …)), saveRooms(), saveMeters(), saveMandates() (a válaszban mandate_ids).
  10. 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ípus property, egy ingatlan = egy pont); hibánál a mentés sikeres marad, geo_warning-gal.
  11. 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áblaFő mezők
propertyname, 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_storeproperty_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.

Kapcsolódó témák: ingatlan térkép jogosultság