setTable('propiedad'); } public function create(?array $data = null): Model\Venta\Propiedad { $map = (new Implement\Repository\MapperParser()) ->register('unidad_principal', (new Implement\Repository\Mapper()) ->setProperty('unidades') ->setDefault([]) ->setFunction(function($data) { return [$this->unidadService->getById($data['unidad_principal'])]; }) ) ->register('estado', new Implement\Repository\Mapper\Boolean('estado')); return $this->parseData(new Model\Venta\Propiedad(), $data, $map); } public function load(array $data_row): Define\Model { $propiedad = parent::load($data_row); if (isset($propiedad->id)) { $propiedad->unidades = $this->unidadService->getByPropiedad($propiedad->id); } return $propiedad; } public function save(Define\Model $model): Model\Venta\Propiedad { $model->id = $this->saveNew( ['unidad_principal', 'estacionamientos', 'bodegas', 'estado'], [$model->principal()?->id, implode(',', array_map(function(Model\Venta\Unidad $unidad) {return $unidad->id;}, $model->estacionamientos())), implode(',', array_map(function(Model\Venta\Unidad $unidad) {return $unidad->id;}, $model->bodegas())), 1] ); return $model; } public function edit(Define\Model $model, array $new_data): Model\Venta\Propiedad { return $this->update($model, ['unidad_principal', 'estacionamientos', 'bodegas', 'estado'], $new_data); } public function fetchVigenteByUnidad(int $unidad_id): Model\Venta\Propiedad { $query = "SELECT * FROM `{$this->getTable()}` WHERE `unidad_principal` = ?"; return $this->fetchOne($query, [$unidad_id]); } }