Project Daily Activities

This commit is contained in:
Sedat Öztürk 2025-11-28 01:00:37 +03:00
parent ba78863509
commit 43a8e20eb0
17 changed files with 1260 additions and 146 deletions

View file

@ -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",

View file

@ -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<EditingFormDto>()
{
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<EditingFormDto>()
{
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
}
}

View file

@ -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",

View file

@ -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",

View file

@ -193,9 +193,11 @@ public enum TableNameEnum
Risk,
Category,
TaskType,
WorkType,
Projects,
ProjectRisk,
ProjectTeam,
ProjectPhase,
ProjectTask,
ProjectTaskDaily
}

View file

@ -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)

View file

@ -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

View file

@ -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<Guid>, IMultiTenant
public DateTime EndDate { get; set; }
public int Progress { get; set; }
public bool IsActive { get; set; }
public ICollection<ProjectTaskDaily> DailyLogs { get; set; }
}

View file

@ -0,0 +1,31 @@
using System;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
namespace Erp.Platform.Entities;
public class ProjectTaskDaily : FullAuditedEntity<Guid>, 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; }
}

View file

@ -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<Guid>, IMultiTenant
{
public Guid? TenantId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool IsActive { get; set; }
// public ICollection<ProjectTask> ProjectTasks { get; set; }
}

View file

@ -271,6 +271,7 @@ public class PlatformDbContext :
public DbSet<Entities.Type> Types { get; set; }
public DbSet<Status> Statuses { get; set; }
public DbSet<TaskType> TaskTypes { get; set; }
public DbSet<WorkType> WorkTypes { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<Risk> Risks { get; set; }
public DbSet<Project> Projects { get; set; }
@ -278,6 +279,7 @@ public class PlatformDbContext :
public DbSet<ProjectTeam> ProjectTeams { get; set; }
public DbSet<ProjectPhase> ProjectPhases { get; set; }
public DbSet<ProjectTask> ProjectTasks { get; set; }
public DbSet<ProjectTaskDaily> ProjectTaskDailies { get; set; }
#endregion
public PlatformDbContext(DbContextOptions<PlatformDbContext> options)
@ -3268,6 +3270,16 @@ public class PlatformDbContext :
b.Property(x => x.IsActive).HasDefaultValue(true);
});
builder.Entity<WorkType>(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<Project>(b =>
{
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.Projects)), Prefix.DbSchema);
@ -3364,6 +3376,29 @@ public class PlatformDbContext :
.OnDelete(DeleteBehavior.Restrict);
});
builder.Entity<ProjectTaskDaily>(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<ProjectRisk>(b =>
{
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectRisk)), Prefix.DbSchema);

View file

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace Erp.Platform.Migrations
{
[DbContext(typeof(PlatformDbContext))]
[Migration("20251127201919_Initial")]
[Migration("20251127214637_Initial")]
partial class Initial
{
/// <inheritdoc />
@ -10191,7 +10191,7 @@ namespace Erp.Platform.Migrations
b.Property<Guid>("StatusId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("TaskTypeId")
b.Property<Guid?>("TaskTypeId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("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<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<string>("Challenges")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<DateTime>("Date")
.HasColumnType("datetime2");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<Guid>("EmployeeId")
.HasColumnType("uniqueidentifier");
b.Property<int>("HoursWorked")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasDefaultValue(0);
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("NextSteps")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<int>("Progress")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasDefaultValue(0);
b.Property<Guid>("StatusId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("TaskId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<Guid>("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<Guid>("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<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<bool>("IsActive")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(true);
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.HasKey("Id");
b.ToTable("Prj_T_WorkType", (string)null);
});
modelBuilder.Entity("Erp.Platform.Entities.Workcenter", b =>
{
b.Property<Guid>("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");

View file

@ -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<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
IsActive = table.Column<bool>(type: "bit", nullable: false, defaultValue: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(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<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
TaskTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TaskTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Priority = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
StatusId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
EmployeeId = table.Column<Guid>(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<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
EmployeeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TaskId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Date = table.Column<DateTime>(type: "datetime2", nullable: false),
WorkedTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
HoursWorked = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
Progress = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
StatusId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
Challenges = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
NextSteps = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(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");

View file

@ -10188,7 +10188,7 @@ namespace Erp.Platform.Migrations
b.Property<Guid>("StatusId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("TaskTypeId")
b.Property<Guid?>("TaskTypeId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("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<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<string>("Challenges")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<DateTime>("Date")
.HasColumnType("datetime2");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<Guid>("EmployeeId")
.HasColumnType("uniqueidentifier");
b.Property<int>("HoursWorked")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasDefaultValue(0);
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("NextSteps")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<int>("Progress")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasDefaultValue(0);
b.Property<Guid>("StatusId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("TaskId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<Guid>("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<Guid>("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<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<bool>("IsActive")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(true);
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.HasKey("Id");
b.ToTable("Prj_T_WorkType", (string)null);
});
modelBuilder.Entity("Erp.Platform.Entities.Workcenter", b =>
{
b.Property<Guid>("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");

View file

@ -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" : [
]
}

View file

@ -133,6 +133,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
private readonly IRepository<Category, Guid> _projectCategoryRepository;
private readonly IRepository<Risk, Guid> _projectRiskRepository;
private readonly IRepository<TaskType, Guid> _projectTaskTypeRepository;
private readonly IRepository<WorkType, Guid> _projectWorkTypeRepository;
private readonly IRepository<Project, Guid> _projectRepository;
private readonly IRepository<ProjectPhase, Guid> _projectPhaseRepository;
private readonly IRepository<ProjectTask, Guid> _projectTaskRepository;
@ -251,6 +252,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
IRepository<Status, Guid> projectStatusRepository,
IRepository<Risk, Guid> projectRiskRepository,
IRepository<Category, Guid> projectCategoryRepository,
IRepository<WorkType, Guid> projectWorkTypeRepository,
IRepository<TaskType, Guid> projectTaskTypeRepository,
IRepository<Project, Guid> projectRepository,
IRepository<ProjectPhase, Guid> 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);
}
}
}

View file

@ -134,8 +134,31 @@ public class TenantSeederDto
public List<ProjectRiskSeedDto> ProjectRisks { get; set; }
public List<ProjectCategorySeedDto> ProjectCategories { get; set; }
public List<ProjectTaskTypeSeedDto> ProjectTaskTypes { get; set; }
public List<ProjectWorkTypeSeedDto> ProjectWorkTypes { get; set; }
public List<ProjectPhaseSeedDto> ProjectPhases { get; set; }
public List<ProjectTaskSeedDto> ProjectTasks { get; set; }
public List<ProjectTaskDailySeedDto> 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