From 0f83f0399bd9a7fc06809c331c9d8e2e7115e2e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Fri, 17 Oct 2025 01:15:34 +0300 Subject: [PATCH] =?UTF-8?q?QuestionTag=20ve=20Seeder=20d=C3=BCzenlemesi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Seeds/HostData.json | 42 +++--- .../Seeds/ListFormsSeeder.cs | 54 ++++---- .../PlatformConsts.cs | 4 +- .../Kurs.Platform.Domain/Data/SeedConsts.cs | 2 +- .../Tenant/{Tag.cs => QuestionTag.cs} | 2 +- .../EntityFrameworkCore/PlatformDbContext.cs | 6 +- ....cs => 20251016215302_Initial.Designer.cs} | 126 +++++++++--------- ...5_Initial.cs => 20251016215302_Initial.cs} | 6 +- .../PlatformDbContextModelSnapshot.cs | 124 ++++++++--------- .../Tenants/Seeds/TenantData.json | 6 +- .../Tenants/TenantDataSeeder.cs | 27 +--- .../Tenants/TenantSeederDto.cs | 4 +- ui/src/shared/useListFormColumns.ts | 22 ++- ui/src/views/form/useGridData.tsx | 1 + ui/src/views/list/Grid.tsx | 1 + ui/src/views/list/Pivot.tsx | 5 +- .../shared/DialogContext/DialogProvider.tsx | 1 + .../DialogContext/DialogShowComponent.tsx | 21 ++- 18 files changed, 221 insertions(+), 233 deletions(-) rename api/src/Kurs.Platform.Domain/Entities/Tenant/{Tag.cs => QuestionTag.cs} (87%) rename api/src/Kurs.Platform.EntityFrameworkCore/Migrations/{20251016203825_Initial.Designer.cs => 20251016215302_Initial.Designer.cs} (99%) rename api/src/Kurs.Platform.EntityFrameworkCore/Migrations/{20251016203825_Initial.cs => 20251016215302_Initial.cs} (99%) diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/HostData.json b/api/src/Kurs.Platform.DbMigrator/Seeds/HostData.json index 48d98166..ebea6977 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/HostData.json +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/HostData.json @@ -7881,9 +7881,9 @@ }, { "resourceName": "Platform", - "key": "App.Definitions.Tag", - "tr": "Etiketler", - "en": "Tags" + "key": "App.Definitions.QuestionTag", + "tr": "Soru Etiketleri", + "en": "Question Tags" }, { "resourceName": "Platform", @@ -14612,12 +14612,12 @@ }, { "ParentCode": "App.Coordinator.Definitions", - "Code": "App.Definitions.Tag", - "DisplayName": "App.Definitions.Tag", + "Code": "App.Definitions.QuestionTag", + "DisplayName": "App.Definitions.QuestionTag", "Order": 10, - "Url": "/admin/list/list-tag", + "Url": "/admin/list/list-questiontag", "Icon": "FcTags", - "RequiredPermissionName": "App.Definitions.Tag", + "RequiredPermissionName": "App.Definitions.QuestionTag", "IsDisabled": false }, { @@ -21918,17 +21918,17 @@ }, { "GroupName": "App.Coordinator", - "Name": "App.Definitions.Tag", + "Name": "App.Definitions.QuestionTag", "ParentName": null, - "DisplayName": "App.Definitions.Tag", + "DisplayName": "App.Definitions.QuestionTag", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Kurs" }, { "GroupName": "App.Coordinator", - "Name": "App.Definitions.Tag.Create", - "ParentName": "App.Definitions.Tag", + "Name": "App.Definitions.QuestionTag.Create", + "ParentName": "App.Definitions.QuestionTag", "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, @@ -21936,8 +21936,8 @@ }, { "GroupName": "App.Coordinator", - "Name": "App.Definitions.Tag.Update", - "ParentName": "App.Definitions.Tag", + "Name": "App.Definitions.QuestionTag.Update", + "ParentName": "App.Definitions.QuestionTag", "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, @@ -21945,8 +21945,8 @@ }, { "GroupName": "App.Coordinator", - "Name": "App.Definitions.Tag.Delete", - "ParentName": "App.Definitions.Tag", + "Name": "App.Definitions.QuestionTag.Delete", + "ParentName": "App.Definitions.QuestionTag", "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, @@ -21954,8 +21954,8 @@ }, { "GroupName": "App.Coordinator", - "Name": "App.Definitions.Tag.Export", - "ParentName": "App.Definitions.Tag", + "Name": "App.Definitions.QuestionTag.Export", + "ParentName": "App.Definitions.QuestionTag", "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, @@ -21963,8 +21963,8 @@ }, { "GroupName": "App.Coordinator", - "Name": "App.Definitions.Tag.Import", - "ParentName": "App.Definitions.Tag", + "Name": "App.Definitions.QuestionTag.Import", + "ParentName": "App.Definitions.QuestionTag", "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, @@ -21972,8 +21972,8 @@ }, { "GroupName": "App.Coordinator", - "Name": "App.Definitions.Tag.Activity", - "ParentName": "App.Definitions.Tag", + "Name": "App.Definitions.QuestionTag.Activity", + "ParentName": "App.Definitions.QuestionTag", "DisplayName": "Activity", "IsEnabled": true, "MultiTenancySide": 3, diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs b/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs index 58025bcd..a21e4f64 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs @@ -30216,8 +30216,8 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency #endregion //Classroom - #region Tag - if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == ListFormCodes.Lists.Tag)) + #region QuestionTag + if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == ListFormCodes.Lists.QuestionTag)) { var listFormTag = await _listFormRepository.InsertAsync( new ListForm() @@ -30234,16 +30234,16 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency CardLayoutColumn = 3 }), CultureName = LanguageCodes.En, - ListFormCode = ListFormCodes.Lists.Tag, - Name = AppCodes.Definitions.Tag, - Title = AppCodes.Definitions.Tag, + ListFormCode = ListFormCodes.Lists.QuestionTag, + Name = AppCodes.Definitions.QuestionTag, + Title = AppCodes.Definitions.QuestionTag, DataSourceCode = SeedConsts.DataSources.DefaultCode, IsTenant = true, IsBranch = false, IsOrganizationUnit = false, - Description = AppCodes.Definitions.Tag, + Description = AppCodes.Definitions.QuestionTag, SelectCommandType = SelectCommandTypeEnum.Table, - SelectCommand = SelectCommandByTableName("Tag", Prefix.DbTableCoordinator), + SelectCommand = SelectCommandByTableName("QuestionTag", Prefix.DbTableCoordinator), KeyFieldName = "Id", KeyFieldDbSourceType = DbType.Guid, DefaultFilter = "\"IsDeleted\" = 'false'", @@ -30268,15 +30268,15 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency }), PermissionJson = JsonSerializer.Serialize(new PermissionCrudDto { - C = AppCodes.Definitions.Tag + ".Create", - R = AppCodes.Definitions.Tag, - U = AppCodes.Definitions.Tag + ".Update", - D = AppCodes.Definitions.Tag + ".Delete", - E = AppCodes.Definitions.Tag + ".Export", - I = AppCodes.Definitions.Tag + ".Import", - A = AppCodes.Definitions.Tag + ".Activity", + C = AppCodes.Definitions.QuestionTag + ".Create", + R = AppCodes.Definitions.QuestionTag, + U = AppCodes.Definitions.QuestionTag + ".Update", + D = AppCodes.Definitions.QuestionTag + ".Delete", + E = AppCodes.Definitions.QuestionTag + ".Export", + I = AppCodes.Definitions.QuestionTag + ".Import", + A = AppCodes.Definitions.QuestionTag + ".Activity", }), - DeleteCommand = $"UPDATE \"{SelectCommandByTableName("Tag", Prefix.DbTableCoordinator)}\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\"=@Id", + DeleteCommand = $"UPDATE \"{SelectCommandByTableName("QuestionTag", Prefix.DbTableCoordinator)}\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\"=@Id", DeleteFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { new() { FieldName = "DeleterId", @@ -30368,9 +30368,9 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency }), PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto { - C = AppCodes.Definitions.Tag + ".Create", - R = AppCodes.Definitions.Tag, - U = AppCodes.Definitions.Tag + ".Update", + C = AppCodes.Definitions.QuestionTag + ".Create", + R = AppCodes.Definitions.QuestionTag, + U = AppCodes.Definitions.QuestionTag + ".Update", E = true, I = true, Deny = false @@ -30404,9 +30404,9 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency }), PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto { - C = AppCodes.Definitions.Tag + ".Create", - R = AppCodes.Definitions.Tag, - U = AppCodes.Definitions.Tag + ".Update", + C = AppCodes.Definitions.QuestionTag + ".Create", + R = AppCodes.Definitions.QuestionTag, + U = AppCodes.Definitions.QuestionTag + ".Update", E = true, I = true, Deny = false @@ -30435,9 +30435,9 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency }), PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto { - C = AppCodes.Definitions.Tag + ".Create", - R = AppCodes.Definitions.Tag, - U = AppCodes.Definitions.Tag + ".Update", + C = AppCodes.Definitions.QuestionTag + ".Create", + R = AppCodes.Definitions.QuestionTag, + U = AppCodes.Definitions.QuestionTag + ".Update", E = true, I = true, Deny = false @@ -30466,9 +30466,9 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency }), PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto { - C = AppCodes.Definitions.Tag + ".Create", - R = AppCodes.Definitions.Tag, - U = AppCodes.Definitions.Tag + ".Update", + C = AppCodes.Definitions.QuestionTag + ".Create", + R = AppCodes.Definitions.QuestionTag, + U = AppCodes.Definitions.QuestionTag + ".Update", E = true, I = true, Deny = false diff --git a/api/src/Kurs.Platform.Domain.Shared/PlatformConsts.cs b/api/src/Kurs.Platform.Domain.Shared/PlatformConsts.cs index 04d38387..43f5153e 100644 --- a/api/src/Kurs.Platform.Domain.Shared/PlatformConsts.cs +++ b/api/src/Kurs.Platform.Domain.Shared/PlatformConsts.cs @@ -162,7 +162,7 @@ public static class PlatformConsts $"SELECT " + $"\"Id\" AS \"Key\", " + $"\"Name\" AS \"Name\" " + - $"FROM \"{SelectCommandByTableName("Tag", Prefix.DbTableCoordinator)}\" " + + $"FROM \"{SelectCommandByTableName("QuestionTag", Prefix.DbTableCoordinator)}\" " + $"WHERE " + $"\"IsDeleted\" = 'false' "; } @@ -612,7 +612,7 @@ public static class PlatformConsts public const string ClassType = "list-classtype"; public const string Class = "list-class"; public const string Level = "list-level"; - public const string Tag = "list-tag"; + public const string QuestionTag = "list-questiontag"; public const string QuestionPool = "list-questionpool"; public const string Question = "list-question"; } diff --git a/api/src/Kurs.Platform.Domain/Data/SeedConsts.cs b/api/src/Kurs.Platform.Domain/Data/SeedConsts.cs index 2447c126..268daf60 100644 --- a/api/src/Kurs.Platform.Domain/Data/SeedConsts.cs +++ b/api/src/Kurs.Platform.Domain/Data/SeedConsts.cs @@ -438,7 +438,7 @@ public static class SeedConsts public const string ClassType = Default + ".ClassType"; public const string Class = Default + ".Class"; public const string Level = Default + ".Level"; - public const string Tag = Default + ".Tag"; + public const string QuestionTag = Default + ".QuestionTag"; public const string QuestionPool = Default + ".QuestionPool"; public const string Question = Default + ".Question"; } diff --git a/api/src/Kurs.Platform.Domain/Entities/Tenant/Tag.cs b/api/src/Kurs.Platform.Domain/Entities/Tenant/QuestionTag.cs similarity index 87% rename from api/src/Kurs.Platform.Domain/Entities/Tenant/Tag.cs rename to api/src/Kurs.Platform.Domain/Entities/Tenant/QuestionTag.cs index e15a4ad6..7d96eed2 100644 --- a/api/src/Kurs.Platform.Domain/Entities/Tenant/Tag.cs +++ b/api/src/Kurs.Platform.Domain/Entities/Tenant/QuestionTag.cs @@ -4,7 +4,7 @@ using Volo.Abp.MultiTenancy; namespace Kurs.Platform.Entities; -public class Tag : FullAuditedEntity, IMultiTenant +public class QuestionTag : FullAuditedEntity, IMultiTenant { public Guid? TenantId; diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs b/api/src/Kurs.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs index 4d400187..aa23f298 100644 --- a/api/src/Kurs.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs +++ b/api/src/Kurs.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs @@ -140,7 +140,7 @@ public class PlatformDbContext : public DbSet AttendanceRecords { get; set; } public DbSet ChatMessages { get; set; } - public DbSet Tags { get; set; } + public DbSet Tags { get; set; } public DbSet QuestionPools { get; set; } public DbSet Questions { get; set; } public DbSet QuestionOptions { get; set; } @@ -1567,9 +1567,9 @@ public class PlatformDbContext : b.HasIndex(x => x.Timestamp); }); - builder.Entity(b => + builder.Entity(b => { - b.ToTable(Prefix.DbTableCoordinator + nameof(Tag), Prefix.DbSchema); + b.ToTable(Prefix.DbTableCoordinator + nameof(QuestionTag), Prefix.DbSchema); b.ConfigureByConvention(); b.Property(x => x.Name).IsRequired().HasMaxLength(100); diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016203825_Initial.Designer.cs b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016215302_Initial.Designer.cs similarity index 99% rename from api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016203825_Initial.Designer.cs rename to api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016215302_Initial.Designer.cs index 5a9b53a9..e1ea814a 100644 --- a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016203825_Initial.Designer.cs +++ b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016215302_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace Kurs.Platform.Migrations { [DbContext(typeof(PlatformDbContext))] - [Migration("20251016203825_Initial")] + [Migration("20251016215302_Initial")] partial class Initial { /// @@ -5314,6 +5314,68 @@ namespace Kurs.Platform.Migrations b.ToTable("CQuestionPool", (string)null); }); + modelBuilder.Entity("Kurs.Platform.Entities.QuestionTag", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Color") + .HasMaxLength(7) + .HasColumnType("nvarchar(7)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UsageCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + b.HasKey("Id"); + + b.ToTable("CQuestionTag", (string)null); + }); + modelBuilder.Entity("Kurs.Platform.Entities.RegistrationMethod", b => { b.Property("Id") @@ -6323,68 +6385,6 @@ namespace Kurs.Platform.Migrations b.ToTable("DSource", (string)null); }); - modelBuilder.Entity("Kurs.Platform.Entities.Tag", b => - { - b.Property("Id") - .HasColumnType("uniqueidentifier"); - - b.Property("Color") - .HasMaxLength(7) - .HasColumnType("nvarchar(7)"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(500) - .HasColumnType("nvarchar(500)"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("UsageCount") - .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasDefaultValue(0); - - b.HasKey("Id"); - - b.ToTable("CTag", (string)null); - }); - modelBuilder.Entity("Kurs.Platform.Entities.Uom", b => { b.Property("Id") diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016203825_Initial.cs b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016215302_Initial.cs similarity index 99% rename from api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016203825_Initial.cs rename to api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016215302_Initial.cs index 918b334d..d927cfea 100644 --- a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016203825_Initial.cs +++ b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251016215302_Initial.cs @@ -490,7 +490,7 @@ namespace Kurs.Platform.Migrations }); migrationBuilder.CreateTable( - name: "CTag", + name: "CQuestionTag", columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), @@ -509,7 +509,7 @@ namespace Kurs.Platform.Migrations }, constraints: table => { - table.PrimaryKey("PK_CTag", x => x.Id); + table.PrimaryKey("PK_CQuestionTag", x => x.Id); }); migrationBuilder.CreateTable( @@ -4275,7 +4275,7 @@ namespace Kurs.Platform.Migrations name: "CQuestionOption"); migrationBuilder.DropTable( - name: "CTag"); + name: "CQuestionTag"); migrationBuilder.DropTable( name: "DBankAccount"); diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs index 097c725f..30fdff96 100644 --- a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs +++ b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs @@ -5311,6 +5311,68 @@ namespace Kurs.Platform.Migrations b.ToTable("CQuestionPool", (string)null); }); + modelBuilder.Entity("Kurs.Platform.Entities.QuestionTag", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Color") + .HasMaxLength(7) + .HasColumnType("nvarchar(7)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UsageCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + b.HasKey("Id"); + + b.ToTable("CQuestionTag", (string)null); + }); + modelBuilder.Entity("Kurs.Platform.Entities.RegistrationMethod", b => { b.Property("Id") @@ -6320,68 +6382,6 @@ namespace Kurs.Platform.Migrations b.ToTable("DSource", (string)null); }); - modelBuilder.Entity("Kurs.Platform.Entities.Tag", b => - { - b.Property("Id") - .HasColumnType("uniqueidentifier"); - - b.Property("Color") - .HasMaxLength(7) - .HasColumnType("nvarchar(7)"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(500) - .HasColumnType("nvarchar(500)"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("UsageCount") - .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasDefaultValue(0); - - b.HasKey("Id"); - - b.ToTable("CTag", (string)null); - }); - modelBuilder.Entity("Kurs.Platform.Entities.Uom", b => { b.Property("Id") diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json b/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json index b8e556e9..6395169b 100644 --- a/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json +++ b/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json @@ -1807,7 +1807,7 @@ "settingsJson": "{\"AllowHandRaise\":true,\"AllowStudentChat\":true,\"AllowPrivateMessages\":true,\"AllowStudentScreenShare\":true,\"DefaultMicrophoneState\":\"muted\",\"DefaultCameraState\":\"off\",\"DefaultLayout\":\"grid\",\"AutoMuteNewParticipants\":true}" } ], - "Tags": [ + "QuestionTags": [ { "Name": "Grammar", "Description": "Grammar related questions", @@ -1865,7 +1865,7 @@ "Content": "Select the appropriate tense form for the given context.", "MediaType": "image", "MediaUrl": "", - "CorrectAnswer": "opt2", + "CorrectAnswer": "", "Difficulty": "easy", "TimeLimit": 0, "Explanation": "" @@ -1878,7 +1878,7 @@ "Content": "Fill in the blank: \"I saw _____ elephant at the zoo yesterday.\"", "MediaType": "image", "MediaUrl": "", - "CorrectAnswer": "an", + "CorrectAnswer": "", "Difficulty": "medium", "TimeLimit": 0, "Explanation": "" diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs b/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs index 677c42d2..20e401b2 100644 --- a/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs +++ b/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs @@ -54,7 +54,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency private readonly IRepository _classCancellationReasonRepository; private readonly IRepository _workHourRepository; private readonly IRepository _classroomRepository; - private readonly IRepository _tagRepository; + private readonly IRepository _tagRepository; private readonly IRepository _questionPoolRepository; private readonly IRepository _questionRepository; @@ -96,7 +96,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency IRepository interestingRepository, IRepository programRepository, IRepository forumCategoryRepository, - IRepository tagRepository, + IRepository tagRepository, IRepository questionPoolRepository, IRepository questionRepository ) @@ -737,18 +737,18 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency } } - foreach (var item in items.Tags) + foreach (var item in items.QuestionTags) { var exists = await _tagRepository.AnyAsync(x => x.Name == item.Name); if (!exists) { - await _tagRepository.InsertAsync(new Tag + await _tagRepository.InsertAsync(new QuestionTag { Name = item.Name, Description = item.Description, Color = item.Color - }); + }, autoSave: true); } } @@ -765,22 +765,9 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency var tagIds = new List(); foreach (var tagName in tagNames) { - var tagEntity = items.Tags.FirstOrDefault(t => - string.Equals(t.Name, tagName, StringComparison.OrdinalIgnoreCase)); - - if (tagEntity != null) + var existingTag = await _tagRepository.FirstOrDefaultAsync(x => x.Name == tagName); + if (existingTag != null) { - var existingTag = await _tagRepository.FirstOrDefaultAsync(x => x.Name == tagEntity.Name); - if (existingTag == null) - { - existingTag = await _tagRepository.InsertAsync(new Tag - { - Name = tagEntity.Name, - Description = tagEntity.Description, - Color = tagEntity.Color - }); - } - tagIds.Add(existingTag.Id); } } diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs b/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs index 442f5a46..5fbc82d2 100644 --- a/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs +++ b/api/src/Kurs.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs @@ -26,7 +26,7 @@ public class TenantSeederDto public List BlogPosts { get; set; } public List Contacts { get; set; } public List Classrooms { get; set; } - public List Tags { get; set; } + public List QuestionTags { get; set; } public List QuestionPools { get; set; } public List Questions { get; set; } @@ -348,7 +348,7 @@ public class ProgramSeedDto public string Status { get; set; } } -public class TagSeedDto +public class QuestionTagSeedDto { public string Name { get; set; } public string Description { get; set; } diff --git a/ui/src/shared/useListFormColumns.ts b/ui/src/shared/useListFormColumns.ts index 589c07d9..d86f84ae 100644 --- a/ui/src/shared/useListFormColumns.ts +++ b/ui/src/shared/useListFormColumns.ts @@ -86,10 +86,12 @@ const useListFormColumns = ({ gridDto, listFormCode, isSubForm, + gridRef, }: { gridDto?: GridDto listFormCode: string isSubForm?: boolean + gridRef?: any }) => { const dialog: any = useDialogContext() const { translate } = useLocalization() @@ -289,24 +291,10 @@ const useListFormColumns = ({ if (hasUpdate) { column.buttons.push('edit') - // column.buttons.push({ - // icon: 'edit', - // hint: translate('::Edit'), - // name: 'edit', - // text: translate('::Edit'), - // cssClass: 'big-button', - // }) } if (hasDelete) { column.buttons.push('delete') - // column.buttons.push({ - // icon: 'trash', - // hint: translate('::Delete'), - // name: 'delete', - // text: translate('::Delete'), - // cssClass: 'big-button', - // }) } gridDto.gridOptions.commandColumnDto.forEach((action) => { @@ -340,6 +328,12 @@ const useListFormColumns = ({ dialog.setConfig({ component: action.dialogName, props: dynamicMap, + onClose: () => { + // Dialog kapandığında grid'i yenile + if (gridRef?.current?.instance) { + gridRef.current.instance.refresh() + } + }, }) } } else if (action.onClick) { diff --git a/ui/src/views/form/useGridData.tsx b/ui/src/views/form/useGridData.tsx index a33fc248..2e264358 100644 --- a/ui/src/views/form/useGridData.tsx +++ b/ui/src/views/form/useGridData.tsx @@ -48,6 +48,7 @@ const useGridData = (props: { gridDto, listFormCode, isSubForm, + gridRef: undefined, }) const { createSelectDataSource } = useListFormCustomDataSource({}) const { getLookupDataSource } = useLookupDataSource({ listFormCode, isSubForm }) diff --git a/ui/src/views/list/Grid.tsx b/ui/src/views/list/Grid.tsx index 9fe4c7d4..bb47966c 100644 --- a/ui/src/views/list/Grid.tsx +++ b/ui/src/views/list/Grid.tsx @@ -147,6 +147,7 @@ const Grid = (props: GridProps) => { gridDto, listFormCode, isSubForm, + gridRef, }) function extractSearchParamsFields(filter: any): [string, string, any][] { diff --git a/ui/src/views/list/Pivot.tsx b/ui/src/views/list/Pivot.tsx index 6b8b8840..cf12518f 100644 --- a/ui/src/views/list/Pivot.tsx +++ b/ui/src/views/list/Pivot.tsx @@ -36,11 +36,7 @@ import WidgetGroup from '@/components/common/WidgetGroup' import { Button } from '@/components/ui' import { FaCog, - FaInfoCircle, - FaSyncAlt, FaTimes, - FaTrash, - FaTrashAlt, FaUndo, } from 'react-icons/fa' import { usePermission } from '@/utils/hooks/usePermission' @@ -83,6 +79,7 @@ const Pivot = (props: PivotProps) => { gridDto, listFormCode, isSubForm, + gridRef, }) function onCellPrepared(e: any) { diff --git a/ui/src/views/shared/DialogContext/DialogProvider.tsx b/ui/src/views/shared/DialogContext/DialogProvider.tsx index 31172f50..d15b03cf 100644 --- a/ui/src/views/shared/DialogContext/DialogProvider.tsx +++ b/ui/src/views/shared/DialogContext/DialogProvider.tsx @@ -3,6 +3,7 @@ import { createContext, useContext, useState } from 'react' export type DialogConfig = { component?: string props?: any + onClose?: () => void } export const DialogContext = createContext({}) diff --git a/ui/src/views/shared/DialogContext/DialogShowComponent.tsx b/ui/src/views/shared/DialogContext/DialogShowComponent.tsx index 878f786f..dbbba07d 100644 --- a/ui/src/views/shared/DialogContext/DialogShowComponent.tsx +++ b/ui/src/views/shared/DialogContext/DialogShowComponent.tsx @@ -10,13 +10,20 @@ import QuestionDialog from '@/views/coordinator/QuestionDialog' const DialogShowComponent = (): JSX.Element => { const dialogContext: any = useDialogContext() + const handleDialogClose = () => { + if (dialogContext.config?.onClose) { + dialogContext.config.onClose() + } + dialogContext.setConfig({}) + } + const getComponent = (param: string) => { switch (param) { case 'RolesPermission': return ( dialogContext.setConfig({})} + onDialogClose={handleDialogClose} {...dialogContext.config?.props} > ) @@ -24,7 +31,7 @@ const DialogShowComponent = (): JSX.Element => { return ( dialogContext.setConfig({})} + onDialogClose={handleDialogClose} {...dialogContext.config?.props} > ) @@ -32,7 +39,7 @@ const DialogShowComponent = (): JSX.Element => { return ( dialogContext.setConfig({})} + onDialogClose={handleDialogClose} {...dialogContext.config?.props} > ) @@ -40,7 +47,7 @@ const DialogShowComponent = (): JSX.Element => { return ( dialogContext.setConfig({})} + onDialogClose={handleDialogClose} {...dialogContext.config?.props} > ) @@ -48,7 +55,7 @@ const DialogShowComponent = (): JSX.Element => { return ( dialogContext.setConfig({})} + onDialogClose={handleDialogClose} {...dialogContext.config?.props} > ) @@ -56,7 +63,7 @@ const DialogShowComponent = (): JSX.Element => { return ( dialogContext.setConfig({})} + onDialogClose={handleDialogClose} {...dialogContext.config?.props} > ) @@ -64,7 +71,7 @@ const DialogShowComponent = (): JSX.Element => { return ( dialogContext.setConfig({})} + onDialogClose={handleDialogClose} {...dialogContext.config?.props} > )