diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json b/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json index 73f5cede..8a033d04 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json +++ b/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json @@ -171,7 +171,7 @@ }, { "resourceName": "Platform", - "key": "App.Projects", + "key": "App.Project", "en": "R&D", "tr": "Ar-ge" }, @@ -9579,43 +9579,55 @@ }, { "resourceName": "Platform", - "key": "App.Projects.List", + "key": "App.Project.ProjectType", + "tr": "Proje Türleri", + "en": "Project Types" + }, + { + "resourceName": "Platform", + "key": "App.Project.ProjectStatus", + "tr": "Proje Durumları", + "en": "Project Statuses" + }, + { + "resourceName": "Platform", + "key": "App.Project.Projects", "tr": "Projeler", "en": "Projects" }, { "resourceName": "Platform", - "key": "App.Projects.Tasks", + "key": "App.Project.Tasks", "tr": "Görevler", "en": "Tasks" }, { "resourceName": "Platform", - "key": "App.Projects.Phases", + "key": "App.Project.Phases", "tr": "Aşamalar", "en": "Phases" }, { "resourceName": "Platform", - "key": "App.Projects.Activities", + "key": "App.Project.Activities", "tr": "Aktiviteler", "en": "Activities" }, { "resourceName": "Platform", - "key": "App.Projects.Workload", + "key": "App.Project.Workload", "tr": "İş Yükü", "en": "Workload" }, { "resourceName": "Platform", - "key": "App.Projects.CostTracking", + "key": "App.Project.CostTracking", "tr": "Maliyet Takibi", "en": "Cost Tracking" }, { "resourceName": "Platform", - "key": "App.Projects.DailyUpdates", + "key": "App.Project.DailyUpdates", "tr": "Günlük Güncellemeler", "en": "Daily Updates" }, @@ -9866,4 +9878,4 @@ "en": "Check & Notes" } ] -} +} \ No newline at end of file diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs b/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs index b38c69b1..3b4e6575 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs +++ b/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Project.cs @@ -13,8 +13,6 @@ using Volo.Abp.Data; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; -using Volo.Abp.TenantManagement; -using AbpIdentity = Erp.Platform.Data.Seeds.SeedConsts.AbpIdentity; using AppCodes = Erp.Platform.Data.Seeds.SeedConsts.AppCodes; using static Erp.Platform.PlatformConsts; using static Erp.Platform.PlatformSeeder.SeederDefaults; @@ -47,128 +45,648 @@ public class ListFormSeeder_Project : IDataSeedContributor, ITransientDependency { var listFormName = String.Empty; - // #region Workcenter Type - // listFormName = AppCodes.Maintenance.WorkcenterType; - // 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.WorkcenterType)), - // 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.WorkcenterType)), - // DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson, - // PagerOptionJson = DefaultPagerOptionJson, - // InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson, - // EditingOptionJson = DefaultEditingOptionJson(listFormName, 500, 250, true, true, true, true, false), - // EditingFormJson = JsonSerializer.Serialize(new List() { - // new() { - // Order=1, ColCount=1, ColSpan=1, ItemType="group", Items= [ - // new EditingFormItemDto { Order = 2, DataField = "Name", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, - // new EditingFormItemDto { Order = 3, DataField = "Description", ColSpan = 1, EditorType2=EditorTypes.dxTextArea }, - // new EditingFormItemDto { Order = 4, 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 Type + listFormName = AppCodes.Project.ProjectType; + 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.ProjectType)), + 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.ProjectType)), + 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 WorkcenterType 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 = 350, - // ListOrderNo = 3, - // Visible = true, - // IsActive = true, - // IsDeleted = false, - // SortIndex = 1, - // SortDirection = GridColumnOptions.SortOrderAsc, - // 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 = 500, - // ListOrderNo = 4, - // Visible = true, - // IsActive = true, - // IsDeleted = false, - // AllowSearch = true, - // ColumnCustomizationJson = DefaultColumnCustomizationJson, - // PermissionJson = DefaultFieldPermissionJson(listForm.Name), - // PivotSettingsJson = DefaultPivotSettingsJson - // }, + #region Project 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 - // new() { - // ListFormCode = listForm.ListFormCode, - // CultureName = LanguageCodes.En, - // SourceDbType = DbType.Boolean, - // FieldName = "IsActive", - // Width = 100, - // ListOrderNo = 5, - // Visible = true, - // IsActive = true, - // IsDeleted = false, - // AllowSearch = true, - // ColumnCustomizationJson = DefaultColumnCustomizationJson, - // PermissionJson = DefaultFieldPermissionJson(listForm.Name), - // PivotSettingsJson = DefaultPivotSettingsJson - // } - // ]); - // #endregion - // } - // #endregion + #region Project Status + listFormName = AppCodes.Project.ProjectStatus; + 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.ProjectStatus)), + 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.ProjectStatus)), + 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 Status 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)) + { + 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.ProjectStatus)), + 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.ProjectStatus)), + DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson, + PagerOptionJson = DefaultPagerOptionJson, + EditingOptionJson = DefaultEditingOptionJson(listFormName, 900, 700, true, true, true, true, false), + InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson, + EditingFormJson = JsonSerializer.Serialize(new List() + { + new() { + Order=1, ColCount=2, ColSpan=1, Caption="General", ItemType="group", Items = + [ + new EditingFormItemDto { Order = 1, DataField="Code", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 2, DataField="Name", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 3, DataField="ProjectTypeId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 4, DataField="StatusId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 5, DataField="ManagerId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 6, DataField="Priority", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 7, DataField="Description", ColSpan = 2, EditorType2 = EditorTypes.dxTextArea }, + ]}, + new() { + Order=2, ColCount=2, ColSpan=1, Caption="Planned", ItemType="group", Items = + [ + new EditingFormItemDto { Order = 1, DataField="StartDate", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxDateBox }, + new EditingFormItemDto { Order = 2, DataField="EndDate", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxDateBox }, + new EditingFormItemDto { Order = 3, DataField="Budget", ColSpan = 1, EditorType2 = EditorTypes.dxNumberBox, EditorOptions = EditorOptionValues.NumberStandartFormat }, + new EditingFormItemDto { Order = 4, DataField="Currency", ColSpan = 1, EditorType2 = EditorTypes.dxSelectBox }, + ]}, + new() { + Order=3, ColCount=2, ColSpan=1, Caption="Actual", ItemType="group", Items = + [ + + new EditingFormItemDto { Order = 1, DataField="ActualStartDate", ColSpan = 1, EditorType2 = EditorTypes.dxDateBox }, + new EditingFormItemDto { Order = 2, DataField="ActualEndDate", ColSpan = 1, EditorType2 = EditorTypes.dxDateBox }, + new EditingFormItemDto { Order = 3, DataField="ActualCost", ColSpan = 1, EditorType2 = EditorTypes.dxNumberBox, EditorOptions = EditorOptionValues.NumberStandartFormat }, + new EditingFormItemDto { Order = 4, DataField="CustomerId", ColSpan = 1, EditorType2 = EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 5, DataField="Progress", ColSpan = 1, EditorType2 = EditorTypes.dxSlider, EditorOptions=EditorOptionValues.SliderOptions }, + new EditingFormItemDto { Order = 6, DataField="IsActive", ColSpan = 1, EditorType2 = EditorTypes.dxCheckBox }, + ]} + }), + FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { FieldName = "IsActive", FieldDbType = DbType.Boolean, Value = "true", CustomValueType = FieldCustomValueTypeEnum.Value } + }), + } + ); + + #region Projects 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 = "Code", + Width = 100, + ListOrderNo = 2, + 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 = "Name", + Width = 300, + ListOrderNo = 3, + 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.Guid, + FieldName = "ProjectTypeId", + Width = 100, + ListOrderNo = 4, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.ProjectType), "Id", "Name"), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "StatusId", + Width = 100, + ListOrderNo = 5, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.ProjectStatus), "Id", "Name"), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "ManagerId", + Width = 100, + ListOrderNo = 6, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.Employee), "Id", "Name"), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Priority", + Width = 100, + ListOrderNo = 7, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = JsonSerializer.Serialize(new LookupDto + { + DataSourceType = UiLookupDataSourceTypeEnum.StaticData, + DisplayExpr = "name", + ValueExpr = "key", + LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { + new () { Key = "Low", Name = "Low" }, + new () { Key = "Medium", Name = "Medium" }, + new () { Key = "High", Name = "High" }, + new () { Key = "Urgent", Name = "Urgent" }, + }), + }), + 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 = 8, + 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.Date, + FieldName = "StartDate", + Width = 100, + ListOrderNo = 9, + 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.Date, + FieldName = "EndDate", + Width = 100, + ListOrderNo = 10, + 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.Decimal, + FieldName = "Budget", + Format = "fixedPoint", + Alignment = "right", + Width = 100, + ListOrderNo = 11, + 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 = "Currency", + Width = 100, + ListOrderNo = 12, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.Currency), "Code", "Name"), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Date, + FieldName = "ActualStartDate", + Width = 100, + ListOrderNo = 13, + 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.Date, + FieldName = "ActualEndDate", + Width = 100, + ListOrderNo = 14, + 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.Decimal, + FieldName = "ActualCost", + Format = "fixedPoint", + Alignment = "right", + Width = 100, + ListOrderNo = 15, + 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 = "CustomerId", + Width = 100, + ListOrderNo = 16, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = JsonSerializer.Serialize(new LookupDto + { + DataSourceType = UiLookupDataSourceTypeEnum.Query, + DisplayExpr = "Name", + ValueExpr = "Key", + LookupQuery = LookupQueryValues.CustomerValues, + }), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Int32, + FieldName = "Progress", + Width = 150, + ListOrderNo = 17, + 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 = 18, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + ]); + #endregion + } + #endregion } } diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_SupplyChain.cs b/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_SupplyChain.cs index 9b8f9830..e643cafa 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_SupplyChain.cs +++ b/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_SupplyChain.cs @@ -769,7 +769,6 @@ public class ListFormSeeder_SupplyChain : IDataSeedContributor, ITransientDepend IsActive = true, IsDeleted = false, AllowSearch = true, - ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -785,7 +784,6 @@ public class ListFormSeeder_SupplyChain : IDataSeedContributor, ITransientDepend IsActive = true, IsDeleted = false, AllowSearch = true, - ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json b/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json index 70537f22..7199b199 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", @@ -2566,8 +2630,8 @@ }, { "ParentCode": null, - "Code": "App.Projects", - "DisplayName": "App.Projects", + "Code": "App.Project", + "DisplayName": "App.Project", "Order": 1100, "Url": null, "Icon": "FcTimeline", @@ -2575,73 +2639,93 @@ "IsDisabled": false }, { - "ParentCode": "App.Projects", - "Code": "App.Projects.List", - "DisplayName": "App.Projects.List", + "ParentCode": "App.Project", + "Code": "App.Project.ProjectType", + "DisplayName": "App.Project.ProjectType", "Order": 1, + "Url": "/admin/list/App.Project.ProjectType", + "Icon": "FcWorkflow", + "RequiredPermissionName": "App.Project.ProjectType", + "IsDisabled": false + }, + { + "ParentCode": "App.Project", + "Code": "App.Project.ProjectStatus", + "DisplayName": "App.Project.ProjectStatus", + "Order": 2, + "Url": "/admin/list/App.Project.ProjectStatus", + "Icon": "FcTimeline", + "RequiredPermissionName": "App.Project.ProjectStatus", + "IsDisabled": false + }, + { + "ParentCode": "App.Project", + "Code": "App.Project.Projects", + "DisplayName": "App.Project.Projects", + "Order": 3, "Url": "/admin/projects", "Icon": "FcTodoList", - "RequiredPermissionName": "App.Projects.List", + "RequiredPermissionName": "App.Project.Projects", "IsDisabled": false }, { - "ParentCode": "App.Projects", - "Code": "App.Projects.Tasks", - "DisplayName": "App.Projects.Tasks", - "Order": 2, - "Url": "/admin/projects/tasks", - "Icon": "FcBullish", - "RequiredPermissionName": "App.Projects.Tasks", - "IsDisabled": false - }, - { - "ParentCode": "App.Projects", - "Code": "App.Projects.Phases", - "DisplayName": "App.Projects.Phases", - "Order": 3, + "ParentCode": "App.Project", + "Code": "App.Project.Phases", + "DisplayName": "App.Project.Phases", + "Order": 4, "Url": "/admin/projects/phases", "Icon": "FcParallelTasks", - "RequiredPermissionName": "App.Projects.Phases", + "RequiredPermissionName": "App.Project.Phases", "IsDisabled": false }, { - "ParentCode": "App.Projects", - "Code": "App.Projects.Activities", - "DisplayName": "App.Projects.Activities", - "Order": 4, + "ParentCode": "App.Project", + "Code": "App.Project.Tasks", + "DisplayName": "App.Project.Tasks", + "Order": 5, + "Url": "/admin/projects/tasks", + "Icon": "FcBullish", + "RequiredPermissionName": "App.Project.Tasks", + "IsDisabled": false + }, + { + "ParentCode": "App.Project", + "Code": "App.Project.Activities", + "DisplayName": "App.Project.Activities", + "Order": 6, "Url": "/admin/projects/activities", "Icon": "FcPlanner", - "RequiredPermissionName": "App.Projects.Activities", + "RequiredPermissionName": "App.Project.Activities", "IsDisabled": false }, { - "ParentCode": "App.Projects", - "Code": "App.Projects.Workload", - "DisplayName": "App.Projects.Workload", - "Order": 5, + "ParentCode": "App.Project", + "Code": "App.Project.Workload", + "DisplayName": "App.Project.Workload", + "Order": 7, "Url": "/admin/projects/workload", "Icon": "FcFlowChart", - "RequiredPermissionName": "App.Projects.Workload", + "RequiredPermissionName": "App.Project.Workload", "IsDisabled": false }, { - "ParentCode": "App.Projects", - "Code": "App.Projects.CostTracking", - "DisplayName": "App.Projects.CostTracking", - "Order": 6, + "ParentCode": "App.Project", + "Code": "App.Project.CostTracking", + "DisplayName": "App.Project.CostTracking", + "Order": 8, "Url": "/admin/projects/cost-tracking", "Icon": "FcMoneyTransfer", - "RequiredPermissionName": "App.Projects.CostTracking", + "RequiredPermissionName": "App.Project.CostTracking", "IsDisabled": false }, { - "ParentCode": "App.Projects", - "Code": "App.Projects.DailyUpdates", - "DisplayName": "App.Projects.DailyUpdates", - "Order": 7, + "ParentCode": "App.Project", + "Code": "App.Project.DailyUpdates", + "DisplayName": "App.Project.DailyUpdates", + "Order": 9, "Url": "/admin/projects/daily-updates", "Icon": "FcConferenceCall", - "RequiredPermissionName": "App.Projects.DailyUpdates", + "RequiredPermissionName": "App.Project.DailyUpdates", "IsDisabled": false }, { @@ -2995,4 +3079,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 5406dc7e..bdd70231 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json +++ b/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json @@ -41,8 +41,8 @@ "DisplayName": "App.Store" }, { - "Name": "App.Projects", - "DisplayName": "App.Projects" + "Name": "App.Project", + "DisplayName": "App.Project" }, { "Name": "App.Hr", @@ -7636,7 +7636,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Store", "Name": "App.Store.PutawayCondition", @@ -7700,7 +7699,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Store", "Name": "App.Store.Receipt", @@ -8017,450 +8015,576 @@ "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.List", + "GroupName": "App.Project", + "Name": "App.Project.ProjectType", "ParentName": null, - "DisplayName": "App.Projects.List", + "DisplayName": "App.Project.ProjectType", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.List.Create", - "ParentName": "App.Projects.List", + "GroupName": "App.Project", + "Name": "App.Project.ProjectType.Create", + "ParentName": "App.Project.ProjectType", "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.List.Update", - "ParentName": "App.Projects.List", + "GroupName": "App.Project", + "Name": "App.Project.ProjectType.Update", + "ParentName": "App.Project.ProjectType", "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.List.Delete", - "ParentName": "App.Projects.List", + "GroupName": "App.Project", + "Name": "App.Project.ProjectType.Delete", + "ParentName": "App.Project.ProjectType", "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.List.Export", - "ParentName": "App.Projects.List", + "GroupName": "App.Project", + "Name": "App.Project.ProjectType.Export", + "ParentName": "App.Project.ProjectType", "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.List.Import", - "ParentName": "App.Projects.List", + "GroupName": "App.Project", + "Name": "App.Project.ProjectType.Import", + "ParentName": "App.Project.ProjectType", "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.List.Note", - "ParentName": "App.Projects.List", + "GroupName": "App.Project", + "Name": "App.Project.ProjectType.Note", + "ParentName": "App.Project.ProjectType", "DisplayName": "Note", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Tasks", + "GroupName": "App.Project", + "Name": "App.Project.ProjectStatus", "ParentName": null, - "DisplayName": "App.Projects.Tasks", + "DisplayName": "App.Project.ProjectStatus", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Tasks.Create", - "ParentName": "App.Projects.Tasks", + "GroupName": "App.Project", + "Name": "App.Project.ProjectStatus.Create", + "ParentName": "App.Project.ProjectStatus", "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Tasks.Update", - "ParentName": "App.Projects.Tasks", + "GroupName": "App.Project", + "Name": "App.Project.ProjectStatus.Update", + "ParentName": "App.Project.ProjectStatus", "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Tasks.Delete", - "ParentName": "App.Projects.Tasks", + "GroupName": "App.Project", + "Name": "App.Project.ProjectStatus.Delete", + "ParentName": "App.Project.ProjectStatus", "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Tasks.Export", - "ParentName": "App.Projects.Tasks", + "GroupName": "App.Project", + "Name": "App.Project.ProjectStatus.Export", + "ParentName": "App.Project.ProjectStatus", "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Tasks.Import", - "ParentName": "App.Projects.Tasks", + "GroupName": "App.Project", + "Name": "App.Project.ProjectStatus.Import", + "ParentName": "App.Project.ProjectStatus", "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Tasks.Note", - "ParentName": "App.Projects.Tasks", + "GroupName": "App.Project", + "Name": "App.Project.ProjectStatus.Note", + "ParentName": "App.Project.ProjectStatus", "DisplayName": "Note", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Tasks.Widget", - "ParentName": "App.Projects.Tasks", + "GroupName": "App.Project", + "Name": "App.Project.Projects", + "ParentName": null, + "DisplayName": "App.Project.Projects", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Projects.Create", + "ParentName": "App.Project.Projects", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Projects.Update", + "ParentName": "App.Project.Projects", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Projects.Delete", + "ParentName": "App.Project.Projects", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Projects.Export", + "ParentName": "App.Project.Projects", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Projects.Import", + "ParentName": "App.Project.Projects", + "DisplayName": "Import", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Projects.Note", + "ParentName": "App.Project.Projects", + "DisplayName": "Note", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks", + "ParentName": null, + "DisplayName": "App.Project.Tasks", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Create", + "ParentName": "App.Project.Tasks", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Update", + "ParentName": "App.Project.Tasks", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Delete", + "ParentName": "App.Project.Tasks", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Export", + "ParentName": "App.Project.Tasks", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Import", + "ParentName": "App.Project.Tasks", + "DisplayName": "Import", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Note", + "ParentName": "App.Project.Tasks", + "DisplayName": "Note", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Project", + "Name": "App.Project.Tasks.Widget", + "ParentName": "App.Project.Tasks", "DisplayName": "Widget", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Phases", + "GroupName": "App.Project", + "Name": "App.Project.Phases", "ParentName": null, - "DisplayName": "App.Projects.Phases", + "DisplayName": "App.Project.Phases", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Phases.Create", - "ParentName": "App.Projects.Phases", + "GroupName": "App.Project", + "Name": "App.Project.Phases.Create", + "ParentName": "App.Project.Phases", "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Phases.Update", - "ParentName": "App.Projects.Phases", + "GroupName": "App.Project", + "Name": "App.Project.Phases.Update", + "ParentName": "App.Project.Phases", "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Phases.Delete", - "ParentName": "App.Projects.Phases", + "GroupName": "App.Project", + "Name": "App.Project.Phases.Delete", + "ParentName": "App.Project.Phases", "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Phases.Export", - "ParentName": "App.Projects.Phases", + "GroupName": "App.Project", + "Name": "App.Project.Phases.Export", + "ParentName": "App.Project.Phases", "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Phases.Import", - "ParentName": "App.Projects.Phases", + "GroupName": "App.Project", + "Name": "App.Project.Phases.Import", + "ParentName": "App.Project.Phases", "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Phases.Note", - "ParentName": "App.Projects.Phases", + "GroupName": "App.Project", + "Name": "App.Project.Phases.Note", + "ParentName": "App.Project.Phases", "DisplayName": "Note", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Activities", + "GroupName": "App.Project", + "Name": "App.Project.Activities", "ParentName": null, - "DisplayName": "App.Projects.Activities", + "DisplayName": "App.Project.Activities", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Activities.Create", - "ParentName": "App.Projects.Activities", + "GroupName": "App.Project", + "Name": "App.Project.Activities.Create", + "ParentName": "App.Project.Activities", "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Activities.Update", - "ParentName": "App.Projects.Activities", + "GroupName": "App.Project", + "Name": "App.Project.Activities.Update", + "ParentName": "App.Project.Activities", "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Activities.Delete", - "ParentName": "App.Projects.Activities", + "GroupName": "App.Project", + "Name": "App.Project.Activities.Delete", + "ParentName": "App.Project.Activities", "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Activities.Export", - "ParentName": "App.Projects.Activities", + "GroupName": "App.Project", + "Name": "App.Project.Activities.Export", + "ParentName": "App.Project.Activities", "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Activities.Import", - "ParentName": "App.Projects.Activities", + "GroupName": "App.Project", + "Name": "App.Project.Activities.Import", + "ParentName": "App.Project.Activities", "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Activities.Note", - "ParentName": "App.Projects.Activities", + "GroupName": "App.Project", + "Name": "App.Project.Activities.Note", + "ParentName": "App.Project.Activities", "DisplayName": "Note", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Workload", + "GroupName": "App.Project", + "Name": "App.Project.Workload", "ParentName": null, - "DisplayName": "App.Projects.Workload", + "DisplayName": "App.Project.Workload", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Workload.Create", - "ParentName": "App.Projects.Workload", + "GroupName": "App.Project", + "Name": "App.Project.Workload.Create", + "ParentName": "App.Project.Workload", "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Workload.Update", - "ParentName": "App.Projects.Workload", + "GroupName": "App.Project", + "Name": "App.Project.Workload.Update", + "ParentName": "App.Project.Workload", "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Workload.Delete", - "ParentName": "App.Projects.Workload", + "GroupName": "App.Project", + "Name": "App.Project.Workload.Delete", + "ParentName": "App.Project.Workload", "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Workload.Export", - "ParentName": "App.Projects.Workload", + "GroupName": "App.Project", + "Name": "App.Project.Workload.Export", + "ParentName": "App.Project.Workload", "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Workload.Import", - "ParentName": "App.Projects.Workload", + "GroupName": "App.Project", + "Name": "App.Project.Workload.Import", + "ParentName": "App.Project.Workload", "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.Workload.Note", - "ParentName": "App.Projects.Workload", + "GroupName": "App.Project", + "Name": "App.Project.Workload.Note", + "ParentName": "App.Project.Workload", "DisplayName": "Note", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.CostTracking", + "GroupName": "App.Project", + "Name": "App.Project.CostTracking", "ParentName": null, - "DisplayName": "App.Projects.CostTracking", + "DisplayName": "App.Project.CostTracking", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.CostTracking.Create", - "ParentName": "App.Projects.CostTracking", + "GroupName": "App.Project", + "Name": "App.Project.CostTracking.Create", + "ParentName": "App.Project.CostTracking", "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.CostTracking.Update", - "ParentName": "App.Projects.CostTracking", + "GroupName": "App.Project", + "Name": "App.Project.CostTracking.Update", + "ParentName": "App.Project.CostTracking", "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.CostTracking.Delete", - "ParentName": "App.Projects.CostTracking", + "GroupName": "App.Project", + "Name": "App.Project.CostTracking.Delete", + "ParentName": "App.Project.CostTracking", "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.CostTracking.Export", - "ParentName": "App.Projects.CostTracking", + "GroupName": "App.Project", + "Name": "App.Project.CostTracking.Export", + "ParentName": "App.Project.CostTracking", "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.CostTracking.Import", - "ParentName": "App.Projects.CostTracking", + "GroupName": "App.Project", + "Name": "App.Project.CostTracking.Import", + "ParentName": "App.Project.CostTracking", "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.CostTracking.Note", - "ParentName": "App.Projects.CostTracking", + "GroupName": "App.Project", + "Name": "App.Project.CostTracking.Note", + "ParentName": "App.Project.CostTracking", "DisplayName": "Note", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.DailyUpdates", + "GroupName": "App.Project", + "Name": "App.Project.DailyUpdates", "ParentName": null, - "DisplayName": "App.Projects.DailyUpdates", + "DisplayName": "App.Project.DailyUpdates", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.DailyUpdates.Create", - "ParentName": "App.Projects.DailyUpdates", + "GroupName": "App.Project", + "Name": "App.Project.DailyUpdates.Create", + "ParentName": "App.Project.DailyUpdates", "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.DailyUpdates.Update", - "ParentName": "App.Projects.DailyUpdates", + "GroupName": "App.Project", + "Name": "App.Project.DailyUpdates.Update", + "ParentName": "App.Project.DailyUpdates", "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.DailyUpdates.Delete", - "ParentName": "App.Projects.DailyUpdates", + "GroupName": "App.Project", + "Name": "App.Project.DailyUpdates.Delete", + "ParentName": "App.Project.DailyUpdates", "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.DailyUpdates.Export", - "ParentName": "App.Projects.DailyUpdates", + "GroupName": "App.Project", + "Name": "App.Project.DailyUpdates.Export", + "ParentName": "App.Project.DailyUpdates", "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.DailyUpdates.Import", - "ParentName": "App.Projects.DailyUpdates", + "GroupName": "App.Project", + "Name": "App.Project.DailyUpdates.Import", + "ParentName": "App.Project.DailyUpdates", "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" }, { - "GroupName": "App.Projects", - "Name": "App.Projects.DailyUpdates.Note", - "ParentName": "App.Projects.DailyUpdates", + "GroupName": "App.Project", + "Name": "App.Project.DailyUpdates.Note", + "ParentName": "App.Project.DailyUpdates", "DisplayName": "Note", "IsEnabled": true, "MultiTenancySide": 3, @@ -10914,7 +11038,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Mrp", "Name": "App.Mrp.OperationCategory", @@ -10978,7 +11101,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Mrp", "Name": "App.Mrp.OperationType", @@ -11042,7 +11164,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Mrp", "Name": "App.Mrp.WorkcenterType", @@ -11106,7 +11227,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Mrp", "Name": "App.Mrp.WorkcenterStatus", @@ -11170,7 +11290,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Mrp", "Name": "App.Mrp.Workcenter", @@ -11360,7 +11479,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Mrp", "Name": "App.Mrp.BomOperation", @@ -11424,7 +11542,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Mrp", "Name": "App.Mrp.BomComponent", @@ -11488,7 +11605,6 @@ "MultiTenancySide": 3, "MenuGroup": "Erp" }, - { "GroupName": "App.Mrp", "Name": "App.Mrp.ProductionOrder", @@ -12435,4 +12551,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 dd72d298..9ed15b5b 100644 --- a/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs +++ b/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs @@ -187,5 +187,8 @@ public enum TableNameEnum BomType, Bom, BomOperation, - BomComponent + BomComponent, + Project, + ProjectType, + ProjectStatus } diff --git a/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs b/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs index e82964a9..14e89372 100644 --- a/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs +++ b/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs @@ -225,6 +225,11 @@ public static class TableNameResolver { nameof(TableNameEnum.Bom), (TablePrefix.TenantByName, MenuPrefix.Mrp) }, { nameof(TableNameEnum.BomOperation), (TablePrefix.TenantByName, MenuPrefix.Mrp) }, { nameof(TableNameEnum.BomComponent), (TablePrefix.TenantByName, MenuPrefix.Mrp) }, + + // 🔹 R&D + { nameof(TableNameEnum.ProjectType), (TablePrefix.TenantByName, MenuPrefix.Project) }, + { nameof(TableNameEnum.ProjectStatus), (TablePrefix.TenantByName, MenuPrefix.Project) }, + { nameof(TableNameEnum.Project), (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 11d9878d..f4c9183c 100644 --- a/api/src/Erp.Platform.Domain/Data/SeedConsts.cs +++ b/api/src/Erp.Platform.Domain/Data/SeedConsts.cs @@ -559,6 +559,14 @@ public static class SeedConsts public const string PutawayCondition = Default + ".PutawayCondition"; } + public static class Project + { + public const string Default = Prefix.App + ".Project"; + public const string ProjectType = Default + ".ProjectType"; + public const string ProjectStatus = Default + ".ProjectStatus"; + public const string Projects = Default + ".Project"; + } + public static class Mrp { public const string Default = Prefix.App + ".Mrp"; diff --git a/api/src/Erp.Platform.Domain/Entities/Tenant/RD/Project.cs b/api/src/Erp.Platform.Domain/Entities/Tenant/RD/Project.cs new file mode 100644 index 00000000..0532c46d --- /dev/null +++ b/api/src/Erp.Platform.Domain/Entities/Tenant/RD/Project.cs @@ -0,0 +1,42 @@ +// Domain/Entities/PsProject.cs +using System; +using System.Collections.Generic; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.MultiTenancy; + +namespace Erp.Platform.Entities; + +public class Project : FullAuditedEntity, IMultiTenant +{ + public Guid? TenantId { get; set; } + + public string Code { get; set; } + public string Name { get; set; } + public string Description { get; set; } + + public Guid? ProjectTypeId { get; set; } //Dahili, Müşteri, Araştırma, Bakım, Geliştirme + public ProjectType ProjectType { get; set; } + public Guid? StatusId { get; set; } //Planlanıyor, Devam Ediyor, Tamamlandı, Beklemede, İptal Edildi + public ProjectStatus Status { get; set; } + public string Priority { get; set; } //Düşük, Orta, Yüksek, Kritik, Acil + public Guid ManagerId { get; set; } + + public DateTime StartDate { get; set; } + public DateTime EndDate { get; set; } + public DateTime? ActualStartDate { get; set; } + public DateTime? ActualEndDate { get; set; } + + public Guid? CustomerId { get; set; } + + public decimal Budget { get; set; } + public decimal ActualCost { get; set; } + public string Currency { get; set; } + public int Progress { get; set; } + + public bool IsActive { get; set; } + + // public ICollection Phases { get; set; } + // public ICollection Tasks { get; set; } + // public ICollection Risks { get; set; } + // public ICollection Documents { get; set; } +} diff --git a/api/src/Erp.Platform.Domain/Entities/Tenant/RD/ProjectStatus.cs b/api/src/Erp.Platform.Domain/Entities/Tenant/RD/ProjectStatus.cs new file mode 100644 index 00000000..d0cdc483 --- /dev/null +++ b/api/src/Erp.Platform.Domain/Entities/Tenant/RD/ProjectStatus.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 ProjectStatus : FullAuditedEntity, IMultiTenant +{ + public Guid? TenantId { get; set; } + + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } + + public ICollection Projects { get; set; } +} + diff --git a/api/src/Erp.Platform.Domain/Entities/Tenant/RD/ProjectType.cs b/api/src/Erp.Platform.Domain/Entities/Tenant/RD/ProjectType.cs new file mode 100644 index 00000000..e9050974 --- /dev/null +++ b/api/src/Erp.Platform.Domain/Entities/Tenant/RD/ProjectType.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 ProjectType : FullAuditedEntity, IMultiTenant +{ + public Guid? TenantId { get; set; } + + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } + + public ICollection Projects { get; set; } +} + diff --git a/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs b/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs index 7dfb50f7..375ed2dc 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs @@ -267,6 +267,12 @@ public class PlatformDbContext : public DbSet BomComponents { get; set; } #endregion + #region Rd + public DbSet ProjectTypes { get; set; } + public DbSet ProjectStatuses { get; set; } + public DbSet Projects { get; set; } + #endregion + public PlatformDbContext(DbContextOptions options) : base(options) { @@ -3199,5 +3205,56 @@ public class PlatformDbContext : b.Property(x => x.Description).HasMaxLength(500); b.Property(x => x.IsActive).HasDefaultValue(true); }); + + builder.Entity(b => + { + b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectType)), 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.ProjectStatus)), 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.Project)), Prefix.DbSchema); + b.ConfigureByConvention(); + + b.Property(x => x.Code).IsRequired().HasMaxLength(100); + b.Property(x => x.Name).IsRequired().HasMaxLength(200); + b.Property(x => x.Description).HasMaxLength(500); + + b.Property(x => x.ProjectTypeId).IsRequired(); + b.Property(x => x.StatusId).IsRequired(); + b.Property(x => x.Priority).IsRequired().HasMaxLength(50); + + b.Property(x => x.Currency).HasMaxLength(10); + b.Property(x => x.Budget).HasPrecision(18, 2).HasDefaultValue(0); + b.Property(x => x.ActualCost).HasPrecision(18, 2).HasDefaultValue(0); + b.Property(x => x.Progress).HasDefaultValue(0); + + b.Property(x => x.IsActive).HasDefaultValue(true); + + b.HasOne(x => x.ProjectType) + .WithMany(x => x.Projects) + .HasForeignKey(x => x.ProjectTypeId) + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne(x => x.Status) + .WithMany(x => x.Projects) + .HasForeignKey(x => x.StatusId) + .OnDelete(DeleteBehavior.Restrict); + }); } } \ No newline at end of file diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126193252_Initial.Designer.cs b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126210300_Initial.Designer.cs similarity index 98% rename from api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126193252_Initial.Designer.cs rename to api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126210300_Initial.Designer.cs index 42a54cce..c996efba 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126193252_Initial.Designer.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126210300_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace Erp.Platform.Migrations { [DbContext(typeof(PlatformDbContext))] - [Migration("20251126193252_Initial")] + [Migration("20251126210300_Initial")] partial class Initial { /// @@ -9750,6 +9750,239 @@ namespace Erp.Platform.Migrations b.ToTable("Crd_T_Program", (string)null); }); + modelBuilder.Entity("Erp.Platform.Entities.Project", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ActualCost") + .ValueGeneratedOnAdd() + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasDefaultValue(0m); + + b.Property("ActualEndDate") + .HasColumnType("datetime2"); + + b.Property("ActualStartDate") + .HasColumnType("datetime2"); + + b.Property("Budget") + .ValueGeneratedOnAdd() + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasDefaultValue(0m); + + b.Property("Code") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("Currency") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + 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("ManagerId") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Priority") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Progress") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + b.Property("ProjectTypeId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("StatusId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ProjectTypeId"); + + b.HasIndex("StatusId"); + + b.ToTable("Prj_T_Project", (string)null); + }); + + modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", 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_ProjectStatus", (string)null); + }); + + modelBuilder.Entity("Erp.Platform.Entities.ProjectType", 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_ProjectType", (string)null); + }); + modelBuilder.Entity("Erp.Platform.Entities.Psychologist", b => { b.Property("Id") @@ -16871,6 +17104,25 @@ namespace Erp.Platform.Migrations b.Navigation("Template"); }); + modelBuilder.Entity("Erp.Platform.Entities.Project", b => + { + b.HasOne("Erp.Platform.Entities.ProjectType", "ProjectType") + .WithMany("Projects") + .HasForeignKey("ProjectTypeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.ProjectStatus", "Status") + .WithMany("Projects") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("ProjectType"); + + b.Navigation("Status"); + }); + modelBuilder.Entity("Erp.Platform.Entities.PutawayCondition", b => { b.HasOne("Erp.Platform.Entities.Putaway", "Rule") @@ -17748,6 +18000,16 @@ namespace Erp.Platform.Migrations b.Navigation("Items"); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", b => + { + b.Navigation("Projects"); + }); + + modelBuilder.Entity("Erp.Platform.Entities.ProjectType", b => + { + b.Navigation("Projects"); + }); + modelBuilder.Entity("Erp.Platform.Entities.Putaway", b => { b.Navigation("Conditions"); diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126193252_Initial.cs b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126210300_Initial.cs similarity index 98% rename from api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126193252_Initial.cs rename to api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126210300_Initial.cs index d15d5491..b40aeef9 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126193252_Initial.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251126210300_Initial.cs @@ -1823,6 +1823,50 @@ namespace Erp.Platform.Migrations table.PrimaryKey("PK_Plat_H_SettingDefinition", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Prj_T_ProjectStatus", + 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_ProjectStatus", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Prj_T_ProjectType", + 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_ProjectType", x => x.Id); + }); + migrationBuilder.CreateTable( name: "Prt_T_Interesting", columns: table => new @@ -3482,6 +3526,54 @@ namespace Erp.Platform.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "Prj_T_Project", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Code = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), + ProjectTypeId = table.Column(type: "uniqueidentifier", nullable: false), + StatusId = table.Column(type: "uniqueidentifier", nullable: false), + Priority = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), + ManagerId = table.Column(type: "uniqueidentifier", nullable: false), + StartDate = table.Column(type: "datetime2", nullable: false), + EndDate = table.Column(type: "datetime2", nullable: false), + ActualStartDate = table.Column(type: "datetime2", nullable: true), + ActualEndDate = table.Column(type: "datetime2", nullable: true), + CustomerId = table.Column(type: "uniqueidentifier", nullable: true), + Budget = table.Column(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m), + ActualCost = table.Column(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m), + Currency = table.Column(type: "nvarchar(10)", maxLength: 10, nullable: true), + Progress = table.Column(type: "int", nullable: false, defaultValue: 0), + 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_Project", x => x.Id); + table.ForeignKey( + name: "FK_Prj_T_Project_Prj_T_ProjectStatus_StatusId", + column: x => x.StatusId, + principalTable: "Prj_T_ProjectStatus", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Prj_T_Project_Prj_T_ProjectType_ProjectTypeId", + column: x => x.ProjectTypeId, + principalTable: "Prj_T_ProjectType", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.CreateTable( name: "Sas_H_Country", columns: table => new @@ -7562,6 +7654,16 @@ namespace Erp.Platform.Migrations table: "Plat_H_Notification", column: "NotificationRuleId"); + migrationBuilder.CreateIndex( + name: "IX_Prj_T_Project_ProjectTypeId", + table: "Prj_T_Project", + column: "ProjectTypeId"); + + migrationBuilder.CreateIndex( + name: "IX_Prj_T_Project_StatusId", + table: "Prj_T_Project", + column: "StatusId"); + migrationBuilder.CreateIndex( name: "IX_Sas_H_City_Country_Code", table: "Sas_H_City", @@ -8210,6 +8312,9 @@ namespace Erp.Platform.Migrations migrationBuilder.DropTable( name: "Plat_H_SettingDefinition"); + migrationBuilder.DropTable( + name: "Prj_T_Project"); + migrationBuilder.DropTable( name: "Prt_T_Interesting"); @@ -8402,6 +8507,12 @@ namespace Erp.Platform.Migrations migrationBuilder.DropTable( name: "Plat_H_NotificationRule"); + migrationBuilder.DropTable( + name: "Prj_T_ProjectStatus"); + + migrationBuilder.DropTable( + name: "Prj_T_ProjectType"); + 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 26200c0f..2fc7c7a4 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs @@ -9747,6 +9747,239 @@ namespace Erp.Platform.Migrations b.ToTable("Crd_T_Program", (string)null); }); + modelBuilder.Entity("Erp.Platform.Entities.Project", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ActualCost") + .ValueGeneratedOnAdd() + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasDefaultValue(0m); + + b.Property("ActualEndDate") + .HasColumnType("datetime2"); + + b.Property("ActualStartDate") + .HasColumnType("datetime2"); + + b.Property("Budget") + .ValueGeneratedOnAdd() + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasDefaultValue(0m); + + b.Property("Code") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("Currency") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + 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("ManagerId") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Priority") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Progress") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + b.Property("ProjectTypeId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("StatusId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ProjectTypeId"); + + b.HasIndex("StatusId"); + + b.ToTable("Prj_T_Project", (string)null); + }); + + modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", 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_ProjectStatus", (string)null); + }); + + modelBuilder.Entity("Erp.Platform.Entities.ProjectType", 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_ProjectType", (string)null); + }); + modelBuilder.Entity("Erp.Platform.Entities.Psychologist", b => { b.Property("Id") @@ -16868,6 +17101,25 @@ namespace Erp.Platform.Migrations b.Navigation("Template"); }); + modelBuilder.Entity("Erp.Platform.Entities.Project", b => + { + b.HasOne("Erp.Platform.Entities.ProjectType", "ProjectType") + .WithMany("Projects") + .HasForeignKey("ProjectTypeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.ProjectStatus", "Status") + .WithMany("Projects") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("ProjectType"); + + b.Navigation("Status"); + }); + modelBuilder.Entity("Erp.Platform.Entities.PutawayCondition", b => { b.HasOne("Erp.Platform.Entities.Putaway", "Rule") @@ -17745,6 +17997,16 @@ namespace Erp.Platform.Migrations b.Navigation("Items"); }); + modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", b => + { + b.Navigation("Projects"); + }); + + modelBuilder.Entity("Erp.Platform.Entities.ProjectType", b => + { + b.Navigation("Projects"); + }); + 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 3472f24a..e8a27054 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json @@ -100,7 +100,9 @@ "props": null, "description": null, "isActive": true, - "dependencies": ["DynamicEntityComponent"] + "dependencies": [ + "DynamicEntityComponent" + ] } ], "ReportCategories": [ @@ -2429,7 +2431,12 @@ "minSalary": 80000, "maxSalary": 120000, "currency": "USD", - "requiredSkills": ["JavaScript", "TypeScript", "React", "Node.js"], + "requiredSkills": [ + "JavaScript", + "TypeScript", + "React", + "Node.js" + ], "responsibilities": [ "Develop frontend and backend applications", "Write clean and maintainable code", @@ -4124,7 +4131,9 @@ { "postContent": "CI/CD pipeline güncellememiz tamamlandı! Deployment süremiz %40 azaldı. Otomasyonun gücü 💪", "type": "video", - "urls": ["https://www.w3schools.com/html/mov_bbb.mp4"] + "urls": [ + "https://www.w3schools.com/html/mov_bbb.mp4" + ] } ], "SocialPollOptions": [ @@ -5806,5 +5815,59 @@ "isActive": true, "isParallel": false } + ], + "ProjectTypes": [ + { + "name": "Dahili", + "description": "Şirket içi projeler için kullanılan tür", + "isActive": true + }, + { + "name": "Müşteri", + "description": "Müşteri projeleri için kullanılan tür", + "isActive": true + }, + { + "name": "Araştırma", + "description": "Araştırma ve geliştirme projeleri için kullanılan tür", + "isActive": true + }, + { + "name": "Bakım", + "description": "Bakım ve iyileştirme projeleri için kullanılan tür", + "isActive": true + }, + { + "name": "Geliştirme", + "description": "Yeni ürün ve süreç geliştirme projeleri için kullanılan tür", + "isActive": true + } + ], + "ProjectStatuses": [ + { + "name": "Planlama", + "description": "Projenin planlama aşamasında olduğunu ifade eder", + "isActive": true + }, + { + "name": "Aktif", + "description": "Projenin aktif olarak yürütüldüğünü ifade eder", + "isActive": true + }, + { + "name": "Beklemede", + "description": "Projenin belirli nedenlerle geçici olarak durdurulduğunu ifade eder", + "isActive": true + }, + { + "name": "Tamamlandı", + "description": "Projenin tüm çalışmalarının başarıyla tamamlandığını ifade eder", + "isActive": true + }, + { + "name": "İptal Edildi", + "description": "Projenin iptal edildiğini ifade eder", + "isActive": true + } ] -} +} \ 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 e6ab3ca3..de0c567f 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs @@ -128,6 +128,8 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency private readonly IRepository _bomRepository; private readonly IRepository _bomComponentRepository; private readonly IRepository _bomOperationRepository; + private readonly IRepository _projectTypeRepository; + private readonly IRepository _projectStatusRepository; public TenantDataSeeder( IClock clock, @@ -238,7 +240,9 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency IRepository bomTypeRepository, IRepository bomRepository, IRepository bomComponentRepository, - IRepository bomOperationRepository + IRepository bomOperationRepository, + IRepository projectTypeRepository, + IRepository projectStatusRepository ) { _clock = clock; @@ -351,6 +355,8 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency _bomRepository = bomRepository; _bomComponentRepository = bomComponentRepository; _bomOperationRepository = bomOperationRepository; + _projectTypeRepository = projectTypeRepository; + _projectStatusRepository = projectStatusRepository; } private static IConfigurationRoot BuildConfiguration() @@ -2446,6 +2452,34 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency IsParallel = item.IsParallel }, autoSave: true); } + + foreach (var item in items.ProjectTypes) + { + var exists = await _projectTypeRepository.AnyAsync(x => x.Name == item.Name); + if (exists) + continue; + + await _projectTypeRepository.InsertAsync(new ProjectType + { + Name = item.Name, + Description = item.Description, + IsActive = item.IsActive + }, autoSave: true); + } + + foreach (var item in items.ProjectStatuses) + { + var exists = await _projectStatusRepository.AnyAsync(x => x.Name == item.Name); + if (exists) + continue; + + await _projectStatusRepository.InsertAsync(new ProjectStatus + { + 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 0689cfc5..332ed87d 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs @@ -126,6 +126,24 @@ public class TenantSeederDto public List Boms { get; set; } public List BomComponents { get; set; } public List BomOperations { get; set; } + + //Project + public List ProjectTypes { get; set; } + public List ProjectStatuses { get; set; } +} + +public class ProjectStatusSeedDto +{ + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } +} + +public class ProjectTypeSeedDto +{ + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } } public class BomOperationSeedDto diff --git a/ui/src/views/intranet/Dashboard.tsx b/ui/src/views/intranet/Dashboard.tsx index 6b458ef5..efa8ce80 100644 --- a/ui/src/views/intranet/Dashboard.tsx +++ b/ui/src/views/intranet/Dashboard.tsx @@ -127,7 +127,7 @@ const IntranetDashboard: React.FC = () => { permission: 'App.Intranet.Announcement.Widget', column: 'right', }, - { id: 'priority-tasks', permission: 'App.Projects.Tasks.Widget', column: 'right' }, + { id: 'priority-tasks', permission: 'App.Project.Tasks.Widget', column: 'right' }, { id: 'meal-weekly-menu', permission: 'App.Intranet.Meal.Widget', column: 'right' }, { id: 'shuttle-route', permission: 'App.Intranet.ShuttleRoute.Widget', column: 'right' }, { id: 'leave-management', permission: 'App.Hr.Leave.Widget', column: 'right' },