additionsl property at list

This commit is contained in:
Kavalar 2024-11-28 16:25:51 +03:00
parent 921569b950
commit e7a20d9b97
4 changed files with 56 additions and 18 deletions

View File

@ -8,6 +8,7 @@ use itguild\forms\builders\TextInputBuilder;
use itguild\forms\inputs\Select; use itguild\forms\inputs\Select;
use kernel\app_modules\tag\models\Tag; use kernel\app_modules\tag\models\Tag;
use kernel\app_modules\tag\models\TagEntity; use kernel\app_modules\tag\models\TagEntity;
use kernel\app_modules\tag\services\TagEntityService;
use kernel\helpers\Debug; use kernel\helpers\Debug;
use kernel\helpers\Slug; use kernel\helpers\Slug;
use kernel\Module; use kernel\Module;
@ -61,14 +62,8 @@ class TagModule extends Module
public function formInputs(string $entity, Model $model = null): void public function formInputs(string $entity, Model $model = null): void
{ {
if (isset($model)) { if (isset($model->id)) {
$tags= TagEntity::where("entity_id", $model->id)->get()->toArray(); $value = TagEntityService::getTagsByEntity($entity, $model->id);
$value = [];
foreach ($tags as $tag) {
$val = Tag::where('id', $tag['tag_id'])->first()->toArray();
$value[] = $val['label'];
}
} }
$input = SelectBuilder::build("tag[]", [ $input = SelectBuilder::build("tag[]", [
'class' => 'form-control', 'class' => 'form-control',
@ -107,6 +102,17 @@ class TagModule extends Module
return substr($tagsStr, 0, -2); return substr($tagsStr, 0, -2);
} }
public function getItem(string $entity, string $entity_id): string
{
$tags = TagEntity::where("entity", $entity)->where("entity_id", $entity_id)->get();
$tagsStr = "";
foreach ($tags as $tag) {
$tagsStr .= $tag->tag->label . ", ";
}
return substr($tagsStr, 0, -2);
}
public function deleteItems(string $entity, Model $model): void public function deleteItems(string $entity, Model $model): void
{ {
TagEntity::where("entity", $entity)->where("entity_id", $model->id)->delete(); TagEntity::where("entity", $entity)->where("entity_id", $model->id)->delete();

View File

@ -78,7 +78,7 @@ class EntityRelation
$entity_relations_info = Option::where("key", "entity_relations")->first(); $entity_relations_info = Option::where("key", "entity_relations")->first();
if ($entity_relations_info) { if ($entity_relations_info) {
$entity_relations = json_decode($entity_relations_info->value, true); $entity_relations = json_decode($entity_relations_info->value, true);
foreach ($entity_relations as $entity => $entity_relation){ foreach ($entity_relations as $entity => $entity_relation) {
if (in_array($property, $entity_relation)) { if (in_array($property, $entity_relation)) {
$index = array_search($property, $entity_relation); $index = array_search($property, $entity_relation);
unset($entity_relations[$entity][$index]); unset($entity_relations[$entity][$index]);
@ -113,7 +113,7 @@ class EntityRelation
{ {
$entityRelations = $this->getEntitiesRelations(); $entityRelations = $this->getEntitiesRelations();
if ($entityRelations) { if ($entityRelations) {
if (isset($entityRelations[$slug])){ if (isset($entityRelations[$slug])) {
return $entityRelations[$slug]; return $entityRelations[$slug];
} }
} }
@ -161,8 +161,8 @@ class EntityRelation
public function renderEntityAdditionalPropertyFormBySlug(string $entity, Model $model = null): void public function renderEntityAdditionalPropertyFormBySlug(string $entity, Model $model = null): void
{ {
$relations = $this->getEntityRelationsBySlug($entity); $relations = $this->getEntityRelationsBySlug($entity);
if ($relations){ if ($relations) {
foreach ($relations as $relation){ foreach ($relations as $relation) {
$this->renderFormInputsBySlug($entity, $relation, $model); $this->renderFormInputsBySlug($entity, $relation, $model);
} }
} }
@ -179,8 +179,8 @@ class EntityRelation
public function saveEntityRelation(string $entity, Model $model, Request $request): void public function saveEntityRelation(string $entity, Model $model, Request $request): void
{ {
$relations = $this->getEntityRelationsBySlug($entity); $relations = $this->getEntityRelationsBySlug($entity);
if ($relations){ if ($relations) {
foreach ($relations as $relation){ foreach ($relations as $relation) {
$this->saveEntityRelationBySlug($relation, $entity, $model, $request); $this->saveEntityRelationBySlug($relation, $entity, $model, $request);
} }
} }
@ -189,9 +189,9 @@ class EntityRelation
public function getEntityAdditionalProperty(string $entity, Model $model): array public function getEntityAdditionalProperty(string $entity, Model $model): array
{ {
$relations = $this->getEntityRelationsBySlug($entity); $relations = $this->getEntityRelationsBySlug($entity);
if ($relations){ if ($relations) {
$relationsArr = []; $relationsArr = [];
foreach ($relations as $relation){ foreach ($relations as $relation) {
$moduleClass = $this->getAdditionalPropertyClassBySlug($relation); $moduleClass = $this->getAdditionalPropertyClassBySlug($relation);
if ($moduleClass and method_exists($moduleClass, "getItems")) { if ($moduleClass and method_exists($moduleClass, "getItems")) {
$relationsArr[$relation] = $moduleClass->getItems($entity, $model); $relationsArr[$relation] = $moduleClass->getItems($entity, $model);
@ -204,6 +204,16 @@ class EntityRelation
return []; return [];
} }
public function getAdditionalPropertyByEntityId(string $entity, string $entity_id, string $additionalPropertySlug): string
{
$moduleClass = $this->getAdditionalPropertyClassBySlug($additionalPropertySlug);
if ($moduleClass and method_exists($moduleClass, "getItem")) {
return $moduleClass->getItem($entity, $entity_id);
}
return "";
}
public function deleteEntityRelationBySlug(string $slug, string $entity, Model $model): void public function deleteEntityRelationBySlug(string $slug, string $entity, Model $model): void
{ {
$moduleClass = $this->getAdditionalPropertyClassBySlug($slug); $moduleClass = $this->getAdditionalPropertyClassBySlug($slug);
@ -215,8 +225,8 @@ class EntityRelation
public function deleteEntityRelation(string $entity, Model $model): void public function deleteEntityRelation(string $entity, Model $model): void
{ {
$relations = $this->getEntityRelationsBySlug($entity); $relations = $this->getEntityRelationsBySlug($entity);
if ($relations){ if ($relations) {
foreach ($relations as $relation){ foreach ($relations as $relation) {
$this->deleteEntityRelationBySlug($relation, $entity, $model); $this->deleteEntityRelationBySlug($relation, $entity, $model);
} }
} }

View File

@ -5,6 +5,7 @@ namespace kernel\app_modules\tag\services;
use kernel\app_modules\tag\models\Tag; use kernel\app_modules\tag\models\Tag;
use kernel\app_modules\tag\models\TagEntity; use kernel\app_modules\tag\models\TagEntity;
use kernel\FormModel; use kernel\FormModel;
use kernel\helpers\Debug;
use kernel\helpers\Slug; use kernel\helpers\Slug;
class TagEntityService class TagEntityService
@ -36,4 +37,15 @@ class TagEntityService
return false; return false;
} }
public static function getTagsByEntity(string $entity, int $entity_id): array
{
$tags= TagEntity::where("entity_id", $entity_id)->where("entity", $entity)->get();
$value = [];
foreach ($tags as $tag) {
$value[$tag->id] = $tag->tag->label;
}
return $value;
}
} }

View File

@ -24,6 +24,16 @@ $table = new ListEloquentTable(new EloquentDataProvider(Post::class, [
'params' => ["class" => "table table-bordered", "border" => "2"], 'params' => ["class" => "table table-bordered", "border" => "2"],
'baseUrl' => "/admin/post" 'baseUrl' => "/admin/post"
])); ]));
$entityRelation = new \kernel\EntityRelation();
$additionals = $entityRelation->getEntityRelationsBySlug("post");
foreach ($additionals as $additional) {
$table->addColumn($additional, $additional, function ($id) use ($entityRelation, $additional) {
return $entityRelation->getAdditionalPropertyByEntityId("post", $id, $additional);
});
}
$table->columns([ $table->columns([
'created_at' => function ($data) { 'created_at' => function ($data) {
if (!$data){ if (!$data){