diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json b/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json index d2cd6569..1eae2748 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json +++ b/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json @@ -9616,6 +9616,12 @@ { "resourceName": "Platform", "key": "App.Project.Task", + "tr": "Görev Tanımları", + "en": "Task Definitions" + }, + { + "resourceName": "Platform", + "key": "App.Project.Tasks", "tr": "Görevler", "en": "Tasks" }, diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs b/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs index 092eee37..47c88b73 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs +++ b/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs @@ -1286,6 +1286,129 @@ public class ListFormSeeder_Project : IDataSeedContributor, ITransientDependency #endregion } #endregion + + #region Project Task + listFormName = AppCodes.Project.Task; + if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName)) + { + var listForm = await _listFormRepository.InsertAsync( + new ListForm() + { + ListFormType = ListFormTypeEnum.List, + IsSubForm = false, + ShowNote = true, + LayoutJson = DefaultLayoutJson, + CultureName = LanguageCodes.En, + ListFormCode = listFormName, + Name = listFormName, + Title = listFormName, + DataSourceCode = SeedConsts.DataSources.DefaultCode, + IsTenant = true, + IsBranch = false, + IsOrganizationUnit = false, + Description = listFormName, + SelectCommandType = SelectCommandTypeEnum.Table, + SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectTask)), + KeyFieldName = "Id", + KeyFieldDbSourceType = DbType.Guid, + DefaultFilter = DefaultFilterJson, + SortMode = GridOptions.SortModeSingle, + FilterRowJson = DefaultFilterRowJson, + HeaderFilterJson = DefaultHeaderFilterJson, + SearchPanelJson = DefaultSearchPanelJson, + GroupPanelJson = DefaultGroupPanelJson, + SelectionJson = DefaultSelectionSingleJson, + ColumnOptionJson = DefaultColumnOptionJson, + PermissionJson = DefaultPermissionJson(listFormName), + DeleteCommand = DefaultDeleteCommand(nameof(TableNameEnum.ProjectTask)), + DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson, + PagerOptionJson = DefaultPagerOptionJson, + EditingOptionJson = DefaultEditingOptionJson(listFormName, 500, 300, true, true, true, true, false), + InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson, + EditingFormJson = JsonSerializer.Serialize(new List() + { + new() { + Order=1, ColCount=1, ColSpan=1, ItemType="group", Items =[ + new EditingFormItemDto { Order = 1, DataField="Name", ColSpan = 1, IsRequired =true, EditorType2 = EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 2, DataField="Description", ColSpan = 1, EditorType2 = EditorTypes.dxTextArea }, + new EditingFormItemDto { Order = 3, DataField="IsActive", ColSpan = 1, EditorType2 = EditorTypes.dxCheckBox }, + ]} + }), + FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { FieldName = "IsActive", FieldDbType = DbType.Boolean, Value = "true", CustomValueType = FieldCustomValueTypeEnum.Value } + }), + } + ); + + #region Project Task Fields + await _listFormFieldRepository.InsertManyAsync([ + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "Id", + Width = 100, + ListOrderNo = 1, + Visible = false, + IsActive = true, + IsDeleted = false, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Name", + Width = 300, + ListOrderNo = 2, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + SortIndex = 1, + SortDirection = GridColumnOptions.SortOrderAsc, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Description", + Width = 500, + ListOrderNo = 3, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Boolean, + FieldName = "IsActive", + Width = 100, + ListOrderNo = 4, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + ]); + #endregion + } + #endregion } } diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json b/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json index 091fa58a..02d845d1 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json +++ b/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json @@ -2614,11 +2614,21 @@ "RequiredPermissionName": "App.Project.Risk", "IsDisabled": false }, + { + "ParentCode": "App.Project", + "Code": "App.Project.Task", + "DisplayName": "App.Project.Task", + "Order": 5, + "Url": "/admin/list/App.Project.Task", + "Icon": "FcPlanner", + "RequiredPermissionName": "App.Project.Task", + "IsDisabled": false + }, { "ParentCode": "App.Project", "Code": "App.Project.Projects", "DisplayName": "App.Project.Projects", - "Order": 5, + "Order": 6, "Url": "/admin/list/App.Project.Projects", "Icon": "FcTodoList", "RequiredPermissionName": "App.Project.Projects", @@ -2628,7 +2638,7 @@ "ParentCode": "App.Project", "Code": "App.Project.Phase", "DisplayName": "App.Project.Phase", - "Order": 6, + "Order": 7, "Url": "/admin/list/App.Project.Phase", "Icon": "FcParallelTasks", "RequiredPermissionName": "App.Project.Phase", @@ -2636,19 +2646,19 @@ }, { "ParentCode": "App.Project", - "Code": "App.Project.Task", - "DisplayName": "App.Project.Task", - "Order": 7, + "Code": "App.Project.Tasks", + "DisplayName": "App.Project.Tasks", + "Order": 8, "Url": "/admin/projects/tasks", "Icon": "FcBullish", - "RequiredPermissionName": "App.Project.Task", + "RequiredPermissionName": "App.Project.Tasks", "IsDisabled": false }, { "ParentCode": "App.Project", "Code": "App.Project.Activity", "DisplayName": "App.Project.Activity", - "Order": 8, + "Order": 9, "Url": "/admin/projects/activities", "Icon": "FcPlanner", "RequiredPermissionName": "App.Project.Activity", @@ -2658,7 +2668,7 @@ "ParentCode": "App.Project", "Code": "App.Project.Workload", "DisplayName": "App.Project.Workload", - "Order": 9, + "Order": 10, "Url": "/admin/projects/workload", "Icon": "FcFlowChart", "RequiredPermissionName": "App.Project.Workload", @@ -2668,7 +2678,7 @@ "ParentCode": "App.Project", "Code": "App.Project.CostTracking", "DisplayName": "App.Project.CostTracking", - "Order": 10, + "Order": 11, "Url": "/admin/projects/cost-tracking", "Icon": "FcMoneyTransfer", "RequiredPermissionName": "App.Project.CostTracking", @@ -2678,7 +2688,7 @@ "ParentCode": "App.Project", "Code": "App.Project.DailyUpdates", "DisplayName": "App.Project.DailyUpdates", - "Order": 11, + "Order": 12, "Url": "/admin/projects/daily-updates", "Icon": "FcConferenceCall", "RequiredPermissionName": "App.Project.DailyUpdates", diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json b/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json index b6f7dca4..57f5edc2 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json +++ b/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json @@ -8467,6 +8467,71 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, + + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks", + "ParentName": null, + "DisplayName": "App.Project.Tasks", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Create", + "ParentName": "App.Project.Tasks", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Update", + "ParentName": "App.Project.Tasks", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Delete", + "ParentName": "App.Project.Tasks", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Export", + "ParentName": "App.Project.Tasks", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Import", + "ParentName": "App.Project.Tasks", + "DisplayName": "Import", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Note", + "ParentName": "App.Project.Tasks", + "DisplayName": "Note", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { "GroupName": "App.Project", "Name": "App.Project.Activity", diff --git a/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs b/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs index bdca8e2d..c5a30383 100644 --- a/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs +++ b/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs @@ -193,5 +193,6 @@ public enum TableNameEnum ProjectStatus, ProjectRisk, ProjectPhase, - ProjectCategory + ProjectCategory, + ProjectTask } diff --git a/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs b/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs index bc8ee6ff..2116268d 100644 --- a/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs +++ b/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs @@ -233,6 +233,7 @@ public static class TableNameResolver { nameof(TableNameEnum.ProjectCategory), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.ProjectPhase), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.Projects), (TablePrefix.TenantByName, MenuPrefix.Project) }, + { nameof(TableNameEnum.ProjectTask), (TablePrefix.TenantByName, MenuPrefix.Project) }, }; public static string GetFullTableName(string tableName) diff --git a/api/src/Erp.Platform.Domain/Data/SeedConsts.cs b/api/src/Erp.Platform.Domain/Data/SeedConsts.cs index cb49b0d9..d7292ea2 100644 --- a/api/src/Erp.Platform.Domain/Data/SeedConsts.cs +++ b/api/src/Erp.Platform.Domain/Data/SeedConsts.cs @@ -568,6 +568,7 @@ public static class SeedConsts public const string Risk = Default + ".Risk"; public const string Category = Default + ".Category"; public const string Phase = Default + ".Phase"; + public const string Task = Default + ".Task"; } public static class Mrp diff --git a/api/src/Erp.Platform.Domain/Entities/Tenant/Project/ProjectTask.cs b/api/src/Erp.Platform.Domain/Entities/Tenant/Project/ProjectTask.cs new file mode 100644 index 00000000..756bcce7 --- /dev/null +++ b/api/src/Erp.Platform.Domain/Entities/Tenant/Project/ProjectTask.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.MultiTenancy; + +namespace Erp.Platform.Entities; + +public class ProjectTask : FullAuditedEntity, IMultiTenant +{ + public Guid? TenantId { get; set; } + + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } + + public ICollection Projects { get; set; } +} + diff --git a/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs b/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs index b193991f..2bd53eee 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs @@ -274,6 +274,7 @@ public class PlatformDbContext : public DbSet ProjectRisks { get; set; } public DbSet ProjectCategories { get; set; } public DbSet ProjectPhases { get; set; } + public DbSet ProjectTasks { get; set; } #endregion public PlatformDbContext(DbContextOptions options) @@ -3307,5 +3308,15 @@ public class PlatformDbContext : b.Property(x => x.IsActive).HasDefaultValue(true); }); + + builder.Entity(b => + { + b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectTask)), Prefix.DbSchema); + b.ConfigureByConvention(); + + b.Property(x => x.Name).IsRequired().HasMaxLength(50); + b.Property(x => x.Description).HasMaxLength(500); + b.Property(x => x.IsActive).HasDefaultValue(true); + }); } } \ No newline at end of file diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127083732_Initial.Designer.cs b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127105051_Initial.Designer.cs similarity index 99% rename from api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127083732_Initial.Designer.cs rename to api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127105051_Initial.Designer.cs index 0452f0fb..e65779a4 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127083732_Initial.Designer.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127105051_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace Erp.Platform.Migrations { [DbContext(typeof(PlatformDbContext))] - [Migration("20251127083732_Initial")] + [Migration("20251127105051_Initial")] partial class Initial { /// @@ -9848,6 +9848,9 @@ namespace Erp.Platform.Migrations b.Property("ProjectPhaseId") .HasColumnType("uniqueidentifier"); + b.Property("ProjectTaskId") + .HasColumnType("uniqueidentifier"); + b.Property("ProjectTypeId") .HasColumnType("uniqueidentifier"); @@ -9869,6 +9872,8 @@ namespace Erp.Platform.Migrations b.HasIndex("ProjectPhaseId"); + b.HasIndex("ProjectTaskId"); + b.HasIndex("ProjectTypeId"); b.HasIndex("StatusId"); @@ -10171,6 +10176,64 @@ namespace Erp.Platform.Migrations b.ToTable("Prj_T_ProjectStatus", (string)null); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTask", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + 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("IsActive") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(true); + + 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(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Prj_T_ProjectTask", (string)null); + }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectType", b => { b.Property("Id") @@ -17364,6 +17427,10 @@ namespace Erp.Platform.Migrations .WithMany("Projects") .HasForeignKey("ProjectPhaseId"); + b.HasOne("Erp.Platform.Entities.ProjectTask", null) + .WithMany("Projects") + .HasForeignKey("ProjectTaskId"); + b.HasOne("Erp.Platform.Entities.ProjectType", "ProjectType") .WithMany("Projects") .HasForeignKey("ProjectTypeId") @@ -18313,6 +18380,11 @@ namespace Erp.Platform.Migrations b.Navigation("Projects"); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTask", b => + { + b.Navigation("Projects"); + }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectType", b => { b.Navigation("Projects"); diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127083732_Initial.cs b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127105051_Initial.cs similarity index 99% rename from api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127083732_Initial.cs rename to api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127105051_Initial.cs index 41cb501c..b8257e60 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127083732_Initial.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127105051_Initial.cs @@ -1889,6 +1889,28 @@ namespace Erp.Platform.Migrations table.PrimaryKey("PK_Prj_T_ProjectStatus", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Prj_T_ProjectTask", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), + Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), + IsActive = table.Column(type: "bit", nullable: false, defaultValue: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Prj_T_ProjectTask", x => x.Id); + }); + migrationBuilder.CreateTable( name: "Prj_T_ProjectType", columns: table => new @@ -6818,6 +6840,7 @@ namespace Erp.Platform.Migrations Progress = table.Column(type: "int", nullable: false, defaultValue: 0), IsActive = table.Column(type: "bit", nullable: false, defaultValue: true), ProjectPhaseId = table.Column(type: "uniqueidentifier", nullable: true), + ProjectTaskId = table.Column(type: "uniqueidentifier", nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -6850,6 +6873,11 @@ namespace Erp.Platform.Migrations principalTable: "Prj_T_ProjectStatus", principalColumn: "Id", onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Prj_T_Projects_Prj_T_ProjectTask_ProjectTaskId", + column: x => x.ProjectTaskId, + principalTable: "Prj_T_ProjectTask", + principalColumn: "Id"); table.ForeignKey( name: "FK_Prj_T_Projects_Prj_T_ProjectType_ProjectTypeId", column: x => x.ProjectTypeId, @@ -7802,6 +7830,11 @@ namespace Erp.Platform.Migrations table: "Prj_T_Projects", column: "ProjectPhaseId"); + migrationBuilder.CreateIndex( + name: "IX_Prj_T_Projects_ProjectTaskId", + table: "Prj_T_Projects", + column: "ProjectTaskId"); + migrationBuilder.CreateIndex( name: "IX_Prj_T_Projects_ProjectTypeId", table: "Prj_T_Projects", @@ -8877,6 +8910,9 @@ namespace Erp.Platform.Migrations migrationBuilder.DropTable( name: "Prj_T_ProjectPhase"); + migrationBuilder.DropTable( + name: "Prj_T_ProjectTask"); + migrationBuilder.DropTable( name: "Prj_T_ProjectType"); } diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs index 53ed9014..66f1c0c5 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs @@ -9845,6 +9845,9 @@ namespace Erp.Platform.Migrations b.Property("ProjectPhaseId") .HasColumnType("uniqueidentifier"); + b.Property("ProjectTaskId") + .HasColumnType("uniqueidentifier"); + b.Property("ProjectTypeId") .HasColumnType("uniqueidentifier"); @@ -9866,6 +9869,8 @@ namespace Erp.Platform.Migrations b.HasIndex("ProjectPhaseId"); + b.HasIndex("ProjectTaskId"); + b.HasIndex("ProjectTypeId"); b.HasIndex("StatusId"); @@ -10168,6 +10173,64 @@ namespace Erp.Platform.Migrations b.ToTable("Prj_T_ProjectStatus", (string)null); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTask", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + 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("IsActive") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(true); + + 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(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Prj_T_ProjectTask", (string)null); + }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectType", b => { b.Property("Id") @@ -17361,6 +17424,10 @@ namespace Erp.Platform.Migrations .WithMany("Projects") .HasForeignKey("ProjectPhaseId"); + b.HasOne("Erp.Platform.Entities.ProjectTask", null) + .WithMany("Projects") + .HasForeignKey("ProjectTaskId"); + b.HasOne("Erp.Platform.Entities.ProjectType", "ProjectType") .WithMany("Projects") .HasForeignKey("ProjectTypeId") @@ -18310,6 +18377,11 @@ namespace Erp.Platform.Migrations b.Navigation("Projects"); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTask", b => + { + b.Navigation("Projects"); + }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectType", b => { b.Navigation("Projects"); diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json index df20f8e8..a7f58665 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json @@ -6118,5 +6118,37 @@ "sequence": 0, "isActive": false } + ], + "ProjectTasks": [ + { + "name": "Geliştirme", + "description": "Projenin planlama aşamasında olduğunu ifade eder", + "isActive": true + }, + { + "name": "Test", + "description": "Projenin aktif olarak yürütüldüğünü ifade eder", + "isActive": true + }, + { + "name": "Dokümantasyon", + "description": "Projenin belirli nedenlerle geçici olarak durdurulduğunu ifade eder", + "isActive": true + }, + { + "name": "İnceleme", + "description": "Projenin tüm çalışmalarının başarıyla tamamlandığını ifade eder", + "isActive": true + }, + { + "name": "Dağıtım", + "description": "Projenin iptal edildiğini ifade eder", + "isActive": true + }, + { + "name": "Toplantı", + "description": "Projenin planlama aşamasında olduğunu ifade eder", + "isActive": true + } ] } diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs index 38fe176b..ac92b10a 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs @@ -134,6 +134,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency private readonly IRepository _projectCategoryRepository; private readonly IRepository _projectRiskRepository; private readonly IRepository _projectPhaseRepository; + private readonly IRepository _projectTaskRepository; public TenantDataSeeder( IClock clock, @@ -250,7 +251,8 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency IRepository projectRepository, IRepository projectRiskRepository, IRepository projectCategoryRepository, - IRepository projectPhaseRepository + IRepository projectPhaseRepository, + IRepository projectTaskRepository ) { _clock = clock; @@ -369,6 +371,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency _projectCategoryRepository = projectCategoryRepository; _projectRiskRepository = projectRiskRepository; _projectPhaseRepository = projectPhaseRepository; + _projectTaskRepository = projectTaskRepository; } private static IConfigurationRoot BuildConfiguration() @@ -2584,6 +2587,20 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency IsActive = item.IsActive }, autoSave: true); } + + foreach (var item in items.ProjectTasks) + { + var exists = await _projectTaskRepository.AnyAsync(x => x.Name == item.Name); + if (exists) + continue; + + await _projectTaskRepository.InsertAsync(new ProjectTask + { + Name = item.Name, + Description = item.Description, + IsActive = item.IsActive + }, autoSave: true); + } } } diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs index a71d5202..2e30c119 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs @@ -134,6 +134,14 @@ public class TenantSeederDto public List ProjectRisks { get; set; } public List ProjectCategories { get; set; } public List ProjectPhases { get; set; } + public List ProjectTasks { get; set; } +} + +public class ProjectTaskSeedDto +{ + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } } public class ProjectPhaseSeedDto