From 31f632d16a87e139acb516ab45abc66bc80895ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Mon, 4 May 2026 17:35:18 +0300 Subject: [PATCH] =?UTF-8?q?User=20Tan=C4=B1m=C4=B1na=20Departman=20ve=20Jo?= =?UTF-8?q?b=20Position=20eklendi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dto/AssignedDepartmentViewModel.cs | 13 + .../Dto/AssignedJobPoisitionViewModel.cs | 15 + .../Identity/Dto/UserInfoViewModel.cs | 8 +- .../DynamicApi/CreateUpdateUserInput.cs | 2 + .../LookUpQueryValues.cs | 7 +- .../Identity/PlatformIdentityAppService.cs | 89 +++-- .../ListForms/ListFormDynamicApiAppService.cs | 10 + .../Seeds/LanguagesData.json | 18 + .../Seeds/ListFormSeeder_Administration.cs | 279 ++++++------- .../PlatformConsts.cs | 2 + .../PlatformModuleExtensionConfigurator.cs | 18 +- .../Entities/Tenant/Definitions/Department.cs | 2 - .../Tenant/Definitions/JobPosition.cs | 2 - .../Extensions/AbpIdentityUserExtensions.cs | 12 +- .../PlatformEfCoreEntityExtensionMappings.cs | 4 +- ....cs => 20260504141857_Initial.Designer.cs} | 16 +- ...5_Initial.cs => 20260504141857_Initial.cs} | 6 +- .../PlatformDbContextModelSnapshot.cs | 14 +- .../Seeds/TenantData.json | 14 +- .../Seeds/TenantDataSeeder.cs | 23 +- ui/src/proxy/admin/models.ts | 17 + ui/src/services/identity.service.ts | 7 + ui/src/types/shared.ts | 6 + .../views/admin/user-management/Details.tsx | 372 +++++++++++------- 24 files changed, 586 insertions(+), 370 deletions(-) create mode 100644 api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedDepartmentViewModel.cs create mode 100644 api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedJobPoisitionViewModel.cs rename api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/{20260504085315_Initial.Designer.cs => 20260504141857_Initial.Designer.cs} (99%) rename api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/{20260504085315_Initial.cs => 20260504141857_Initial.cs} (99%) diff --git a/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedDepartmentViewModel.cs b/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedDepartmentViewModel.cs new file mode 100644 index 0000000..032922d --- /dev/null +++ b/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedDepartmentViewModel.cs @@ -0,0 +1,13 @@ +using System; + +namespace Sozsoft.Platform.Identity.Dto; + +public class AssignedDepartmentViewModel +{ + public Guid Id { get; set; } + + public string Name { get; set; } + + public bool IsAssigned { get; set; } +} + diff --git a/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedJobPoisitionViewModel.cs b/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedJobPoisitionViewModel.cs new file mode 100644 index 0000000..f8dc541 --- /dev/null +++ b/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedJobPoisitionViewModel.cs @@ -0,0 +1,15 @@ +using System; + +namespace Sozsoft.Platform.Identity.Dto; + +public class AssignedJobPoisitionViewModel +{ + public Guid Id { get; set; } + + public string Name { get; set; } + + public Guid DepartmentId { get; set; } + + public bool IsAssigned { get; set; } +} + diff --git a/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/UserInfoViewModel.cs b/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/UserInfoViewModel.cs index 7525fe7..1e7a5bf 100644 --- a/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/UserInfoViewModel.cs +++ b/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/UserInfoViewModel.cs @@ -41,7 +41,11 @@ public class UserInfoViewModel: ExtensibleObject public AssignedClaimViewModel[] Claims { get; set; } public AssignedWorkHourViewModel[] WorkHours { get; set; } + + public AssignedDepartmentViewModel[] Departments { get; set; } + public AssignedJobPoisitionViewModel[] JobPositions { get; set; } + public bool LockUser { get; set; } public DateTimeOffset? LastPasswordChangeTime { get; set; } @@ -54,6 +58,6 @@ public class UserInfoViewModel: ExtensibleObject public DateTimeOffset? CreationTime { get; set; } public DateTimeOffset? LastModificationTime { get; set; } public string WorkHour { get; set; } - public string DepartmentId { get; set; } - public string JobPositionId { get; set; } + public Guid DepartmentId { get; set; } + public Guid JobPositionId { get; set; } } diff --git a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/DynamicApi/CreateUpdateUserInput.cs b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/DynamicApi/CreateUpdateUserInput.cs index a582e1e..f1c5d1f 100644 --- a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/DynamicApi/CreateUpdateUserInput.cs +++ b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/DynamicApi/CreateUpdateUserInput.cs @@ -11,6 +11,8 @@ public class CreateUpdateUserInput public string PhoneNumber { get; set; } public string Password { get; set; } public string WorkHour { get; set; } + public string DepartmentId { get; set; } + public string JobPositionId { get; set; } public bool? IsActive { get; set; } public bool? LockoutEnabled { get; set; } public string[] RoleNames { get; set; } diff --git a/api/src/Sozsoft.Platform.Application.Contracts/LookUpQueryValues.cs b/api/src/Sozsoft.Platform.Application.Contracts/LookUpQueryValues.cs index 8ab926c..5138b85 100644 --- a/api/src/Sozsoft.Platform.Application.Contracts/LookUpQueryValues.cs +++ b/api/src/Sozsoft.Platform.Application.Contracts/LookUpQueryValues.cs @@ -213,9 +213,7 @@ public static class LookupQueryValues $"\"Id\" AS \"Key\", " + $"\"Name\" AS \"Name\" " + $"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.Department))}\" " + - $"WHERE " + - $"(\"BranchId\" = @param0 OR @param0 IS NULL) " + - $"AND \"IsDeleted\" = 'false' " + + $"WHERE \"IsDeleted\" = 'false' " + $"ORDER BY \"Name\";"; public static string JobPositionValues = @@ -224,8 +222,7 @@ public static class LookupQueryValues $"\"Name\" AS \"Name\" " + $"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.JobPosition))}\" " + $"WHERE " + - $"(\"BranchId\" = @param0 OR @param0 IS NULL) " + - $"AND (\"DepartmentId\" = @param1 OR @param1 IS NULL) " + + $"(\"DepartmentId\" = @param0 OR @param0 IS NULL) " + $"AND \"IsDeleted\" = 'false' " + $"ORDER BY \"Name\";"; } diff --git a/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs b/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs index bb5d0b3..a10182e 100644 --- a/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs +++ b/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs @@ -30,6 +30,8 @@ public class PlatformIdentityAppService : ApplicationService public IGuidGenerator guidGenerator { get; } public IdentityUserManager UserManager { get; set; } public IRepository workHourRepository { get; } + public IRepository departmentRepository { get; } + public IRepository jobPositionRepository { get; } public PlatformIdentityAppService( IIdentityUserAppService identityUserAppService, @@ -41,6 +43,8 @@ public class PlatformIdentityAppService : ApplicationService IRepository branchUsersRepository, IRepository claimTypesRepository, IRepository workHourRepository, + IRepository departmentRepository, + IRepository jobPositionRepository, IGuidGenerator guidGenerator ) { @@ -49,6 +53,8 @@ public class PlatformIdentityAppService : ApplicationService this.identitySessionRepository = identitySessionRepository; this.openIddictTokenManager = openIddictTokenManager; this.workHourRepository = workHourRepository; + this.departmentRepository = departmentRepository; + this.jobPositionRepository = jobPositionRepository; this.permissionRepository = permissionRepository; this.branchRepository = branchRepository; this.branchUsersRepository = branchUsersRepository; @@ -106,7 +112,24 @@ public class PlatformIdentityAppService : ApplicationService Name = workHour.Name, IsAssigned = workHourList.Contains(workHour) }).ToArray(); - + + var departmentList = await departmentRepository.GetListAsync(); + var departments = (await departmentRepository.GetListAsync()).Select(department => new AssignedDepartmentViewModel + { + Id = department.Id, + Name = department.Name, + IsAssigned = departmentList.Contains(department) + }).ToArray(); + + var jobPositionList = await jobPositionRepository.GetListAsync(); + var jobPositions = (await jobPositionRepository.GetListAsync()).Select(jobPosition => new AssignedJobPoisitionViewModel + { + Id = jobPosition.Id, + Name = jobPosition.Name, + DepartmentId = jobPosition.DepartmentId, + IsAssigned = jobPositionList.Contains(jobPosition) + }).ToArray(); + return new UserInfoViewModel() { Id = user.Id, @@ -115,6 +138,8 @@ public class PlatformIdentityAppService : ApplicationService Surname = user.Surname, Roles = roles, Branches = branches, + Departments = departments, + JobPositions = jobPositions, Claims = claims, WorkHours = workHours, Email = user.Email, @@ -143,6 +168,37 @@ public class PlatformIdentityAppService : ApplicationService }; } + public async Task UpdatePermissionAsync(UserInfoViewModel UserInfo) + { + var roles = UserInfo.Roles.Where(r => r.IsAssigned).Select(r => r.Name).ToArray(); + + var user = await UserManager.GetByIdAsync(UserInfo.Id); + await UserManager.SetRolesAsync(user, roles); + + //Braches bu kısımda güncelleniyor. + var existingBranches = await branchUsersRepository.GetListAsync(x => x.UserId == user.Id); + foreach (var item in existingBranches) + { + await branchUsersRepository.DeleteAsync(item); + } + + // 2. Yeni atamaları ekle + var assignedBranchIds = UserInfo.Branches + .Where(b => b.IsAssigned) + .Select(b => b.Id) + .ToList(); + + foreach (var branchId in assignedBranchIds) + { + var branchUser = new BranchUsers + { + UserId = user.Id, + BranchId = branchId + }; + await branchUsersRepository.InsertAsync(branchUser); + } + } + public async Task UpdateLockoutAsync(UserInfoViewModel UserInfo) { var user = await UserManager.GetByIdAsync(UserInfo.Id); @@ -181,10 +237,7 @@ public class PlatformIdentityAppService : ApplicationService public async Task UpdateUserAsync(UserInfoViewModel UserInfo) { - var roles = UserInfo.Roles.Where(r => r.IsAssigned).Select(r => r.Name).ToArray(); - var user = await UserManager.GetByIdAsync(UserInfo.Id); - await UserManager.SetRolesAsync(user, roles); user.Name = UserInfo.Name; user.Surname = UserInfo.Surname; @@ -196,29 +249,6 @@ public class PlatformIdentityAppService : ApplicationService user.SetJobPositionId(UserInfo.JobPositionId); await UserManager.UpdateAsync(user); - - //Braches bu kısımda güncelleniyor. - var existingBranches = await branchUsersRepository.GetListAsync(x => x.UserId == user.Id); - foreach (var item in existingBranches) - { - await branchUsersRepository.DeleteAsync(item); - } - - // 2. Yeni atamaları ekle - var assignedBranchIds = UserInfo.Branches - .Where(b => b.IsAssigned) - .Select(b => b.Id) - .ToList(); - - foreach (var branchId in assignedBranchIds) - { - var branchUser = new BranchUsers - { - UserId = user.Id, - BranchId = branchId - }; - await branchUsersRepository.InsertAsync(branchUser); - } } public async Task> GetPermissionList() @@ -243,11 +273,6 @@ public class PlatformIdentityAppService : ApplicationService user.Claims.Remove(claim); } - /// - /// Kullanıcıyı anlık olarak oturumdan atar: - /// 1. AbpSessions kaydını siler → concurrent lisans slotunu serbest bırakır. - /// 2. OpenIddict tokenlarını revoke eder → access token anında geçersiz olur. - /// public async Task KickUserAsync(Guid userId) { using (CurrentTenant.Change(CurrentTenant.Id)) diff --git a/api/src/Sozsoft.Platform.Application/ListForms/ListFormDynamicApiAppService.cs b/api/src/Sozsoft.Platform.Application/ListForms/ListFormDynamicApiAppService.cs index 7ebc620..07b8060 100644 --- a/api/src/Sozsoft.Platform.Application/ListForms/ListFormDynamicApiAppService.cs +++ b/api/src/Sozsoft.Platform.Application/ListForms/ListFormDynamicApiAppService.cs @@ -47,6 +47,8 @@ public class ListFormDynamicApiAppService : PlatformAppService, IListFormDynamic RoleNames = [], //input.Data.RoleNames, }; user.SetProperty(PlatformConsts.AbpIdentity.User.WorkHour, input.Data.WorkHour); + user.SetProperty(PlatformConsts.AbpIdentity.User.DepartmentId, input.Data.DepartmentId); + user.SetProperty(PlatformConsts.AbpIdentity.User.JobPositionId, input.Data.JobPositionId); await identityUserAppService.CreateAsync(user); } @@ -79,6 +81,14 @@ public class ListFormDynamicApiAppService : PlatformAppService, IListFormDynamic { user.SetProperty(PlatformConsts.AbpIdentity.User.WorkHour, input.Data.WorkHour); } + if (input.Data.DepartmentId != null) + { + user.SetProperty(PlatformConsts.AbpIdentity.User.DepartmentId, input.Data.DepartmentId); + } + if (input.Data.JobPositionId != null) + { + user.SetProperty(PlatformConsts.AbpIdentity.User.JobPositionId, input.Data.JobPositionId); + } await identityUserAppService.UpdateAsync(id, user); } diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json b/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json index 8149abb..a79d184 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json @@ -2712,6 +2712,24 @@ "en": "User Information", "tr": "Kullanıcı Bilgileri" }, + { + "resourceName": "Platform", + "key": "Abp.Identity.User.SavePermission", + "en": "Permissions saved.", + "tr": "Yetkiler kaydedildi." + }, + { + "resourceName": "Platform", + "key": "Abp.Identity.User.SaveLockout", + "en": "Lockout settings saved.", + "tr": "Kilit ayarları kaydedildi." + }, + { + "resourceName": "Platform", + "key": "Abp.Identity.User.Permissions", + "en": "User Permissions", + "tr": "Kullanıcı Yetkileri" + }, { "resourceName": "Platform", "key": "Abp.Identity.User.UserInformation.RoleManagement", diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Administration.cs b/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Administration.cs index e2b74ee..403114e 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Administration.cs +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Administration.cs @@ -114,7 +114,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 1, Visible = false, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(AbpIdentity.PermissionGroups.Create, AbpIdentity.PermissionGroups.Default, AbpIdentity.PermissionGroups.Update, true, true, false), PivotSettingsJson = DefaultPivotSettingsJson @@ -129,7 +129,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 2, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(AbpIdentity.PermissionGroups.Create, AbpIdentity.PermissionGroups.Default, AbpIdentity.PermissionGroups.Update, true, true, false), @@ -145,7 +145,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 3, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(AbpIdentity.PermissionGroups.Create, AbpIdentity.PermissionGroups.Default, AbpIdentity.PermissionGroups.Update, true, true, false), @@ -161,7 +161,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 4, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(AbpIdentity.PermissionGroups.Create, AbpIdentity.PermissionGroups.Default, AbpIdentity.PermissionGroups.Update, true, true, false), @@ -484,7 +484,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 0, Visible = false, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -500,7 +500,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 1, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -517,7 +517,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 2, Visible = true, IsActive = true, - + LookupJson = JsonSerializer.Serialize(new LookupDto { DataSourceType = UiLookupDataSourceTypeEnum.StaticData, @@ -545,7 +545,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 3, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -561,7 +561,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 4, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -577,7 +577,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 5, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -594,7 +594,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 6, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -611,7 +611,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 7, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -710,7 +710,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 1, Visible = true, IsActive = true, - + SortIndex = 1, SortDirection = GridColumnOptions.SortOrderAsc, AllowSearch = true, @@ -731,7 +731,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 2, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Roles.Create, PlatformConsts.IdentityPermissions.Roles.Default, PlatformConsts.IdentityPermissions.Roles.Update, true, true, false), PivotSettingsJson = DefaultPivotSettingsJson @@ -748,7 +748,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 3, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Roles.Create, PlatformConsts.IdentityPermissions.Roles.Default, PlatformConsts.IdentityPermissions.Roles.Update, true, true, false), PivotSettingsJson = DefaultPivotSettingsJson @@ -802,9 +802,11 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep new EditingFormItemDto { Order=2, DataField="Name", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=3, DataField="Surname", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=4, DataField="PhoneNumber", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, - new EditingFormItemDto { Order=5, DataField="WorkHour", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxSelectBox }, - new EditingFormItemDto { Order=6, DataField="Password", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, - new EditingFormItemDto { Order=7, DataField="IsActive", ColSpan=1, EditorType2=EditorTypes.dxCheckBox }, + new EditingFormItemDto { Order=5, DataField="WorkHour", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions = EditorOptionValues.ShowClearButton }, + new EditingFormItemDto { Order=6, DataField="DepartmentId", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions = EditorOptionValues.ShowClearButton }, + new EditingFormItemDto { Order=7, DataField="JobPositionId", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions = EditorOptionValues.ShowClearButton }, + new EditingFormItemDto { Order=8, DataField="Password", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, + new EditingFormItemDto { Order=9, DataField="IsActive", ColSpan=1, EditorType2=EditorTypes.dxCheckBox }, ]} }), InsertServiceAddress = "list-form-dynamic-api/user-insert", @@ -896,7 +898,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 1, Visible = false, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false), PivotSettingsJson = DefaultPivotSettingsJson @@ -914,7 +916,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 2, Visible = true, IsActive = true, - + AllowSearch = true, ValidationRuleJson = DefaultValidationRuleEmailRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, @@ -934,7 +936,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 3, Visible = true, IsActive = true, - + AllowSearch = true, ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, @@ -954,7 +956,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 4, Visible = true, IsActive = true, - + AllowSearch = true, ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, @@ -974,7 +976,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 5, Visible = true, IsActive = true, - + AllowSearch = true, EditorOptions = EditorOptionValues.PhoneEditorOptions, ColumnCustomizationJson = DefaultColumnCustomizationJson, @@ -995,13 +997,72 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.WorkHour), "Name", "Name"), Visible = true, IsActive = true, - + AllowSearch = true, ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false), PivotSettingsJson = DefaultPivotSettingsJson }, + + new ListFormField + { + ListFormCode = listForm.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "DepartmentId", + CaptionName = "App.Listform.ListformField.DepartmentId", + Width = 150, + ListOrderNo = 7, + LookupJson = JsonSerializer.Serialize(new LookupDto { + DataSourceType = UiLookupDataSourceTypeEnum.Query, + DisplayExpr = "Name", + ValueExpr = "Key", + LookupQuery = LookupQueryValues.DepartmentValues, + CascadeEmptyFields = "JobPositionId" + }), + Visible = true, + IsActive = true, + + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false), + PivotSettingsJson = DefaultPivotSettingsJson + }, + + new ListFormField + { + ListFormCode = listForm.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "JobPositionId", + CaptionName = "App.Listform.ListformField.JobPositionId", + Width = 150, + ListOrderNo = 8, + LookupJson = JsonSerializer.Serialize(new LookupDto { + DataSourceType = UiLookupDataSourceTypeEnum.Query, + DisplayExpr = "Name", + ValueExpr = "Key", + LookupQuery = LookupQueryValues.JobPositionValues, + CascadeRelationField = "DepartmentId", + CascadeFilterOperator="=", + CascadeParentFields = "DepartmentId", + }), + Visible = true, + IsActive = true, + + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new ListFormField { ListFormCode = listForm.ListFormCode, @@ -1012,10 +1073,10 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep FieldName = "IsActive", CaptionName = "App.Listform.ListformField.IsActive", Width = 100, - ListOrderNo = 7, + ListOrderNo = 9, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false), PivotSettingsJson = DefaultPivotSettingsJson @@ -1030,10 +1091,10 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep FieldName = "IsVerified", CaptionName = "App.Listform.ListformField.IsVerified", Width = 100, - ListOrderNo = 8, + ListOrderNo = 10, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false), PivotSettingsJson = DefaultPivotSettingsJson @@ -1048,10 +1109,10 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep FieldName = "EmailConfirmed", CaptionName = "App.Listform.ListformField.EmailConfirmed", Width = 100, - ListOrderNo = 9, + ListOrderNo = 11, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false), PivotSettingsJson = DefaultPivotSettingsJson @@ -1066,10 +1127,10 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep FieldName = "TwoFactorEnabled", CaptionName = "App.Listform.ListformField.TwoFactorEnabled", Width = 100, - ListOrderNo = 10, + ListOrderNo = 12, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false), PivotSettingsJson = DefaultPivotSettingsJson @@ -1084,10 +1145,10 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep FieldName = "Password", CaptionName = "App.Listform.ListformField.Password", Width = 100, - ListOrderNo = 11, + ListOrderNo = 13, Visible = false, IsActive = false, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false), PivotSettingsJson = DefaultPivotSettingsJson @@ -1295,7 +1356,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep #endregion } #endregion - + #region Report Categories listFormName = AppCodes.Reports.Categories; if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName)) @@ -1361,7 +1422,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 1, Visible = false, IsActive = true, - + ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -1378,7 +1439,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 2, Visible = true, IsActive = true, - + AllowSearch = true, ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, @@ -1396,7 +1457,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 3, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -1413,7 +1474,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 4, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -1515,7 +1576,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 1, Visible = false, IsActive = true, - + ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -1533,7 +1594,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 2, Visible = true, IsActive = true, - + SortIndex = 1, SortDirection = GridColumnOptions.SortOrderAsc, AllowSearch = true, @@ -1552,7 +1613,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 3, Visible = true, IsActive = true, - + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.ReportCategory), "Id", "Name"), ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, @@ -1569,7 +1630,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 4, Visible = true, IsActive = true, - + LookupJson = JsonSerializer.Serialize(new LookupDto { DataSourceType = UiLookupDataSourceTypeEnum.StaticData, DisplayExpr = "name", @@ -1595,7 +1656,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 5, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -1611,7 +1672,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 6, Visible = false, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -1620,7 +1681,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep #endregion } #endregion - + #region Sector listFormName = AppCodes.Definitions.Sector; if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName)) @@ -1685,7 +1746,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 1, Visible = false, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -1701,7 +1762,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 2, Visible = true, IsActive = true, - + SortIndex = 1, SortDirection = GridColumnOptions.SortOrderAsc, AllowSearch = true, @@ -1796,7 +1857,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 1, Visible = false, IsActive = true, - + ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -1812,7 +1873,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 2, Visible = true, IsActive = true, - + SortIndex = 1, SortDirection = GridColumnOptions.SortOrderAsc, AllowSearch = true, @@ -1832,7 +1893,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 3, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson, @@ -1848,7 +1909,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 4, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson, @@ -1866,7 +1927,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 5, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -1882,7 +1943,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 6, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -1898,7 +1959,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 7, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -1914,7 +1975,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 8, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -1930,7 +1991,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 9, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -1946,7 +2007,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 10, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -1962,7 +2023,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 11, Visible = true, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -2036,7 +2097,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 1, Visible = false, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -2051,7 +2112,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 2, Visible = true, IsActive = true, - + SortIndex = 1, SortDirection = GridColumnOptions.SortOrderAsc, AllowSearch = true, @@ -2081,7 +2142,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 3, Visible = true, IsActive = true, - + AllowSearch = true, LookupJson = JsonSerializer.Serialize(new LookupDto { DataSourceType = UiLookupDataSourceTypeEnum.Query, @@ -2104,7 +2165,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 4, Visible = true, IsActive = true, - + AllowSearch = true, ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, @@ -2115,7 +2176,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep #endregion } #endregion - + #region Sessions listFormName = AppCodes.IdentityManagement.Sessions; if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName)) @@ -2176,7 +2237,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 1, Visible = false, IsActive = true, - + ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson @@ -2191,7 +2252,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 2, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -2207,7 +2268,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 3, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -2224,7 +2285,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 4, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -2241,7 +2302,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 5, Visible = true, IsActive = true, - + AllowSearch = true, LookupJson = JsonSerializer.Serialize(new LookupDto { DataSourceType = UiLookupDataSourceTypeEnum.Query, @@ -2264,7 +2325,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 6, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -2281,7 +2342,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 7, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -2298,7 +2359,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ListOrderNo = 8, Visible = true, IsActive = true, - + AllowSearch = true, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -2355,9 +2416,8 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep new() { Order = 1, ColCount = 1, ColSpan = 1, ItemType = "group", Items = [ - new EditingFormItemDto { Order = 1, DataField = "BranchId", ColSpan = 1, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton }, - new EditingFormItemDto { Order = 2, DataField = "Name", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox }, - new EditingFormItemDto { Order = 3, DataField = "ParentId", ColSpan = 1, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton } + new EditingFormItemDto { Order = 1, DataField = "Name", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 2, DataField = "ParentId", ColSpan = 1, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton } ] } }), @@ -2398,7 +2458,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson - }, + }, new() { ListFormCode = listForm.ListFormCode, @@ -2416,32 +2476,6 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep DisplayExpr = "Name", ValueExpr = "Key", LookupQuery = LookupQueryValues.DepartmentValues, - CascadeRelationField = "BranchId", - CascadeFilterOperator="=", - CascadeParentFields = "BranchId", - }), - ColumnCustomizationJson = DefaultColumnCustomizationJson, - PermissionJson = DefaultFieldPermissionJson(listForm.Name), - PivotSettingsJson = DefaultPivotSettingsJson - }, - new() - { - ListFormCode = listForm.ListFormCode, - CultureName = LanguageCodes.En, - SourceDbType = DbType.Guid, - FieldName = "BranchId", - CaptionName = "App.Listform.ListformField.BranchId", - Width = 200, - ListOrderNo = 4, - Visible = true, - IsActive = true, - AllowSearch = true, - LookupJson = JsonSerializer.Serialize(new LookupDto { - DataSourceType = UiLookupDataSourceTypeEnum.Query, - DisplayExpr = "Name", - ValueExpr = "Key", - LookupQuery = LookupQueryValues.BranchValues, - CascadeEmptyFields = "ParentId" }), ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -2451,7 +2485,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep #endregion } #endregion - + #region JobPosition listFormName = AppCodes.Definitions.JobPosition; if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName)) @@ -2498,10 +2532,9 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep new() { Order = 1, ColCount = 1, ColSpan = 1, ItemType = "group", Items = [ - new EditingFormItemDto { Order = 1, DataField = "BranchId", ColSpan = 1, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton }, - new EditingFormItemDto { Order = 2, DataField = "DepartmentId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton }, - new EditingFormItemDto { Order = 3, DataField = "Name", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox }, - new EditingFormItemDto { Order = 4, DataField = "ParentId", ColSpan = 1, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton }, + new EditingFormItemDto { Order = 1, DataField = "DepartmentId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton }, + new EditingFormItemDto { Order = 2, DataField = "Name", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 3, DataField = "ParentId", ColSpan = 1, EditorType2 = EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton }, ] } }), @@ -2560,9 +2593,9 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep DisplayExpr = "Name", ValueExpr = "Key", LookupQuery = LookupQueryValues.JobPositionValues, - CascadeRelationField = "BranchId", + CascadeRelationField = "DepartmentId", CascadeFilterOperator="=", - CascadeParentFields = "BranchId,DepartmentId", + CascadeParentFields = "DepartmentId", }), ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), @@ -2585,39 +2618,13 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep DisplayExpr = "Name", ValueExpr = "Key", LookupQuery = LookupQueryValues.DepartmentValues, - CascadeRelationField = "BranchId", - CascadeFilterOperator="=", - CascadeParentFields = "BranchId", - CascadeEmptyFields = "ParentId" + CascadeEmptyFields = "ParentId" }), ValidationRuleJson = DefaultValidationRuleRequiredJson, ColumnCustomizationJson = DefaultColumnCustomizationJson, PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson }, - new() - { - ListFormCode = listForm.ListFormCode, - CultureName = LanguageCodes.En, - SourceDbType = DbType.Guid, - FieldName = "BranchId", - CaptionName = "App.Listform.ListformField.BranchId", - Width = 0, - ListOrderNo = 5, - Visible = true, - IsActive = true, - AllowSearch = true, - LookupJson = JsonSerializer.Serialize(new LookupDto { - DataSourceType = UiLookupDataSourceTypeEnum.Query, - DisplayExpr = "Name", - ValueExpr = "Key", - LookupQuery = LookupQueryValues.BranchValues, - CascadeEmptyFields = "DepartmentId,ParentId" - }), - ColumnCustomizationJson = DefaultColumnCustomizationJson, - PermissionJson = DefaultFieldPermissionJson(listForm.Name), - PivotSettingsJson = DefaultPivotSettingsJson - }, ]); #endregion } diff --git a/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs b/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs index ed3cb67..3b63c3e 100644 --- a/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs +++ b/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs @@ -139,6 +139,8 @@ public static class PlatformConsts public const string AdminPhoneNumberDefaultValue = "05449476346"; public const string AdminRocketUsernameDefaultValue = "sedat.ozturk"; public const string AdminWorkHourDefaultValue = "00:00-23:59"; + public const string AdminDepartmentIdDefaultValue = "Yönetim"; + public const string AdminJobPositionIdDefaultValue = "Genel Müdür"; } public static class OrganizationUnits diff --git a/api/src/Sozsoft.Platform.Domain.Shared/PlatformModuleExtensionConfigurator.cs b/api/src/Sozsoft.Platform.Domain.Shared/PlatformModuleExtensionConfigurator.cs index fc13db0..f941e4a 100644 --- a/api/src/Sozsoft.Platform.Domain.Shared/PlatformModuleExtensionConfigurator.cs +++ b/api/src/Sozsoft.Platform.Domain.Shared/PlatformModuleExtensionConfigurator.cs @@ -75,7 +75,21 @@ public static class PlatformModuleExtensionConfigurator { property.DisplayName = new LocalizableString(typeof(PlatformResource), PlatformConsts.AbpIdentity.User.RocketUsername); }); - + + user.AddOrUpdateProperty( + PlatformConsts.AbpIdentity.User.DepartmentId, + property => + { + property.DisplayName = new LocalizableString(typeof(PlatformResource), PlatformConsts.AbpIdentity.User.DepartmentId); + }); + + user.AddOrUpdateProperty( + PlatformConsts.AbpIdentity.User.JobPositionId, + property => + { + property.DisplayName = new LocalizableString(typeof(PlatformResource), PlatformConsts.AbpIdentity.User.JobPositionId); + }); + user.AddOrUpdateProperty( PlatformConsts.AbpIdentity.User.WorkHour, property => @@ -96,7 +110,7 @@ public static class PlatformModuleExtensionConfigurator entity.AddOrUpdateProperty("MaxConcurrentUsers"); }); }); - + /* You can configure extra properties for the * entities defined in the modules used by your application. * diff --git a/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/Department.cs b/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/Department.cs index 8ac510b..e2e012c 100644 --- a/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/Department.cs +++ b/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/Department.cs @@ -13,8 +13,6 @@ public class Department : FullAuditedEntity, IMultiTenant public Guid? ParentId { get; set; } - public Guid? BranchId { get; set; } - Guid? IMultiTenant.TenantId => TenantId; public ICollection JobPositions { get; set; } diff --git a/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/JobPosition.cs b/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/JobPosition.cs index 070c2b3..a3f74e7 100644 --- a/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/JobPosition.cs +++ b/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/JobPosition.cs @@ -10,8 +10,6 @@ public class JobPosition : FullAuditedEntity, IMultiTenant public string Name { get; set; } - public Guid? BranchId { get; set; } - public Guid DepartmentId { get; set; } public Department Department { get; set; } diff --git a/api/src/Sozsoft.Platform.Domain/Extensions/AbpIdentityUserExtensions.cs b/api/src/Sozsoft.Platform.Domain/Extensions/AbpIdentityUserExtensions.cs index 560c286..26adc97 100644 --- a/api/src/Sozsoft.Platform.Domain/Extensions/AbpIdentityUserExtensions.cs +++ b/api/src/Sozsoft.Platform.Domain/Extensions/AbpIdentityUserExtensions.cs @@ -52,23 +52,23 @@ public static class AbpIdentityUserExtensions } //DepartmentId - public static void SetDepartmentId(this IdentityUser user, string departmentId) + public static void SetDepartmentId(this IdentityUser user, Guid departmentId) { user.SetProperty(PlatformConsts.AbpIdentity.User.DepartmentId, departmentId); } - public static string GetDepartmentId(this IdentityUser user) + public static Guid GetDepartmentId(this IdentityUser user) { - return user.GetProperty(PlatformConsts.AbpIdentity.User.DepartmentId); + return user.GetProperty(PlatformConsts.AbpIdentity.User.DepartmentId); } //JobPositionId - public static void SetJobPositionId(this IdentityUser user, string jobPositionId) + public static void SetJobPositionId(this IdentityUser user, Guid jobPositionId) { user.SetProperty(PlatformConsts.AbpIdentity.User.JobPositionId, jobPositionId); } - public static string GetJobPositionId(this IdentityUser user) + public static Guid GetJobPositionId(this IdentityUser user) { - return user.GetProperty(PlatformConsts.AbpIdentity.User.JobPositionId); + return user.GetProperty(PlatformConsts.AbpIdentity.User.JobPositionId); } } diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformEfCoreEntityExtensionMappings.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformEfCoreEntityExtensionMappings.cs index 44083be..34a3b9f 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformEfCoreEntityExtensionMappings.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformEfCoreEntityExtensionMappings.cs @@ -56,7 +56,7 @@ public static class PlatformEfCoreEntityExtensionMappings ); ObjectExtensionManager.Instance - .MapEfCoreProperty( + .MapEfCoreProperty( PlatformConsts.AbpIdentity.User.DepartmentId, (entityBuilder, propertyBuilder) => { @@ -65,7 +65,7 @@ public static class PlatformEfCoreEntityExtensionMappings ); ObjectExtensionManager.Instance - .MapEfCoreProperty( + .MapEfCoreProperty( PlatformConsts.AbpIdentity.User.JobPositionId, (entityBuilder, propertyBuilder) => { diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504085315_Initial.Designer.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504141857_Initial.Designer.cs similarity index 99% rename from api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504085315_Initial.Designer.cs rename to api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504141857_Initial.Designer.cs index 6955c77..60fee9c 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504085315_Initial.Designer.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504141857_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace Sozsoft.Platform.Migrations { [DbContext(typeof(PlatformDbContext))] - [Migration("20260504085315_Initial")] + [Migration("20260504141857_Initial")] partial class Initial { /// @@ -1649,9 +1649,6 @@ namespace Sozsoft.Platform.Migrations b.Property("Id") .HasColumnType("uniqueidentifier"); - b.Property("BranchId") - .HasColumnType("uniqueidentifier"); - b.Property("CreationTime") .HasColumnType("datetime2") .HasColumnName("CreationTime"); @@ -2105,9 +2102,6 @@ namespace Sozsoft.Platform.Migrations b.Property("Id") .HasColumnType("uniqueidentifier"); - b.Property("BranchId") - .HasColumnType("uniqueidentifier"); - b.Property("CreationTime") .HasColumnType("datetime2") .HasColumnName("CreationTime"); @@ -5078,8 +5072,8 @@ namespace Sozsoft.Platform.Migrations .HasColumnType("datetime2") .HasColumnName("DeletionTime"); - b.Property("DepartmentId") - .HasColumnType("nvarchar(max)"); + b.Property("DepartmentId") + .HasColumnType("uniqueidentifier"); b.Property("Email") .IsRequired() @@ -5122,8 +5116,8 @@ namespace Sozsoft.Platform.Migrations .HasColumnType("bit") .HasDefaultValue(false); - b.Property("JobPositionId") - .HasColumnType("nvarchar(max)"); + b.Property("JobPositionId") + .HasColumnType("uniqueidentifier"); b.Property("LastModificationTime") .HasColumnType("datetime2") diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504085315_Initial.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504141857_Initial.cs similarity index 99% rename from api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504085315_Initial.cs rename to api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504141857_Initial.cs index 5666b54..5159cb9 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504085315_Initial.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260504141857_Initial.cs @@ -417,9 +417,9 @@ namespace Sozsoft.Platform.Migrations ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - DepartmentId = table.Column(type: "nvarchar(max)", nullable: true), + DepartmentId = table.Column(type: "uniqueidentifier", nullable: false), IsVerified = table.Column(type: "bit", nullable: false, defaultValue: false), - JobPositionId = table.Column(type: "nvarchar(max)", nullable: true), + JobPositionId = table.Column(type: "uniqueidentifier", nullable: false), LoginEndDate = table.Column(type: "datetime2", nullable: true), RocketUsername = table.Column(type: "nvarchar(max)", nullable: true), WorkHour = table.Column(type: "nvarchar(max)", nullable: true), @@ -446,7 +446,6 @@ namespace Sozsoft.Platform.Migrations TenantId = table.Column(type: "uniqueidentifier", nullable: true), Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), ParentId = table.Column(type: "uniqueidentifier", nullable: true), - BranchId = table.Column(type: "uniqueidentifier", nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -1793,7 +1792,6 @@ namespace Sozsoft.Platform.Migrations Id = table.Column(type: "uniqueidentifier", nullable: false), TenantId = table.Column(type: "uniqueidentifier", nullable: true), Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - BranchId = table.Column(type: "uniqueidentifier", nullable: true), DepartmentId = table.Column(type: "uniqueidentifier", nullable: false), ParentId = table.Column(type: "uniqueidentifier", nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs index 1be7a1a..038ef66 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs @@ -1646,9 +1646,6 @@ namespace Sozsoft.Platform.Migrations b.Property("Id") .HasColumnType("uniqueidentifier"); - b.Property("BranchId") - .HasColumnType("uniqueidentifier"); - b.Property("CreationTime") .HasColumnType("datetime2") .HasColumnName("CreationTime"); @@ -2102,9 +2099,6 @@ namespace Sozsoft.Platform.Migrations b.Property("Id") .HasColumnType("uniqueidentifier"); - b.Property("BranchId") - .HasColumnType("uniqueidentifier"); - b.Property("CreationTime") .HasColumnType("datetime2") .HasColumnName("CreationTime"); @@ -5075,8 +5069,8 @@ namespace Sozsoft.Platform.Migrations .HasColumnType("datetime2") .HasColumnName("DeletionTime"); - b.Property("DepartmentId") - .HasColumnType("nvarchar(max)"); + b.Property("DepartmentId") + .HasColumnType("uniqueidentifier"); b.Property("Email") .IsRequired() @@ -5119,8 +5113,8 @@ namespace Sozsoft.Platform.Migrations .HasColumnType("bit") .HasDefaultValue(false); - b.Property("JobPositionId") - .HasColumnType("nvarchar(max)"); + b.Property("JobPositionId") + .HasColumnType("uniqueidentifier"); b.Property("LastModificationTime") .HasColumnType("datetime2") diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantData.json b/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantData.json index b9cba22..8e23568 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantData.json +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantData.json @@ -1246,57 +1246,47 @@ ], "Departments": [ { - "Name": "Yönetim", - "BranchCode": "DEMO" + "Name": "Yönetim" }, { "Name": "Üretim", - "BranchCode": "DEMO", "ParentName": "Yönetim" }, { "Name": "Satış", - "BranchCode": "DEMO", "ParentName": "Yönetim" }, { "Name": "Finans", - "BranchCode": "DEMO", "ParentName": "Yönetim" }, { "Name": "Muhasebe", - "BranchCode": "DEMO", "ParentName": "Finans" }, { "Name": "Bilgi İşlem", - "BranchCode": "DEMO", "ParentName": "Yönetim" } ], "JobPositions": [ { "DepartmentName": "Yönetim", - "Name": "Genel Müdür", - "BranchCode": "DEMO" + "Name": "Genel Müdür" }, { "DepartmentName": "Yönetim", "Name": "Genel Müdür Yardımcısı", - "BranchCode": "DEMO", "ParentName": "Genel Müdür" }, { "DepartmentName": "Muhasebe", "Name": "Muhasebe Müdürü", - "BranchCode": "DEMO", "ParentName": "Genel Müdür" }, { "DepartmentName": "Muhasebe", "Name": "Muhasebe Şefi", - "BranchCode": "DEMO", "ParentName": "Muhasebe Müdürü" } ] diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantDataSeeder.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantDataSeeder.cs index ab1d918..bd85378 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantDataSeeder.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantDataSeeder.cs @@ -14,6 +14,7 @@ using Volo.Abp.Identity; using Volo.Abp.Timing; using System.Collections.Generic; using Volo.Abp.MultiTenancy; +using Sozsoft.Platform.Extensions; namespace Sozsoft.Platform.Data.Seeds; @@ -748,7 +749,6 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency await _departmentRepository.InsertAsync(new Department { Name = item.Name, - BranchId = branch.Id, ParentId = parent?.Id }, autoSave: true); } @@ -759,7 +759,6 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency if (exists) continue; - var branch = await _branchRepository.FirstOrDefaultAsync(x => x.Code == item.BranchCode); var department = await _departmentRepository.FirstOrDefaultAsync(x => x.Name == item.DepartmentName); var parent = await _jobPositionRepository.FirstOrDefaultAsync(x => x.Name == item.ParentName); @@ -767,9 +766,27 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency { Name = item.Name, DepartmentId = department.Id, - BranchId = branch.Id, ParentId = parent?.Id }, autoSave: true); } + + //admin kullanının departmen ve pozisyonunu default olarak belirliyoruz + var adminUser = await _repositoryUser.FindByNormalizedEmailAsync(PlatformConsts.AbpIdentity.User.AdminEmailDefaultValue); + if (adminUser != null) + { + var defaultDepartment = await _departmentRepository.FirstOrDefaultAsync(x => x.Name == PlatformConsts.AbpIdentity.User.AdminDepartmentIdDefaultValue); + if (defaultDepartment != null) + { + adminUser.SetDepartmentId(defaultDepartment.Id); + } + + var defaultJobPosition = await _jobPositionRepository.FirstOrDefaultAsync(x => x.Name == PlatformConsts.AbpIdentity.User.AdminJobPositionIdDefaultValue); + if (defaultJobPosition != null) + { + adminUser.SetJobPositionId(defaultJobPosition.Id); + } + + await _repositoryUser.UpdateAsync(adminUser); + } } } diff --git a/ui/src/proxy/admin/models.ts b/ui/src/proxy/admin/models.ts index ece1fc9..90d12fa 100644 --- a/ui/src/proxy/admin/models.ts +++ b/ui/src/proxy/admin/models.ts @@ -125,6 +125,8 @@ export interface UserInfoViewModel extends ExtensibleObject { branches: AssignedRoleViewModel[] claims: AssignedClaimViewModel[] workHours: AssignedWorkHourViewModel[] + departments: AssignedDepartmentViewModel[] + jobPositions: AssignedJobPositionViewModel[] lockUser: boolean lastPasswordChangeTime?: Date | string @@ -136,6 +138,8 @@ export interface UserInfoViewModel extends ExtensibleObject { creationTime: Date | string lastModificationTime: Date | string workHour?: string + departmentId?: string + jobPositionId?: string } export interface AssignedRoleViewModel { @@ -161,6 +165,19 @@ export interface AssignedWorkHourViewModel { isAssigned: boolean } +export interface AssignedDepartmentViewModel { + id: string + name?: string + isAssigned: boolean +} + +export interface AssignedJobPositionViewModel { + id: string + name?: string + departmentId?: string + isAssigned: boolean +} + export interface UserClaimModel { id?: string userId?: string diff --git a/ui/src/services/identity.service.ts b/ui/src/services/identity.service.ts index 1d069a2..042e27c 100644 --- a/ui/src/services/identity.service.ts +++ b/ui/src/services/identity.service.ts @@ -43,6 +43,13 @@ export const putUserLookout = (input: UserInfoViewModel) => data: input, }) +export const putUserPermission = (input: UserInfoViewModel) => + apiService.fetchData({ + method: 'PUT', + url: `/api/app/platform-identity/permission`, + data: input, + }) + export const getPermissions = (providerName: string, providerKey?: string) => apiService.fetchData({ method: 'GET', diff --git a/ui/src/types/shared.ts b/ui/src/types/shared.ts index d0eaf55..856dcc1 100644 --- a/ui/src/types/shared.ts +++ b/ui/src/types/shared.ts @@ -2,3 +2,9 @@ export type SelectBoxOption = { value?: string label?: string } + +export type SelectBoxOptionWithGroup = { + value?: string + label?: string + group?: string +} diff --git a/ui/src/views/admin/user-management/Details.tsx b/ui/src/views/admin/user-management/Details.tsx index e28df86..af42d47 100644 --- a/ui/src/views/admin/user-management/Details.tsx +++ b/ui/src/views/admin/user-management/Details.tsx @@ -27,16 +27,17 @@ import { postClaimUser, putUserDetail, putUserLookout, + putUserPermission, } from '@/services/identity.service' import { useLocalization } from '@/utils/hooks/useLocalization' import dayjs from 'dayjs' import { Field, FieldArray, FieldProps, Form, Formik, FormikHelpers } from 'formik' import { useEffect, useState } from 'react' import { Helmet } from 'react-helmet' -import { FaLockOpen, FaUser, FaFileAlt, FaTrashAlt } from 'react-icons/fa' +import { FaLockOpen, FaUser, FaFileAlt, FaTrashAlt, FaCheckCircle } from 'react-icons/fa' import { useParams } from 'react-router-dom' import * as Yup from 'yup' -import { SelectBoxOption } from '@/types/shared' +import { SelectBoxOption, SelectBoxOptionWithGroup } from '@/types/shared' import { ConfirmDialog, Container } from '@/components/shared' import { AssignedClaimViewModel, UserInfoViewModel } from '@/proxy/admin/models' import { APP_NAME } from '@/constants/app.constant' @@ -115,6 +116,9 @@ function UserDetails() { }> {translate('::Abp.Identity.User.UserInformation')} + }> + {translate('::Abp.Identity.User.Permissions')} + }> {translate('::Abp.Identity.User.LockoutManagement')} @@ -144,14 +148,27 @@ function UserDetails() { }} > {({ isSubmitting, values }) => { - const roles = values.roles - const branches = values.branches + const departments = values.departments + const jobPositions = values.jobPositions + + const departmentOptions: SelectBoxOption[] = departments.map((department) => ({ + value: department.id, + label: department.name, + })) + + const jobPositionOptions: SelectBoxOptionWithGroup[] = jobPositions.map( + (jobPosition) => ({ + value: jobPosition.id, + label: jobPosition.name, + group: jobPosition.departmentId, + }), + ) return (
-
+
{/* Personal Information */}
+
+ + + {({ field, form }: FieldProps) => ( + option.group === values.departmentId, + )} + isClearable={true} + value={jobPositionOptions.filter( + (option) => option.value === values.jobPositionId, + )} + onChange={(option) => + form.setFieldValue(field.name, option?.value) + } + /> + )} + + +
+ +
+
+ {translate( + '::Abp.Identity.User.UserInformation.ContactInformation', + )} +
+ + + + + + + + + +
+ +
+
+ {translate('::Abp.Identity.User.UserInformation.AccountTimestamps')} +
+ + + {({ field, form }: FieldProps) => ( + { + form.setFieldValue( + field.name, + date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss') : null, + ) + }} + /> + )} + + + + + {({ field, form }: FieldProps) => ( + + )} + + + + + {({ field, form }: FieldProps) => ( + + )} + + +
+
+ +
+ +
+ +
+ + ) + }} + +
+ + + +
+ { + setSubmitting(true) + + await putUserPermission({ ...values }) + + toast.push( + + {translate('::Abp.Identity.User.SavePermission')} + , + { + placement: 'top-end', + }, + ) + + getUser() + + setSubmitting(false) + }} + > + {({ isSubmitting, values }) => { + const roles = values.roles + const branches = values.branches + + return ( +
+
+ +
{/* Şube Management */}
@@ -242,142 +461,12 @@ function UserDetails() {
- -
- - - -
- -
- - - -
- - {/* Contact Information */} -
-
- {translate( - '::Abp.Identity.User.UserInformation.ContactInformation', - )} -
- - - - - - - - - -
- - {/* Account Timestamps */} -
-
- {translate('::Abp.Identity.User.UserInformation.AccountTimestamps')} -
- - - {({ field, form }: FieldProps) => ( - { - form.setFieldValue( - field.name, - date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss') : null, - ) - }} - /> - )} - - - - - {({ field, form }: FieldProps) => ( - - )} - - - - - {({ field, form }: FieldProps) => ( - - )} - - -
-
-
@@ -387,6 +476,7 @@ function UserDetails() {
+
- {'Lockout bilgileri kaydedildi.'} + {translate('::Abp.Identity.User.SaveLockout')} , { placement: 'top-end', @@ -422,7 +512,7 @@ function UserDetails() {
-
+
{/* Account Status */}
@@ -665,8 +755,8 @@ function UserDetails() {
-
-