diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json b/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json index 32003392..c5823241 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json +++ b/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json @@ -9613,6 +9613,12 @@ "tr": "Görev Türleri", "en": "Task Types" }, + { + "resourceName": "Platform", + "key": "App.Project.WorkType", + "tr": "İş Türleri", + "en": "Work Types" + }, { "resourceName": "Platform", "key": "App.Project.Projects", @@ -9651,9 +9657,9 @@ }, { "resourceName": "Platform", - "key": "App.Project.Activity", - "tr": "Aktiviteler", - "en": "Activities" + "key": "App.Project.ProjectTaskDaily", + "tr": "Günlük Aktiviteler", + "en": "Daily Activities" }, { "resourceName": "Platform", diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs b/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs index 50b126a1..28521195 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs +++ b/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs @@ -661,6 +661,129 @@ public class ListFormSeeder_Project : IDataSeedContributor, ITransientDependency } #endregion + #region Work Type + listFormName = AppCodes.Project.WorkType; + 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.WorkType)), + 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.WorkType)), + 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 Work Type 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 + #region Projects listFormName = AppCodes.Project.Projects; if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName)) @@ -1936,6 +2059,251 @@ public class ListFormSeeder_Project : IDataSeedContributor, ITransientDependency } #endregion + #region Project Task Daily + listFormName = AppCodes.Project.ProjectTaskDaily; + 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.ProjectTaskDaily)), + 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.ProjectTaskDaily)), + DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson, + PagerOptionJson = DefaultPagerOptionJson, + EditingOptionJson = DefaultEditingOptionJson(listFormName, 500, 500, 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="EmployeeId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 2, DataField="TaskId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 3, DataField="Date", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxDateBox }, + new EditingFormItemDto { Order = 4, DataField="WorkedTypeId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 5, DataField="HoursWorked", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxNumberBox }, + new EditingFormItemDto { Order = 6, DataField="Progress", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSlider }, + new EditingFormItemDto { Order = 7, DataField="Description", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextArea }, + new EditingFormItemDto { Order = 8, DataField="Challenges", ColSpan = 1, EditorType2 = EditorTypes.dxTextArea }, + new EditingFormItemDto { Order = 9, DataField="NextSteps", ColSpan = 1, EditorType2 = EditorTypes.dxTextArea }, + new EditingFormItemDto { Order = 10, DataField="StatusId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox }, + ]} + }), + FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { FieldName = "Date", FieldDbType = DbType.Date, Value = "@DATE", CustomValueType = FieldCustomValueTypeEnum.CustomKey }, + new() { FieldName = "HoursWorked", FieldDbType = DbType.Int32, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value }, + new() { FieldName = "Progress", FieldDbType = DbType.Int32, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value } + }), + } + ); + + #region Project Task Daily 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.Guid, + FieldName = "EmployeeId", + Width = 100, + ListOrderNo = 2, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.Employee), "Id", "FullName"), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "TaskId", + Width = 200, + ListOrderNo = 3, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.ProjectTask), "Id", "Name"), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Date, + FieldName = "Date", + Width = 100, + ListOrderNo = 4, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "WorkedTypeId", + Width = 100, + ListOrderNo = 5, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.WorkType), "Id", "Name"), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Int32, + FieldName = "HoursWorked", + Width = 100, + ListOrderNo = 6, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Int32, + FieldName = "Progress", + Width = 100, + ListOrderNo = 7, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Description", + Width = 200, + ListOrderNo = 8, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Challenges", + Width = 200, + ListOrderNo = 9, + 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.String, + FieldName = "NextSteps", + Width = 200, + ListOrderNo = 10, + 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.Guid, + FieldName = "StatusId", + Width = 100, + ListOrderNo = 10, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.Status), "Id", "Name"), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + 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 c542cf75..a9fc0c9f 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json +++ b/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json @@ -152,14 +152,18 @@ "path": "/admin/menuManager", "componentPath": "@/views/menu/MenuManager", "routeType": "protected", - "authority": ["App.Menus.Manager"] + "authority": [ + "App.Menus.Manager" + ] }, { "key": "admin.listFormManagement.wizard", "path": "/admin/listform/wizard", "componentPath": "@/views/admin/listForm/Wizard", "routeType": "protected", - "authority": ["App.Listforms.Wizard"] + "authority": [ + "App.Listforms.Wizard" + ] }, { "key": "admin.listFormManagement.edit", @@ -173,14 +177,18 @@ "path": "/admin/forumManagement", "componentPath": "@/views/forum/Management", "routeType": "protected", - "authority": ["App.ForumManagement"] + "authority": [ + "App.ForumManagement" + ] }, { "key": "admin.ai", "path": "/admin/ai", "componentPath": "@/views/ai/Assistant", "routeType": "protected", - "authority": ["Abp.Identity.Ai"] + "authority": [ + "Abp.Identity.Ai" + ] }, { "key": "admin.profile.general", @@ -222,28 +230,36 @@ "path": "/admin/settings", "componentPath": "@/views/settings/Settings", "routeType": "protected", - "authority": ["App.Setting"] + "authority": [ + "App.Setting" + ] }, { "key": "admin.identity.user.detail", "path": "/admin/users/detail/:userId", "componentPath": "@/views/admin/user-management/Details", "routeType": "protected", - "authority": ["AbpIdentity.Users.Update"] + "authority": [ + "AbpIdentity.Users.Update" + ] }, { "key": "admin.identity.ous", "path": "/admin/ous", "componentPath": "@/views/admin/organization-unit/OrganizationUnits", "routeType": "protected", - "authority": ["Abp.Identity.OrganizationUnits"] + "authority": [ + "Abp.Identity.OrganizationUnits" + ] }, { "key": "admin.forum", "path": "/admin/forum", "componentPath": "@/views/forum/Forum", "routeType": "protected", - "authority": ["App.ForumManagement.Publish"] + "authority": [ + "App.ForumManagement.Publish" + ] }, { "key": "admin.list", @@ -285,168 +301,216 @@ "path": "/admin/developerkit", "componentPath": "@/views/developerKit/DashboardPage", "routeType": "protected", - "authority": ["App.DeveloperKit"] + "authority": [ + "App.DeveloperKit" + ] }, { "key": "admin.developerkit.entities", "path": "/admin/developerkit/entities", "componentPath": "@/views/developerKit/EntityPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Entity"] + "authority": [ + "App.DeveloperKit.Entity" + ] }, { "key": "admin.developerkit.entities.new", "path": "/admin/developerkit/entities/new", "componentPath": "@/views/developerKit/EntityDetailPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Entity"] + "authority": [ + "App.DeveloperKit.Entity" + ] }, { "key": "admin.developerkit.entities.edit", "path": "/admin/developerkit/entities/edit/:id", "componentPath": "@/views/developerKit/EntityDetailPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Entity"] + "authority": [ + "App.DeveloperKit.Entity" + ] }, { "key": "admin.developerkit.migrations", "path": "/admin/developerkit/migrations", "componentPath": "@/views/developerKit/MigrationPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Migrations"] + "authority": [ + "App.DeveloperKit.Migrations" + ] }, { "key": "admin.developerkit.endpoints", "path": "/admin/developerkit/endpoints", "componentPath": "@/views/developerKit/CrudEndpointPage", "routeType": "protected", - "authority": ["App.DeveloperKit.CrudEndpoints"] + "authority": [ + "App.DeveloperKit.CrudEndpoints" + ] }, { "key": "admin.developerkit.dynamic-services", "path": "/admin/developerkit/dynamic-services", "componentPath": "@/views/developerKit/DynamicServicePage", "routeType": "protected", - "authority": ["App.DeveloperKit.DynamicServices"] + "authority": [ + "App.DeveloperKit.DynamicServices" + ] }, { "key": "admin.developerkit.components", "path": "/admin/developerkit/components", "componentPath": "@/views/developerKit/ComponentPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Components"] + "authority": [ + "App.DeveloperKit.Components" + ] }, { "key": "admin.developerkit.components.new", "path": "/admin/developerkit/components/new", "componentPath": "@/views/developerKit/ComponentDetailPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Components"] + "authority": [ + "App.DeveloperKit.Components" + ] }, { "key": "admin.developerkit.components.view", "path": "/admin/developerkit/components/view/:id", "componentPath": "@/views/developerKit/ComponentDetailPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Components"] + "authority": [ + "App.DeveloperKit.Components" + ] }, { "key": "admin.developerkit.components.edit", "path": "/admin/developerkit/components/edit/:id", "componentPath": "@/views/developerKit/CodePage", "routeType": "protected", - "authority": ["App.DeveloperKit.Components"] + "authority": [ + "App.DeveloperKit.Components" + ] }, { "key": "admin.reportManagement", "path": "/admin/reports/management", "componentPath": "@/views/report/DashboardPage", "routeType": "protected", - "authority": ["App.Reports.Management"] + "authority": [ + "App.Reports.Management" + ] }, { "key": "admin.reports.view", "path": "/admin/reports/:id", "componentPath": "@/views/report/ReportViewerPage", "routeType": "protected", - "authority": ["App.Reports.Categories"] + "authority": [ + "App.Reports.Categories" + ] }, { "key": "admin.fileManagement", "path": "/admin/files", "componentPath": "@/views/admin/files/FileManager", "routeType": "protected", - "authority": ["App.Files"] + "authority": [ + "App.Files" + ] }, { "key": "admin.coordinator.classroom.dashboard", "path": "/admin/coordinator/classroom/dashboard", "componentPath": "@/views/coordinator/Classroom/Dashboard", "routeType": "protected", - "authority": ["App.Coordinator.Classroom.Dashboard"] + "authority": [ + "App.Coordinator.Classroom.Dashboard" + ] }, { "key": "admin.coordinator.classroom.classes", "path": "/admin/coordinator/classroom/classes", "componentPath": "@/views/coordinator/Classroom/ClassList", "routeType": "protected", - "authority": ["App.Coordinator.Classroom.List"] + "authority": [ + "App.Coordinator.Classroom.List" + ] }, { "key": "admin.coordinator.classroom.classroom", "path": "/admin/coordinator/classroom/room/:id", "componentPath": "@/views/coordinator/Classroom/RoomDetail", "routeType": "protected", - "authority": ["App.Coordinator.Classroom.RoomDetail"] + "authority": [ + "App.Coordinator.Classroom.RoomDetail" + ] }, { "key": "admin.coordinator.classroom.planning", "path": "/admin/coordinator/classroom/planning/:id", "componentPath": "@/views/coordinator/Classroom/PlanningPage", "routeType": "protected", - "authority": ["App.Coordinator.Classroom.Planning"] + "authority": [ + "App.Coordinator.Classroom.Planning" + ] }, { "key": "admin.coordinator.exams", "path": "/admin/coordinator/exams", "componentPath": "@/views/coordinator/Exams", "routeType": "protected", - "authority": ["App.Coordinator.Exams"] + "authority": [ + "App.Coordinator.Exams" + ] }, { "key": "admin.coordinator.examDetail", "path": "/admin/coordinator/exam/:id", "componentPath": "@/views/coordinator/ExamInterface/ExamInterface", "routeType": "protected", - "authority": ["App.Coordinator.Exams"] + "authority": [ + "App.Coordinator.Exams" + ] }, { "key": "admin.coordinator.assignments", "path": "/admin/coordinator/assignments", "componentPath": "@/views/coordinator/Assignments", "routeType": "protected", - "authority": ["App.Coordinator.Assignments"] + "authority": [ + "App.Coordinator.Assignments" + ] }, { "key": "admin.coordinator.assignmentDetail", "path": "/admin/coordinator/assignment/:id", "componentPath": "@/views/coordinator/ExamInterface/ExamInterface", "routeType": "protected", - "authority": ["App.Coordinator.Assignments"] + "authority": [ + "App.Coordinator.Assignments" + ] }, { "key": "admin.coordinator.tests", "path": "/admin/coordinator/tests", "componentPath": "@/views/coordinator/Tests", "routeType": "protected", - "authority": ["App.Coordinator.Tests"] + "authority": [ + "App.Coordinator.Tests" + ] }, { "key": "admin.coordinator.testDetail", "path": "/admin/coordinator/test/:id", "componentPath": "@/views/coordinator/ExamInterface/PDFTestInterface", "routeType": "protected", - "authority": ["App.Coordinator.Tests"] + "authority": [ + "App.Coordinator.Tests" + ] }, { "key": "admin.supplychain.requests", @@ -2630,10 +2694,20 @@ "DisplayName": "App.Project.TaskType", "Order": 5, "Url": "/admin/list/App.Project.TaskType", - "Icon": "FcPlanner", + "Icon": "FcMindMap", "RequiredPermissionName": "App.Project.TaskType", "IsDisabled": false }, + { + "ParentCode": "App.Project.Definitions", + "Code": "App.Project.WorkType", + "DisplayName": "App.Project.WorkType", + "Order": 6, + "Url": "/admin/list/App.Project.WorkType", + "Icon": "FcPlanner", + "RequiredPermissionName": "App.Project.WorkType", + "IsDisabled": false + }, { "ParentCode": "App.Project", "Code": "App.Project.Projects", @@ -2664,6 +2738,16 @@ "RequiredPermissionName": "App.Project.ProjectTask", "IsDisabled": false }, + { + "ParentCode": "App.Project", + "Code": "App.Project.ProjectTaskDaily", + "DisplayName": "App.Project.ProjectTaskDaily", + "Order": 6, + "Url": "/admin/list/App.Project.ProjectTaskDaily", + "Icon": "FcConferenceCall", + "RequiredPermissionName": "App.Project.ProjectTaskDaily", + "IsDisabled": false + }, { "ParentCode": "App.Project", "Code": "App.Project.Workload", @@ -2684,16 +2768,6 @@ "RequiredPermissionName": "App.Project.CostTracking", "IsDisabled": false }, - { - "ParentCode": "App.Project", - "Code": "App.Project.DailyUpdates", - "DisplayName": "App.Project.DailyUpdates", - "Order": 9, - "Url": "/admin/projects/daily-updates", - "Icon": "FcConferenceCall", - "RequiredPermissionName": "App.Project.DailyUpdates", - "IsDisabled": false - }, { "ParentCode": null, "Code": "App.Hr", @@ -3045,4 +3119,4 @@ "IsDisabled": false } ] -} +} \ No newline at end of file diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json b/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json index 0bbb5426..d32d4d11 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json +++ b/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json @@ -8140,7 +8140,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Project", "Name": "App.Project.Category", @@ -8204,7 +8203,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Project", "Name": "App.Project.Risk", @@ -8331,7 +8329,69 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - + { + "GroupName": "App.Project", + "Name": "App.Project.WorkType", + "ParentName": null, + "DisplayName": "App.Project.WorkType", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.WorkType.Create", + "ParentName": "App.Project.WorkType", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.WorkType.Update", + "ParentName": "App.Project.WorkType", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.WorkType.Delete", + "ParentName": "App.Project.WorkType", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.WorkType.Export", + "ParentName": "App.Project.WorkType", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.WorkType.Import", + "ParentName": "App.Project.WorkType", + "DisplayName": "Import", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.WorkType.Note", + "ParentName": "App.Project.WorkType", + "DisplayName": "Note", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, { "GroupName": "App.Project", "Name": "App.Project.Projects", @@ -8458,7 +8518,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Project", "Name": "App.Project.ProjectRisk", @@ -8522,7 +8581,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Project", "Name": "App.Project.ProjectTeam", @@ -8586,7 +8644,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Project", "Name": "App.Project.ProjectTask", @@ -8659,20 +8716,19 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Project", - "Name": "App.Project.Activity", + "Name": "App.Project.ProjectTaskDaily", "ParentName": null, - "DisplayName": "App.Project.Activity", + "DisplayName": "App.Project.ProjectTaskDaily", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { "GroupName": "App.Project", - "Name": "App.Project.Activity.Create", - "ParentName": "App.Project.Activity", + "Name": "App.Project.ProjectTaskDaily.Create", + "ParentName": "App.Project.ProjectTaskDaily", "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, @@ -8680,8 +8736,8 @@ }, { "GroupName": "App.Project", - "Name": "App.Project.Activity.Update", - "ParentName": "App.Project.Activity", + "Name": "App.Project.ProjectTaskDaily.Update", + "ParentName": "App.Project.ProjectTaskDaily", "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, @@ -8689,8 +8745,8 @@ }, { "GroupName": "App.Project", - "Name": "App.Project.Activity.Delete", - "ParentName": "App.Project.Activity", + "Name": "App.Project.ProjectTaskDaily.Delete", + "ParentName": "App.Project.ProjectTaskDaily", "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, @@ -8698,8 +8754,8 @@ }, { "GroupName": "App.Project", - "Name": "App.Project.Activity.Export", - "ParentName": "App.Project.Activity", + "Name": "App.Project.ProjectTaskDaily.Export", + "ParentName": "App.Project.ProjectTaskDaily", "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, @@ -8707,8 +8763,8 @@ }, { "GroupName": "App.Project", - "Name": "App.Project.Activity.Import", - "ParentName": "App.Project.Activity", + "Name": "App.Project.ProjectTaskDaily.Import", + "ParentName": "App.Project.ProjectTaskDaily", "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, @@ -8716,8 +8772,8 @@ }, { "GroupName": "App.Project", - "Name": "App.Project.Activity.Note", - "ParentName": "App.Project.Activity", + "Name": "App.Project.ProjectTaskDaily.Note", + "ParentName": "App.Project.ProjectTaskDaily", "DisplayName": "Note", "IsEnabled": true, "MultiTenancySide": 3, @@ -8849,69 +8905,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { - "GroupName": "App.Project", - "Name": "App.Project.DailyUpdates", - "ParentName": null, - "DisplayName": "App.Project.DailyUpdates", - "IsEnabled": true, - "MultiTenancySide": 3, - "MenuGroup": "Erp" - }, - { - "GroupName": "App.Project", - "Name": "App.Project.DailyUpdates.Create", - "ParentName": "App.Project.DailyUpdates", - "DisplayName": "Create", - "IsEnabled": true, - "MultiTenancySide": 3, - "MenuGroup": "Erp" - }, - { - "GroupName": "App.Project", - "Name": "App.Project.DailyUpdates.Update", - "ParentName": "App.Project.DailyUpdates", - "DisplayName": "Update", - "IsEnabled": true, - "MultiTenancySide": 3, - "MenuGroup": "Erp" - }, - { - "GroupName": "App.Project", - "Name": "App.Project.DailyUpdates.Delete", - "ParentName": "App.Project.DailyUpdates", - "DisplayName": "Delete", - "IsEnabled": true, - "MultiTenancySide": 3, - "MenuGroup": "Erp" - }, - { - "GroupName": "App.Project", - "Name": "App.Project.DailyUpdates.Export", - "ParentName": "App.Project.DailyUpdates", - "DisplayName": "Export", - "IsEnabled": true, - "MultiTenancySide": 3, - "MenuGroup": "Erp" - }, - { - "GroupName": "App.Project", - "Name": "App.Project.DailyUpdates.Import", - "ParentName": "App.Project.DailyUpdates", - "DisplayName": "Import", - "IsEnabled": true, - "MultiTenancySide": 3, - "MenuGroup": "Erp" - }, - { - "GroupName": "App.Project", - "Name": "App.Project.DailyUpdates.Note", - "ParentName": "App.Project.DailyUpdates", - "DisplayName": "Note", - "IsEnabled": true, - "MultiTenancySide": 3, - "MenuGroup": "Erp" - }, { "GroupName": "App.Hr", "Name": "App.Hr.Employee", @@ -12873,4 +12866,4 @@ "MenuGroup": "Erp" } ] -} +} \ No newline at end of file diff --git a/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs b/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs index dba220f1..87798360 100644 --- a/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs +++ b/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs @@ -193,9 +193,11 @@ public enum TableNameEnum Risk, Category, TaskType, + WorkType, Projects, ProjectRisk, ProjectTeam, ProjectPhase, ProjectTask, + ProjectTaskDaily } diff --git a/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs b/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs index 1c983a5a..5b41767a 100644 --- a/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs +++ b/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs @@ -232,11 +232,13 @@ public static class TableNameResolver { nameof(TableNameEnum.Risk), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.Category), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.TaskType), (TablePrefix.TenantByName, MenuPrefix.Project) }, + { nameof(TableNameEnum.WorkType), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.Projects), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.ProjectRisk), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.ProjectTeam), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.ProjectPhase), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.ProjectTask), (TablePrefix.TenantByName, MenuPrefix.Project) }, + { nameof(TableNameEnum.ProjectTaskDaily), (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 0f5de8aa..312a583c 100644 --- a/api/src/Erp.Platform.Domain/Data/SeedConsts.cs +++ b/api/src/Erp.Platform.Domain/Data/SeedConsts.cs @@ -567,11 +567,13 @@ public static class SeedConsts public const string Risk = Default + ".Risk"; public const string Category = Default + ".Category"; public const string TaskType = Default + ".TaskType"; + public const string WorkType = Default + ".WorkType"; public const string Projects = Default + ".Projects"; public const string ProjectPhase = Default + ".ProjectPhase"; public const string ProjectRisk = Default + ".ProjectRisk"; public const string ProjectTeam = Default + ".ProjectTeam"; public const string ProjectTask = Default + ".ProjectTask"; + public const string ProjectTaskDaily = Default + ".ProjectTaskDaily"; } 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 index d3b7c5f6..b5359d16 100644 --- a/api/src/Erp.Platform.Domain/Entities/Tenant/Project/ProjectTask.cs +++ b/api/src/Erp.Platform.Domain/Entities/Tenant/Project/ProjectTask.cs @@ -1,4 +1,6 @@ using System; +using System.Collections; +using System.Collections.Generic; using Volo.Abp.Domain.Entities.Auditing; using Volo.Abp.MultiTenancy; @@ -31,6 +33,7 @@ public class ProjectTask : FullAuditedEntity, IMultiTenant public DateTime EndDate { get; set; } public int Progress { get; set; } - public bool IsActive { get; set; } + + public ICollection DailyLogs { get; set; } } diff --git a/api/src/Erp.Platform.Domain/Entities/Tenant/Project/ProjectTaskDaily.cs b/api/src/Erp.Platform.Domain/Entities/Tenant/Project/ProjectTaskDaily.cs new file mode 100644 index 00000000..6035ef6b --- /dev/null +++ b/api/src/Erp.Platform.Domain/Entities/Tenant/Project/ProjectTaskDaily.cs @@ -0,0 +1,31 @@ +using System; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.MultiTenancy; + +namespace Erp.Platform.Entities; + +public class ProjectTaskDaily : FullAuditedEntity, IMultiTenant +{ + public Guid? TenantId { get; set; } + + public Guid EmployeeId { get; set; } + public Employee Employee { get; set; } + + public Guid TaskId { get; set; } + public ProjectTask Task { get; set; } + + public DateTime Date { get; set; } + + public Guid WorkedTypeId { get; set; } + public WorkType WorkedType { get; set; } + + public int HoursWorked { get; set; } //Çalışılan Saat + public int Progress { get; set; } + + public Guid StatusId { get; set; } + public Status Status { get; set; } + + public string Description { get; set; } + public string Challenges { get; set; } + public string NextSteps { get; set; } +} diff --git a/api/src/Erp.Platform.Domain/Entities/Tenant/Project/WorkType.cs b/api/src/Erp.Platform.Domain/Entities/Tenant/Project/WorkType.cs new file mode 100644 index 00000000..6726e557 --- /dev/null +++ b/api/src/Erp.Platform.Domain/Entities/Tenant/Project/WorkType.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 WorkType : FullAuditedEntity, IMultiTenant +{ + public Guid? TenantId { get; set; } + + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } + + // public ICollection ProjectTasks { get; set; } +} + diff --git a/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs b/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs index 80642e49..6a391b39 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs @@ -271,6 +271,7 @@ public class PlatformDbContext : public DbSet Types { get; set; } public DbSet Statuses { get; set; } public DbSet TaskTypes { get; set; } + public DbSet WorkTypes { get; set; } public DbSet Categories { get; set; } public DbSet Risks { get; set; } public DbSet Projects { get; set; } @@ -278,6 +279,7 @@ public class PlatformDbContext : public DbSet ProjectTeams { get; set; } public DbSet ProjectPhases { get; set; } public DbSet ProjectTasks { get; set; } + public DbSet ProjectTaskDailies { get; set; } #endregion public PlatformDbContext(DbContextOptions options) @@ -3268,6 +3270,16 @@ public class PlatformDbContext : b.Property(x => x.IsActive).HasDefaultValue(true); }); + builder.Entity(b => + { + b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.WorkType)), 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); + }); + builder.Entity(b => { b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.Projects)), Prefix.DbSchema); @@ -3364,6 +3376,29 @@ public class PlatformDbContext : .OnDelete(DeleteBehavior.Restrict); }); + builder.Entity(b => + { + b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectTaskDaily)), Prefix.DbSchema); + b.ConfigureByConvention(); + + b.Property(x => x.EmployeeId).IsRequired(); + b.Property(x => x.TaskId).IsRequired(); + b.Property(x => x.Date).IsRequired(); + b.Property(x => x.WorkedTypeId).IsRequired(); + b.Property(x => x.HoursWorked).HasDefaultValue(0); + b.Property(x => x.Progress).HasDefaultValue(0); + b.Property(x => x.StatusId).IsRequired(); + + b.Property(x => x.Description).HasMaxLength(500); + b.Property(x => x.Challenges).HasMaxLength(500); + b.Property(x => x.NextSteps).HasMaxLength(500); + + b.HasOne(x => x.Task) + .WithMany(x => x.DailyLogs) + .HasForeignKey(x => x.TaskId) + .OnDelete(DeleteBehavior.Restrict); + }); + builder.Entity(b => { b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectRisk)), Prefix.DbSchema); diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127201919_Initial.Designer.cs b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127214637_Initial.Designer.cs similarity index 99% rename from api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127201919_Initial.Designer.cs rename to api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127214637_Initial.Designer.cs index 85e76025..c1c33c52 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127201919_Initial.Designer.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127214637_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace Erp.Platform.Migrations { [DbContext(typeof(PlatformDbContext))] - [Migration("20251127201919_Initial")] + [Migration("20251127214637_Initial")] partial class Initial { /// @@ -10191,7 +10191,7 @@ namespace Erp.Platform.Migrations b.Property("StatusId") .HasColumnType("uniqueidentifier"); - b.Property("TaskTypeId") + b.Property("TaskTypeId") .HasColumnType("uniqueidentifier"); b.Property("TenantId") @@ -10213,6 +10213,95 @@ namespace Erp.Platform.Migrations b.ToTable("Prj_T_ProjectTask", (string)null); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTaskDaily", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Challenges") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("EmployeeId") + .HasColumnType("uniqueidentifier"); + + b.Property("HoursWorked") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + 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("NextSteps") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("Progress") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + b.Property("StatusId") + .HasColumnType("uniqueidentifier"); + + b.Property("TaskId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("WorkedTypeId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("StatusId"); + + b.HasIndex("TaskId"); + + b.HasIndex("WorkedTypeId"); + + b.ToTable("Prj_T_ProjectTaskDaily", (string)null); + }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTeam", b => { b.Property("Id") @@ -13960,6 +14049,64 @@ namespace Erp.Platform.Migrations b.ToTable("Adm_T_WorkHour", (string)null); }); + modelBuilder.Entity("Erp.Platform.Entities.WorkType", 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_WorkType", (string)null); + }); + modelBuilder.Entity("Erp.Platform.Entities.Workcenter", b => { b.Property("Id") @@ -17742,9 +17889,7 @@ namespace Erp.Platform.Migrations b.HasOne("Erp.Platform.Entities.TaskType", "TaskType") .WithMany() - .HasForeignKey("TaskTypeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + .HasForeignKey("TaskTypeId"); b.Navigation("Employee"); @@ -17757,6 +17902,41 @@ namespace Erp.Platform.Migrations b.Navigation("TaskType"); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTaskDaily", b => + { + b.HasOne("Erp.Platform.Entities.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.Status", "Status") + .WithMany() + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.ProjectTask", "Task") + .WithMany("DailyLogs") + .HasForeignKey("TaskId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.WorkType", "WorkedType") + .WithMany() + .HasForeignKey("WorkedTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Status"); + + b.Navigation("Task"); + + b.Navigation("WorkedType"); + }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTeam", b => { b.HasOne("Erp.Platform.Entities.Employee", "Employee") @@ -18680,6 +18860,11 @@ namespace Erp.Platform.Migrations b.Navigation("Projects"); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTask", b => + { + b.Navigation("DailyLogs"); + }); + modelBuilder.Entity("Erp.Platform.Entities.Putaway", b => { b.Navigation("Conditions"); diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127201919_Initial.cs b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127214637_Initial.cs similarity index 98% rename from api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127201919_Initial.cs rename to api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127214637_Initial.cs index 13a134bd..a692fb5e 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127201919_Initial.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251127214637_Initial.cs @@ -1933,6 +1933,28 @@ namespace Erp.Platform.Migrations table.PrimaryKey("PK_Prj_T_Type", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Prj_T_WorkType", + 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_WorkType", x => x.Id); + }); + migrationBuilder.CreateTable( name: "Prt_T_Interesting", columns: table => new @@ -6929,7 +6951,7 @@ namespace Erp.Platform.Migrations PhaseId = table.Column(type: "uniqueidentifier", nullable: false), Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), - TaskTypeId = table.Column(type: "uniqueidentifier", nullable: false), + TaskTypeId = table.Column(type: "uniqueidentifier", nullable: true), Priority = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), StatusId = table.Column(type: "uniqueidentifier", nullable: false), EmployeeId = table.Column(type: "uniqueidentifier", nullable: false), @@ -6976,8 +6998,7 @@ namespace Erp.Platform.Migrations name: "FK_Prj_T_ProjectTask_Prj_T_TaskType_TaskTypeId", column: x => x.TaskTypeId, principalTable: "Prj_T_TaskType", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + principalColumn: "Id"); }); migrationBuilder.CreateTable( @@ -7019,6 +7040,59 @@ namespace Erp.Platform.Migrations onDelete: ReferentialAction.Restrict); }); + migrationBuilder.CreateTable( + name: "Prj_T_ProjectTaskDaily", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + EmployeeId = table.Column(type: "uniqueidentifier", nullable: false), + TaskId = table.Column(type: "uniqueidentifier", nullable: false), + Date = table.Column(type: "datetime2", nullable: false), + WorkedTypeId = table.Column(type: "uniqueidentifier", nullable: false), + HoursWorked = table.Column(type: "int", nullable: false, defaultValue: 0), + Progress = table.Column(type: "int", nullable: false, defaultValue: 0), + StatusId = table.Column(type: "uniqueidentifier", nullable: false), + Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), + Challenges = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), + NextSteps = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: 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_ProjectTaskDaily", x => x.Id); + table.ForeignKey( + name: "FK_Prj_T_ProjectTaskDaily_Hr_T_Employee_EmployeeId", + column: x => x.EmployeeId, + principalTable: "Hr_T_Employee", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Prj_T_ProjectTaskDaily_Prj_T_ProjectTask_TaskId", + column: x => x.TaskId, + principalTable: "Prj_T_ProjectTask", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Prj_T_ProjectTaskDaily_Prj_T_Status_StatusId", + column: x => x.StatusId, + principalTable: "Prj_T_Status", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Prj_T_ProjectTaskDaily_Prj_T_WorkType_WorkedTypeId", + column: x => x.WorkedTypeId, + principalTable: "Prj_T_WorkType", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateIndex( name: "IX_AbpAuditLogActions_AuditLogId", table: "AbpAuditLogActions", @@ -8013,6 +8087,26 @@ namespace Erp.Platform.Migrations table: "Prj_T_ProjectTask", column: "TaskTypeId"); + migrationBuilder.CreateIndex( + name: "IX_Prj_T_ProjectTaskDaily_EmployeeId", + table: "Prj_T_ProjectTaskDaily", + column: "EmployeeId"); + + migrationBuilder.CreateIndex( + name: "IX_Prj_T_ProjectTaskDaily_StatusId", + table: "Prj_T_ProjectTaskDaily", + column: "StatusId"); + + migrationBuilder.CreateIndex( + name: "IX_Prj_T_ProjectTaskDaily_TaskId", + table: "Prj_T_ProjectTaskDaily", + column: "TaskId"); + + migrationBuilder.CreateIndex( + name: "IX_Prj_T_ProjectTaskDaily_WorkedTypeId", + table: "Prj_T_ProjectTaskDaily", + column: "WorkedTypeId"); + migrationBuilder.CreateIndex( name: "IX_Prj_T_ProjectTeam_EmployeeId", table: "Prj_T_ProjectTeam", @@ -8704,7 +8798,7 @@ namespace Erp.Platform.Migrations name: "Prj_T_ProjectRisk"); migrationBuilder.DropTable( - name: "Prj_T_ProjectTask"); + name: "Prj_T_ProjectTaskDaily"); migrationBuilder.DropTable( name: "Prj_T_ProjectTeam"); @@ -8898,6 +8992,12 @@ namespace Erp.Platform.Migrations migrationBuilder.DropTable( name: "Plat_H_NotificationRule"); + migrationBuilder.DropTable( + name: "Prj_T_ProjectTask"); + + migrationBuilder.DropTable( + name: "Prj_T_WorkType"); + migrationBuilder.DropTable( name: "Sas_H_City"); diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs index f32924cd..c34346e6 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs @@ -10188,7 +10188,7 @@ namespace Erp.Platform.Migrations b.Property("StatusId") .HasColumnType("uniqueidentifier"); - b.Property("TaskTypeId") + b.Property("TaskTypeId") .HasColumnType("uniqueidentifier"); b.Property("TenantId") @@ -10210,6 +10210,95 @@ namespace Erp.Platform.Migrations b.ToTable("Prj_T_ProjectTask", (string)null); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTaskDaily", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Challenges") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("EmployeeId") + .HasColumnType("uniqueidentifier"); + + b.Property("HoursWorked") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + 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("NextSteps") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("Progress") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + b.Property("StatusId") + .HasColumnType("uniqueidentifier"); + + b.Property("TaskId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("WorkedTypeId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("StatusId"); + + b.HasIndex("TaskId"); + + b.HasIndex("WorkedTypeId"); + + b.ToTable("Prj_T_ProjectTaskDaily", (string)null); + }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTeam", b => { b.Property("Id") @@ -13957,6 +14046,64 @@ namespace Erp.Platform.Migrations b.ToTable("Adm_T_WorkHour", (string)null); }); + modelBuilder.Entity("Erp.Platform.Entities.WorkType", 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_WorkType", (string)null); + }); + modelBuilder.Entity("Erp.Platform.Entities.Workcenter", b => { b.Property("Id") @@ -17739,9 +17886,7 @@ namespace Erp.Platform.Migrations b.HasOne("Erp.Platform.Entities.TaskType", "TaskType") .WithMany() - .HasForeignKey("TaskTypeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + .HasForeignKey("TaskTypeId"); b.Navigation("Employee"); @@ -17754,6 +17899,41 @@ namespace Erp.Platform.Migrations b.Navigation("TaskType"); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTaskDaily", b => + { + b.HasOne("Erp.Platform.Entities.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.Status", "Status") + .WithMany() + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.ProjectTask", "Task") + .WithMany("DailyLogs") + .HasForeignKey("TaskId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.WorkType", "WorkedType") + .WithMany() + .HasForeignKey("WorkedTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Status"); + + b.Navigation("Task"); + + b.Navigation("WorkedType"); + }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTeam", b => { b.HasOne("Erp.Platform.Entities.Employee", "Employee") @@ -18677,6 +18857,11 @@ namespace Erp.Platform.Migrations b.Navigation("Projects"); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectTask", b => + { + b.Navigation("DailyLogs"); + }); + modelBuilder.Entity("Erp.Platform.Entities.Putaway", b => { b.Navigation("Conditions"); diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json index 831bace4..f7e1faa4 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json @@ -5871,6 +5871,26 @@ "name": "İptal Edildi", "description": "Projenin iptal edildiğini ifade eder", "isActive": true + }, + { + "name": "Taslak", + "description": "Projenin taslak aşamasında olduğunu ifade eder", + "isActive": true + }, + { + "name": "Gönderildi", + "description": "Projenin onaylandığını ifade eder", + "isActive": true + }, + { + "name": "Onaylandı", + "description": "Projenin onaylandığını ifade eder", + "isActive": true + }, + { + "name": "Reddedildi", + "description": "Projenin reddildiğini ifade eder", + "isActive": true } ], "Projects": [ @@ -6231,5 +6251,55 @@ "progress": 0, "isActive": true } + ], + "ProjectWorkTypes": [ + { + "name": "Geliştirme", + "description": "Geliştirme için kullanılan iş türü", + "isActive": true + }, + { + "name": "Test", + "description": "Test için kullanılan iş türü", + "isActive": true + }, + { + "name": "Tasarım", + "description": "Tasarım için kullanılan iş türü", + "isActive": true + }, + { + "name": "Dokümantasyon", + "description": "Dokümantasyon için kullanılan iş türü", + "isActive": true + }, + { + "name": "Toplantı", + "description": "Toplantı için kullanılan iş türü", + "isActive": true + }, + { + "name": "Araştırma", + "description": "Araştırma için kullanılan iş türü", + "isActive": true + }, + { + "name": "Hata Ayıklama", + "description": "Hata ayıklama için kullanılan iş türü", + "isActive": true + }, + { + "name": "İnceleme", + "description": "İnceleme için kullanılan iş türü", + "isActive": true + }, + { + "name": "Diğer", + "description": "Diğer iş türleri için kullanılan iş türü", + "isActive": true + } + ], + "ProjectTaskDailies" : [ + ] } \ No newline at end of file diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs index f8b1ab3c..b76c433d 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs @@ -133,6 +133,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency private readonly IRepository _projectCategoryRepository; private readonly IRepository _projectRiskRepository; private readonly IRepository _projectTaskTypeRepository; + private readonly IRepository _projectWorkTypeRepository; private readonly IRepository _projectRepository; private readonly IRepository _projectPhaseRepository; private readonly IRepository _projectTaskRepository; @@ -251,6 +252,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency IRepository projectStatusRepository, IRepository projectRiskRepository, IRepository projectCategoryRepository, + IRepository projectWorkTypeRepository, IRepository projectTaskTypeRepository, IRepository projectRepository, IRepository projectPhaseRepository, @@ -372,6 +374,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency _projectCategoryRepository = projectCategoryRepository; _projectRiskRepository = projectRiskRepository; _projectTaskTypeRepository = projectTaskTypeRepository; + _projectWorkTypeRepository = projectWorkTypeRepository; _projectRepository = projectRepository; _projectPhaseRepository = projectPhaseRepository; _projectTaskRepository = projectTaskRepository; @@ -2633,6 +2636,20 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency IsActive = item.IsActive }, autoSave: true); } + + foreach (var item in items.ProjectWorkTypes) + { + var exists = await _projectWorkTypeRepository.AnyAsync(x => x.Name == item.Name); + if (exists) + continue; + + await _projectWorkTypeRepository.InsertAsync(new WorkType + { + 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 82ffa121..e7b6926d 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs @@ -134,8 +134,31 @@ public class TenantSeederDto public List ProjectRisks { get; set; } public List ProjectCategories { get; set; } public List ProjectTaskTypes { get; set; } + public List ProjectWorkTypes { get; set; } public List ProjectPhases { get; set; } public List ProjectTasks { get; set; } + public List ProjectTaskDailies { get; set; } +} + +public class ProjectTaskDailySeedDto +{ + public string EmployeeCode { get; set; } + public string TaskCode { get; set; } + public DateTime Date { get; set; } + public string WorkedTypeCode { get; set; } + public int HoursWorked { get; set; } //Çalışılan Saat + public int Progress { get; set; } + public string StatusCode { get; set; } + public string Description { get; set; } + public string Challenges { get; set; } + public string NextSteps { get; set; } +} + +public class ProjectWorkTypeSeedDto +{ + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } } public class ProjectTaskSeedDto