setTable('sociedades'); } public function create(?array $data = null): Model\Sociedad { $map = (new Implement\Repository\MapperParser(['rut', 'digito', 'nombre'])) ->register('razon', (new Implement\Repository\Mapper()) ->setProperty('razonSocial')) ->register('tipo_sociedad_id', (new Implement\Repository\Mapper()) ->setProperty('tipoSociedad') ->setFunction(function ($data) { return $this->tipoSociedadRepository->fetchById($data['tipo_sociedad_id']); }) ) ->register('contacto_rut', (new Implement\Repository\Mapper()) ->setProperty('contacto') ->setFunction(function ($data) { return $this->personaService->getById($data['contacto_rut']); })); return $this->parseData(new Model\Sociedad(), $data, $map); } public function save(Define\Model $model): Model\Sociedad { $this->saveNew(['rut', 'digito', 'nombre', 'razon', 'tipo_sociedad_id', 'contacto_rut'], [$model->rut, $model->digito, $model->nombre, $model->razonSocial, $model->tipoSociedad->id, $model->contacto->rut]); return $model; } public function edit(Define\Model $model, array $new_data): Model\Sociedad { return $this->update($model, ['digito', 'nombre', 'razon', 'tipo_sociedad_id', 'contacto_rut'], $new_data); } protected function getKey(): string { return 'rut'; } }