AbpUsers tablosuna Gender eklendi

This commit is contained in:
Sedat ÖZTÜRK 2026-10-01 01:54:21 +03:00
parent 0bc44e726c
commit 54a0131d6e
22 changed files with 722 additions and 292 deletions

View file

@ -1314,7 +1314,7 @@ ekranları ABP tablolarıdır, Licence/Dev Request host tablolarını okur.
| **Identity › Permission Groups / Permissions** | `Abp.Identity.PermissionGroups` · `Abp.Identity.Permissions` | `AbpPermissionGroups` · `AbpPermissions` | Yetki ağacı (tree düzeni). Yeni ekranın yetkileri burada görünür; `Modules` kolonu yetkiyi modüllere bağlar (pipe ile çoklu), `Order` kardeşler arası sıradır. Seed: `data/Abp.Identity.Permission{Groups,s}.json`. | | **Identity › Permission Groups / Permissions** | `Abp.Identity.PermissionGroups` · `Abp.Identity.Permissions` | `AbpPermissionGroups` · `AbpPermissions` | Yetki ağacı (tree düzeni). Yeni ekranın yetkileri burada görünür; `Modules` kolonu yetkiyi modüllere bağlar (pipe ile çoklu), `Order` kardeşler arası sıradır. Seed: `data/Abp.Identity.Permission{Groups,s}.json`. |
| **Identity › Claim Type** | `App.IdentityManagement.ClaimType` | `AbpClaimTypes` | Kullanıcıya ek alan (claim) tanımı: `ValueType`, `Regex`, `Required`, `IsStatic`. | | **Identity › Claim Type** | `App.IdentityManagement.ClaimType` | `AbpClaimTypes` | Kullanıcıya ek alan (claim) tanımı: `ValueType`, `Regex`, `Required`, `IsStatic`. |
| **Identity › Roles** | `AbpIdentity.Roles` | `AbpRoles` | Rol yönetimi + `RolesPermission` diyaloğu; yeni ekranın yetkisi role buradan verilir. Yazma `list-form-dynamic-api/role-*`. | | **Identity › Roles** | `AbpIdentity.Roles` | `AbpRoles` | Rol yönetimi + `RolesPermission` diyaloğu; yeni ekranın yetkisi role buradan verilir. Yazma `list-form-dynamic-api/role-*`. |
| **Identity › Users** | `AbpIdentity.Users` · detay `/admin/users/detail/:userId` | `AbpUsers` | Kullanıcı yönetimi + `UsersPermission` diyaloğu, **KPI widget'ları** ve `list-form-dynamic-api/user-*` ile devredilen yazma. Kullanıcı `WorkHour`, `DepartmentId`, `JobPositionId` alanlarını taşır. | | **Identity › Users** | `AbpIdentity.Users` · detay `/admin/users/detail/:userId` | `AbpUsers` | Kullanıcı yönetimi + `UsersPermission` diyaloğu, **KPI widget'ları** ve `list-form-dynamic-api/user-*` ile devredilen yazma. Kullanıcı `WorkHour`, `DepartmentId`, `JobPositionId`, `Gender` (`Male`/`Female`, `App.StaticLookup.*`) ve `HomeAddress` alanlarını liste ve formda taşır; kişisel ve kimlik bilgileri (`IdentityNumber`, `BirthDate`, `EducationLevel`, `BloodType`, `Nationality`, `SskNo`…) detay ekranındadır. Kullanıcı seçen her lookup bu bilgileri `AbpUsers`'tan okur ve kopya kolon aynı ad/tip/değer kümesiyle açılır (`lowcode.instructions.md` §0.12 madde 5). Yeni bir kullanıcı alanı = `PlatformConsts.AbpIdentity.User` + `AbpIdentityUserExtensions` + EF eşlemesi ve migration + `UserInfoViewModel` (detay/profil) + `CreateUpdateUserInput` ve `user-insert`/`user-update` (liste) + `ListFormSeeder_Administration` alanı. |
| **Identity › Organization Units** | `Abp.Identity.OrganizationUnits` · `/admin/ous` | ABP OU tabloları | Birim ağacı. Ekranı `IsOrganizationUnit = true` yaparsan veri bu ağaca göre süzülür; bildirim alıcısı da OU olabilir. | | **Identity › Organization Units** | `Abp.Identity.OrganizationUnits` · `/admin/ous` | ABP OU tabloları | Birim ağacı. Ekranı `IsOrganizationUnit = true` yaparsan veri bu ağaca göre süzülür; bildirim alıcısı da OU olabilir. |
| **Identity › Audit Logs** | `App.IdentityManagement.AuditLogs` | `AbpAuditLogs` | İstek denetim kaydı + `AuditLogDetail` diyaloğu. "Kim ne zaman ne yaptı" isteği yeni tablo gerektirmez. | | **Identity › Audit Logs** | `App.IdentityManagement.AuditLogs` | `AbpAuditLogs` | İstek denetim kaydı + `AuditLogDetail` diyaloğu. "Kim ne zaman ne yaptı" isteği yeni tablo gerektirmez. |
| **Identity › Sessions** | `App.IdentityManagement.Sessions` | `AbpSessions` | Açık oturumlar; `UiEvalService.ApiKickUser` ile oturum düşürme (`lowcode` §9.13). | | **Identity › Sessions** | `App.IdentityManagement.Sessions` | `AbpSessions` | Açık oturumlar; `UiEvalService.ApiKickUser` ile oturum düşürme (`lowcode` §9.13). |

View file

@ -735,6 +735,21 @@ Kısa ve karar odaklı yaz; talebi tekrar anlatma.
kopyalanıyor olsa da. Görsel base64 metin olarak saklanır; `nvarchar(512)` gibi sınırlı boy kopyalanıyor olsa da. Görsel base64 metin olarak saklanır; `nvarchar(512)` gibi sınırlı boy
yazılmaz, `dxImageViewer` kullanılmaz (§4.3 editör tablosu). Çok satırlı serbest metin yazılmaz, `dxImageViewer` kullanılmaz (§4.3 editör tablosu). Çok satırlı serbest metin
(`dxTextArea`, `dxHtmlEditor`) de `nvarchar(MAX)`'tir. (`dxTextArea`, `dxHtmlEditor`) de `nvarchar(MAX)`'tir.
**Kullanıcı (çalışan) bilgisi `AbpUsers`'tan okunur.** Kullanıcıya ait her bilgi kullanıcı
kaydında durur: `IdentityNumber` (TC), `BirthDate`, `BirthPlace`, `Gender` (`Male`/`Female`),
`HomeAddress`, `EducationLevel`, `GraduationSchool`, `BloodType`, `Nationality`, `MaritalStatus`,
`SskNo`, `HireDate`, `DepartmentId`, `JobPositionId`, `WorkHour`, kimlik kartı alanları
(`SerialNo`, `Province`, `District`, `FatherName`, `MotherName`…). Kullanıcı seçen bir lookup bu
kolonları doğrudan `u.` ile seçer; başka bir ekranın tablosundaki son kayıttan (`OUTER APPLY
(SELECT TOP 1 …)`, `COALESCE(önceki kayıt…)`) türetmez — o tablolar kullanıcıyı değil kendi
kaydını tutar. Ekranın tablosu bu bilginin kopyasını tutacaksa kolon **aynı ad, aynı tip/boy ve
aynı değer kümesiyle** açılır (`IdentityNumber nvarchar(15)`, `Gender nvarchar(16)` + `Male`/`Female`
ve `App.StaticLookup.Male`/`Female` anahtarları, `EducationLevel` değerleri); `IdentityNo`,
`E`/`K` gibi farklı ad ya da değer açılmaz, sorguda `AS` ile yeniden adlandırma ya da `CASE`
çevirisi gerekmez. Bu kolonların hepsi `AbpIdentity.Users` ekranında alan olarak tanımlıdır
(kişisel olanlar gizli alan) ve `describe_list AbpIdentity.Users` ile görünür. MCP şema sözlüğü
tablo kataloğunu değil ekranların alan listesini döker: bir kolon sözlükte yoksa bu, tabloda
olmadığı anlamına gelmez — kullanıcı bilgisi için başka tabloya gidilmez.
**Query kaynağı** (ekran birden çok tabloyu tek sorguda birleştiriyorsa ve view tercih **Query kaynağı** (ekran birden çok tabloyu tek sorguda birleştiriyorsa ve view tercih
edilmediyse, §8.2): `SelectCommandType: 4`, `TableName: "Q"`, `KeyFieldName` + edilmediyse, §8.2): `SelectCommandType: 4`, `TableName: "Q"`, `KeyFieldName` +
`KeyFieldDbSourceType` zorunlu (§3). Ana tablo (en dıştaki `FROM`'un ilk tablosu) `IsDeleted` `KeyFieldDbSourceType` zorunlu (§3). Ana tablo (en dıştaki `FROM`'un ilk tablosu) `IsDeleted`

View file

@ -45,6 +45,7 @@ public class UserInfoViewModel : ExtensibleObject
public Guid DepartmentId { get; set; } public Guid DepartmentId { get; set; }
public Guid JobPositionId { get; set; } public Guid JobPositionId { get; set; }
public string Nationality { get; set; } public string Nationality { get; set; }
public string Gender { get; set; }
public string SskNo { get; set; } public string SskNo { get; set; }
public DateTime? HireDate { get; set; } public DateTime? HireDate { get; set; }
public DateTime? TerminationDate { get; set; } public DateTime? TerminationDate { get; set; }

View file

@ -14,6 +14,8 @@ public class CreateUpdateUserInput
public string WorkHour { get; set; } public string WorkHour { get; set; }
public string DepartmentId { get; set; } public string DepartmentId { get; set; }
public string JobPositionId { get; set; } public string JobPositionId { get; set; }
public string Gender { get; set; }
public string HomeAddress { get; set; }
public bool? IsActive { get; set; } public bool? IsActive { get; set; }
public bool? LockoutEnabled { get; set; } public bool? LockoutEnabled { get; set; }
public string[] RoleNames { get; set; } public string[] RoleNames { get; set; }

View file

@ -265,6 +265,7 @@ public class PlatformIdentityAppService : ApplicationService
user.SetDepartmentId(UserInfo.DepartmentId); user.SetDepartmentId(UserInfo.DepartmentId);
user.SetJobPositionId(UserInfo.JobPositionId); user.SetJobPositionId(UserInfo.JobPositionId);
user.SetNationality(UserInfo.Nationality); user.SetNationality(UserInfo.Nationality);
user.SetGender(UserInfo.Gender);
user.SetSskNo(UserInfo.SskNo); user.SetSskNo(UserInfo.SskNo);
user.SetHireDate(UserInfo.HireDate); user.SetHireDate(UserInfo.HireDate);
user.SetTerminationDate(UserInfo.TerminationDate); user.SetTerminationDate(UserInfo.TerminationDate);

View file

@ -21,6 +21,7 @@ public static class UserInfoViewModelMappingExtensions
userInfoViewModel.DepartmentId = user.GetDepartmentId(); userInfoViewModel.DepartmentId = user.GetDepartmentId();
userInfoViewModel.JobPositionId = user.GetJobPositionId(); userInfoViewModel.JobPositionId = user.GetJobPositionId();
userInfoViewModel.Nationality = user.GetNationality(); userInfoViewModel.Nationality = user.GetNationality();
userInfoViewModel.Gender = user.GetGender();
userInfoViewModel.SskNo = user.GetSskNo(); userInfoViewModel.SskNo = user.GetSskNo();
userInfoViewModel.HireDate = user.GetHireDate(); userInfoViewModel.HireDate = user.GetHireDate();
userInfoViewModel.TerminationDate = user.GetTerminationDate(); userInfoViewModel.TerminationDate = user.GetTerminationDate();

View file

@ -133,6 +133,8 @@ public class ListFormDynamicApiAppService : PlatformAppService, IListFormDynamic
user.SetWorkHour(input.Data.WorkHour); user.SetWorkHour(input.Data.WorkHour);
user.SetDepartmentId(ParseGuid(input.Data.DepartmentId)); user.SetDepartmentId(ParseGuid(input.Data.DepartmentId));
user.SetJobPositionId(ParseGuid(input.Data.JobPositionId)); user.SetJobPositionId(ParseGuid(input.Data.JobPositionId));
user.SetGender(input.Data.Gender);
user.SetHomeAddress(input.Data.HomeAddress);
user.SetIsVerified(verify); user.SetIsVerified(verify);
user.SetUserType(input.Data.UserType); user.SetUserType(input.Data.UserType);
@ -209,6 +211,16 @@ public class ListFormDynamicApiAppService : PlatformAppService, IListFormDynamic
user.SetJobPositionId(ParseGuid(input.Data.JobPositionId)); user.SetJobPositionId(ParseGuid(input.Data.JobPositionId));
} }
if (input.Data.Gender != null)
{
user.SetGender(input.Data.Gender);
}
if (input.Data.HomeAddress != null)
{
user.SetHomeAddress(input.Data.HomeAddress);
}
user.SetUserType(input.Data.UserType); user.SetUserType(input.Data.UserType);
await SaveAvatarAsync(user, input.Data.Avatar); await SaveAvatarAsync(user, input.Data.Avatar);

View file

@ -1229,6 +1229,63 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false), PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false),
PivotSettingsJson = DefaultPivotSettingsJson PivotSettingsJson = DefaultPivotSettingsJson
}, },
new ListFormField {
ListFormCode = listForm.ListFormCode,
RoleId = null,
UserId = null,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Gender",
EditGroupOrderNo = 1,
EditOrderNo = 10,
EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1,
EditorOptions = EditorOptions.ShowClearButton(),
CaptionName = "App.Listform.ListformField.Gender",
Width = 0,
ListOrderNo = 10,
Visible = true,
IsActive = true,
LookupJson = JsonSerializer.Serialize(new LookupDto
{
DataSourceType = UiLookupDataSourceTypeEnum.StaticData,
DisplayExpr = "name",
ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key=PlatformConsts.AbpIdentity.User.GenderMale, Name="App.StaticLookup.Male" },
new () { Key=PlatformConsts.AbpIdentity.User.GenderFemale, Name="App.StaticLookup.Female" },
}),
}),
AllowSearch = true,
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.String,
FieldName = "HomeAddress",
EditGroupOrderNo = 1,
EditOrderNo = 11,
EditorType2 = EditorTypes.dxTextArea,
ColSpan = 2,
CaptionName = "Abp.Account.HomeAddress",
Width = 0,
ListOrderNo = 11,
Visible = true,
IsActive = true,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false),
PivotSettingsJson = DefaultPivotSettingsJson
},
new ListFormField { new ListFormField {
ListFormCode = listForm.ListFormCode, ListFormCode = listForm.ListFormCode,
@ -1238,12 +1295,12 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
SourceDbType = DbType.String, SourceDbType = DbType.String,
FieldName = "Password", FieldName = "Password",
EditGroupOrderNo = 1, EditGroupOrderNo = 1,
EditOrderNo = 10, EditOrderNo = 12,
EditorType2 = EditorTypes.dxTextBox, EditorType2 = EditorTypes.dxTextBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.Password", CaptionName = "App.Listform.ListformField.Password",
Width = 0, Width = 0,
ListOrderNo = 10, ListOrderNo = 12,
Visible = false, Visible = false,
IsActive = false, IsActive = false,
@ -1260,12 +1317,12 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
SourceDbType = DbType.Boolean, SourceDbType = DbType.Boolean,
FieldName = "IsActive", FieldName = "IsActive",
EditGroupOrderNo = 1, EditGroupOrderNo = 1,
EditOrderNo = 11, EditOrderNo = 13,
EditorType2 = EditorTypes.dxCheckBox, EditorType2 = EditorTypes.dxCheckBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.IsActive", CaptionName = "App.Listform.ListformField.IsActive",
Width = 0, Width = 0,
ListOrderNo = 11, ListOrderNo = 13,
Visible = true, Visible = true,
IsActive = true, IsActive = true,
@ -1282,7 +1339,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
FieldName = "IsVerified", FieldName = "IsVerified",
CaptionName = "App.Listform.ListformField.IsVerified", CaptionName = "App.Listform.ListformField.IsVerified",
Width = 0, Width = 0,
ListOrderNo = 12, ListOrderNo = 14,
Visible = true, Visible = true,
IsActive = true, IsActive = true,
@ -1299,7 +1356,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
FieldName = "EmailConfirmed", FieldName = "EmailConfirmed",
CaptionName = "App.Listform.ListformField.EmailConfirmed", CaptionName = "App.Listform.ListformField.EmailConfirmed",
Width = 0, Width = 0,
ListOrderNo = 13, ListOrderNo = 15,
Visible = true, Visible = true,
IsActive = true, IsActive = true,
@ -1316,7 +1373,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
FieldName = "TwoFactorEnabled", FieldName = "TwoFactorEnabled",
CaptionName = "App.Listform.ListformField.TwoFactorEnabled", CaptionName = "App.Listform.ListformField.TwoFactorEnabled",
Width = 0, Width = 0,
ListOrderNo = 14, ListOrderNo = 16,
Visible = true, Visible = true,
IsActive = true, IsActive = true,
@ -1324,6 +1381,242 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false), PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false),
PivotSettingsJson = DefaultPivotSettingsJson PivotSettingsJson = DefaultPivotSettingsJson
}, },
// Kisisel bilgiler detay ekraninda duzenlenir, listede gizlidir; alan olarak tanimli
// olmalari MCP sema sozlugunun AbpUsers kolonlarini gormesini saglar.
new ListFormField {
ListFormCode = listForm.ListFormCode,
RoleId = null,
UserId = null,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "IdentityNumber",
CaptionName = "Abp.Identity.User.UserInformation.IdentityNumber",
Width = 0,
ListOrderNo = 17,
Visible = false,
IsActive = true,
AllowSearch = true,
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.DateTime,
FieldName = "BirthDate",
CaptionName = "App.Listform.ListformField.BirthDate",
Width = 0,
ListOrderNo = 18,
Visible = false,
IsActive = true,
AllowSearch = true,
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.String,
FieldName = "BirthPlace",
CaptionName = "Abp.Identity.User.UserInformation.BirthPlace",
Width = 0,
ListOrderNo = 19,
Visible = false,
IsActive = true,
AllowSearch = true,
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.String,
FieldName = "EducationLevel",
CaptionName = "Abp.Account.EducationLevel",
Width = 0,
ListOrderNo = 20,
Visible = false,
IsActive = true,
AllowSearch = true,
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.String,
FieldName = "GraduationSchool",
CaptionName = "Abp.Account.GraduationSchool",
Width = 0,
ListOrderNo = 21,
Visible = false,
IsActive = true,
AllowSearch = true,
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.String,
FieldName = "BloodType",
CaptionName = "Abp.Account.BloodType",
Width = 0,
ListOrderNo = 22,
Visible = false,
IsActive = true,
AllowSearch = true,
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.String,
FieldName = "Nationality",
CaptionName = "Abp.Account.Nationality",
Width = 0,
ListOrderNo = 23,
Visible = false,
IsActive = true,
AllowSearch = true,
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.String,
FieldName = "MaritalStatus",
CaptionName = "App.Listform.ListformField.MaritalStatus",
Width = 0,
ListOrderNo = 24,
Visible = false,
IsActive = true,
AllowSearch = true,
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.String,
FieldName = "FatherName",
CaptionName = "Abp.Identity.User.UserInformation.FatherName",
Width = 0,
ListOrderNo = 25,
Visible = false,
IsActive = true,
AllowSearch = true,
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.String,
FieldName = "MotherName",
CaptionName = "Abp.Identity.User.UserInformation.MotherName",
Width = 0,
ListOrderNo = 26,
Visible = false,
IsActive = true,
AllowSearch = true,
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.String,
FieldName = "SskNo",
CaptionName = "Abp.Identity.User.UserInformation.SskNo",
Width = 0,
ListOrderNo = 27,
Visible = false,
IsActive = true,
AllowSearch = true,
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.DateTime,
FieldName = "HireDate",
CaptionName = "Abp.Identity.User.UserInformation.HireDate",
Width = 0,
ListOrderNo = 28,
Visible = false,
IsActive = true,
AllowSearch = true,
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.DateTime,
FieldName = "TerminationDate",
CaptionName = "App.Listform.ListformField.TerminationDate",
Width = 0,
ListOrderNo = 29,
Visible = false,
IsActive = true,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(PlatformConsts.IdentityPermissions.Users.Create, PlatformConsts.IdentityPermissions.Users.Default, PlatformConsts.IdentityPermissions.Users.Update, true, true, false),
PivotSettingsJson = DefaultPivotSettingsJson
},
]); ]);
#endregion #endregion
} }

View file

@ -159,6 +159,7 @@ public class PlatformIdentityDataSeeder : IdentityDataSeeder
adminUser.SetJobPositionId(PlatformConsts.AbpIdentity.User.AdminJobPositionIdDefaultValue); adminUser.SetJobPositionId(PlatformConsts.AbpIdentity.User.AdminJobPositionIdDefaultValue);
adminUser.SetAvatar(GetAvatar(tenantId?.ToString(), adminUser.Id.ToString())); adminUser.SetAvatar(GetAvatar(tenantId?.ToString(), adminUser.Id.ToString()));
adminUser.SetUserType(PlatformConsts.AbpIdentity.User.InternalUserTypeDefaultValue); adminUser.SetUserType(PlatformConsts.AbpIdentity.User.InternalUserTypeDefaultValue);
adminUser.SetGender(PlatformConsts.AbpIdentity.User.AdminGenderDefaultValue);
(await UserManager.CreateAsync(adminUser, adminPassword, validatePassword: false)).CheckErrors(); (await UserManager.CreateAsync(adminUser, adminPassword, validatePassword: false)).CheckErrors();
result.CreatedAdminUser = true; result.CreatedAdminUser = true;

View file

@ -119,6 +119,7 @@ public static class PlatformConsts
public const string GraduationSchool = "GraduationSchool"; public const string GraduationSchool = "GraduationSchool";
public const string BloodType = "BloodType"; public const string BloodType = "BloodType";
public const string Nationality = "Nationality"; public const string Nationality = "Nationality";
public const string Gender = "Gender";
public const string WorkHour = "WorkHour"; public const string WorkHour = "WorkHour";
public const string DepartmentId = "DepartmentId"; public const string DepartmentId = "DepartmentId";
@ -180,6 +181,11 @@ public static class PlatformConsts
public static readonly DateTime AdminBirthDateDefaultValue = new(1981, 8, 27); public static readonly DateTime AdminBirthDateDefaultValue = new(1981, 8, 27);
public const string AdminBirthPlaceDefaultValue = "Kadıköy, İstanbul"; public const string AdminBirthPlaceDefaultValue = "Kadıköy, İstanbul";
public const string AdminMaritalStatusDefaultValue = "Evli"; public const string AdminMaritalStatusDefaultValue = "Evli";
public const string AdminGenderDefaultValue = "Male";
// Cinsiyet dilden bagimsiz anahtarla saklanir; ekranda App.StaticLookup.* ile cevrilir.
public const string GenderMale = "Male";
public const string GenderFemale = "Female";
public const UserType InternalUserTypeDefaultValue = PlatformConsts.UserType.Internal; public const UserType InternalUserTypeDefaultValue = PlatformConsts.UserType.Internal;
public const UserType ExternalUserTypeDefaultValue = PlatformConsts.UserType.External; public const UserType ExternalUserTypeDefaultValue = PlatformConsts.UserType.External;

View file

@ -111,6 +111,16 @@ public static class AbpIdentityUserExtensions
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.Nationality); return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.Nationality);
} }
//Gender
public static void SetGender(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.Gender, value);
}
public static string GetGender(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.Gender);
}
//SskNo //SskNo
public static void SetSskNo(this IdentityUser user, string value) public static void SetSskNo(this IdentityUser user, string value)
{ {

View file

@ -110,6 +110,15 @@ public static class PlatformEfCoreEntityExtensionMappings
} }
); );
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.Gender,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(16).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>( .MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.SskNo, PlatformConsts.AbpIdentity.User.SskNo,

View file

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace Sozsoft.Platform.Migrations namespace Sozsoft.Platform.Migrations
{ {
[DbContext(typeof(PlatformDbContext))] [DbContext(typeof(PlatformDbContext))]
[Migration("20260922201238_Initial")] [Migration("20260930212718_Initial")]
partial class Initial partial class Initial
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -6065,15 +6065,15 @@ namespace Sozsoft.Platform.Migrations
.HasPrecision(18, 6) .HasPrecision(18, 6)
.HasColumnType("decimal(18,6)"); .HasColumnType("decimal(18,6)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<string>("Type") b.Property<string>("Type")
.IsRequired() .IsRequired()
.HasMaxLength(32) .HasMaxLength(32)
.HasColumnType("nvarchar(32)"); .HasColumnType("nvarchar(32)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<string>("UomCategoryId") b.Property<string>("UomCategoryId")
.IsRequired() .IsRequired()
.HasMaxLength(128) .HasMaxLength(128)
@ -7808,6 +7808,10 @@ namespace Sozsoft.Platform.Migrations
.HasMaxLength(128) .HasMaxLength(128)
.HasColumnType("nvarchar(128)"); .HasColumnType("nvarchar(128)");
b.Property<string>("Gender")
.HasMaxLength(16)
.HasColumnType("nvarchar(16)");
b.Property<string>("GraduationSchool") b.Property<string>("GraduationSchool")
.HasMaxLength(256) .HasMaxLength(256)
.HasColumnType("nvarchar(256)"); .HasColumnType("nvarchar(256)");

View file

@ -445,6 +445,7 @@ namespace Sozsoft.Platform.Migrations
EducationLevel = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true), EducationLevel = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true),
FamilySequenceNo = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: true), FamilySequenceNo = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: true),
FatherName = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true), FatherName = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true),
Gender = table.Column<string>(type: "nvarchar(16)", maxLength: 16, nullable: true),
GraduationSchool = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true), GraduationSchool = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
HireDate = table.Column<DateTime>(type: "datetime2", nullable: true), HireDate = table.Column<DateTime>(type: "datetime2", nullable: true),
HomeAddress = table.Column<string>(type: "nvarchar(512)", maxLength: 512, nullable: true), HomeAddress = table.Column<string>(type: "nvarchar(512)", maxLength: 512, nullable: true),
@ -542,28 +543,6 @@ namespace Sozsoft.Platform.Migrations
table.PrimaryKey("PK_Adm_T_Announcement", x => x.Id); table.PrimaryKey("PK_Adm_T_Announcement", x => x.Id);
}); });
migrationBuilder.CreateTable(
name: "Hr_T_Department",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
BranchId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ParentId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Hr_T_Department", x => x.Id);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Adm_T_EventCategory", name: "Adm_T_EventCategory",
columns: table => new columns: table => new
@ -845,6 +824,26 @@ namespace Sozsoft.Platform.Migrations
table.PrimaryKey("PK_Adm_T_Survey", x => x.Id); table.PrimaryKey("PK_Adm_T_Survey", x => x.Id);
}); });
migrationBuilder.CreateTable(
name: "Adm_T_UomCategory",
columns: table => new
{
Id = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Adm_T_UomCategory", x => x.Id);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Adm_T_Videoroom", name: "Adm_T_Videoroom",
columns: table => new columns: table => new
@ -907,6 +906,48 @@ namespace Sozsoft.Platform.Migrations
table.PrimaryKey("PK_Adm_T_WorkHour", x => x.Id); table.PrimaryKey("PK_Adm_T_WorkHour", x => x.Id);
}); });
migrationBuilder.CreateTable(
name: "Hr_T_Department",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
BranchId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ParentId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Hr_T_Department", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Hr_T_SkillType",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Hr_T_SkillType", x => x.Id);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "OpenIddictApplications", name: "OpenIddictApplications",
columns: table => new columns: table => new
@ -1756,46 +1797,6 @@ namespace Sozsoft.Platform.Migrations
table.PrimaryKey("PK_Sas_H_SettingDefinition", x => x.Id); table.PrimaryKey("PK_Sas_H_SettingDefinition", x => x.Id);
}); });
migrationBuilder.CreateTable(
name: "Hr_T_SkillType",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Hr_T_SkillType", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Adm_T_UomCategory",
columns: table => new
{
Id = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Adm_T_UomCategory", x => x.Id);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Sas_T_Branch", name: "Sas_T_Branch",
columns: table => new columns: table => new
@ -2213,35 +2214,6 @@ namespace Sozsoft.Platform.Migrations
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
migrationBuilder.CreateTable(
name: "Hr_T_JobPosition",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
BranchId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
DepartmentId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
ParentId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Hr_T_JobPosition", x => x.Id);
table.ForeignKey(
name: "FK_Hr_T_JobPosition_Hr_T_Department_DepartmentId",
column: x => x.DepartmentId,
principalTable: "Hr_T_Department",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Adm_T_Event", name: "Adm_T_Event",
columns: table => new columns: table => new
@ -2556,6 +2528,37 @@ namespace Sozsoft.Platform.Migrations
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
migrationBuilder.CreateTable(
name: "Adm_T_Uom",
columns: table => new
{
Id = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
UomCategoryId = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
Name = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
Type = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: false),
Ratio = table.Column<decimal>(type: "decimal(18,6)", precision: 18, scale: 6, nullable: false),
IsActive = table.Column<bool>(type: "bit", nullable: false),
Rounding = table.Column<decimal>(type: "decimal(18,6)", precision: 18, scale: 6, nullable: false),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Adm_T_Uom", x => x.Id);
table.ForeignKey(
name: "FK_Adm_T_Uom_Adm_T_UomCategory_UomCategoryId",
column: x => x.UomCategoryId,
principalTable: "Adm_T_UomCategory",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Adm_T_VideoroomAttandance", name: "Adm_T_VideoroomAttandance",
columns: table => new columns: table => new
@ -2660,6 +2663,91 @@ namespace Sozsoft.Platform.Migrations
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
migrationBuilder.CreateTable(
name: "Hr_T_JobPosition",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
BranchId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
DepartmentId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
ParentId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Hr_T_JobPosition", x => x.Id);
table.ForeignKey(
name: "FK_Hr_T_JobPosition_Hr_T_Department_DepartmentId",
column: x => x.DepartmentId,
principalTable: "Hr_T_Department",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Hr_T_Skill",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
SkillTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Hr_T_Skill", x => x.Id);
table.ForeignKey(
name: "FK_Hr_T_Skill_Hr_T_SkillType_SkillTypeId",
column: x => x.SkillTypeId,
principalTable: "Hr_T_SkillType",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Hr_T_SkillLevel",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
SkillTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
Progress = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
IsDefault = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Hr_T_SkillLevel", x => x.Id);
table.ForeignKey(
name: "FK_Hr_T_SkillLevel_Hr_T_SkillType_SkillTypeId",
column: x => x.SkillTypeId,
principalTable: "Hr_T_SkillType",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "OpenIddictAuthorizations", name: "OpenIddictAuthorizations",
columns: table => new columns: table => new
@ -3034,93 +3122,6 @@ namespace Sozsoft.Platform.Migrations
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
migrationBuilder.CreateTable(
name: "Hr_T_Skill",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
SkillTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Hr_T_Skill", x => x.Id);
table.ForeignKey(
name: "FK_Hr_T_Skill_Hr_T_SkillType_SkillTypeId",
column: x => x.SkillTypeId,
principalTable: "Hr_T_SkillType",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Hr_T_SkillLevel",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
SkillTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
Progress = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
IsDefault = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Hr_T_SkillLevel", x => x.Id);
table.ForeignKey(
name: "FK_Hr_T_SkillLevel_Hr_T_SkillType_SkillTypeId",
column: x => x.SkillTypeId,
principalTable: "Hr_T_SkillType",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Adm_T_Uom",
columns: table => new
{
Id = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
UomCategoryId = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
Name = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
Type = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: false),
Ratio = table.Column<decimal>(type: "decimal(18,6)", precision: 18, scale: 6, nullable: false),
IsActive = table.Column<bool>(type: "bit", nullable: false),
Rounding = table.Column<decimal>(type: "decimal(18,6)", precision: 18, scale: 6, nullable: false),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Adm_T_Uom", x => x.Id);
table.ForeignKey(
name: "FK_Adm_T_Uom_Adm_T_UomCategory_UomCategoryId",
column: x => x.UomCategoryId,
principalTable: "Adm_T_UomCategory",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Sas_T_ForumTopic", name: "Sas_T_ForumTopic",
columns: table => new columns: table => new
@ -3807,13 +3808,6 @@ namespace Sozsoft.Platform.Migrations
unique: true, unique: true,
filter: "[IsDeleted] = 0"); filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_Department_TenantId_BranchId_Name",
table: "Hr_T_Department",
columns: new[] { "TenantId", "BranchId", "Name" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Adm_T_Event_CategoryId", name: "IX_Adm_T_Event_CategoryId",
table: "Adm_T_Event", table: "Adm_T_Event",
@ -3864,18 +3858,6 @@ namespace Sozsoft.Platform.Migrations
unique: true, unique: true,
filter: "[IsDeleted] = 0"); filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_JobPosition_DepartmentId",
table: "Hr_T_JobPosition",
column: "DepartmentId");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_JobPosition_TenantId_Name_DepartmentId",
table: "Hr_T_JobPosition",
columns: new[] { "TenantId", "Name", "DepartmentId" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Adm_T_MessengerConversationMessage_ConversationId", name: "IX_Adm_T_MessengerConversationMessage_ConversationId",
table: "Adm_T_MessengerConversationMessage", table: "Adm_T_MessengerConversationMessage",
@ -4017,6 +3999,25 @@ namespace Sozsoft.Platform.Migrations
table: "Adm_T_SurveyResponse", table: "Adm_T_SurveyResponse",
column: "SurveyId"); column: "SurveyId");
migrationBuilder.CreateIndex(
name: "IX_Adm_T_Uom_TenantId_Name_UomCategoryId",
table: "Adm_T_Uom",
columns: new[] { "TenantId", "Name", "UomCategoryId" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Adm_T_Uom_UomCategoryId",
table: "Adm_T_Uom",
column: "UomCategoryId");
migrationBuilder.CreateIndex(
name: "IX_Adm_T_UomCategory_TenantId_Name",
table: "Adm_T_UomCategory",
columns: new[] { "TenantId", "Name" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Adm_T_Videoroom_TenantId_BranchId_Name", name: "IX_Adm_T_Videoroom_TenantId_BranchId_Name",
table: "Adm_T_Videoroom", table: "Adm_T_Videoroom",
@ -4046,6 +4047,56 @@ namespace Sozsoft.Platform.Migrations
unique: true, unique: true,
filter: "[IsDeleted] = 0"); filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_Department_TenantId_BranchId_Name",
table: "Hr_T_Department",
columns: new[] { "TenantId", "BranchId", "Name" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_JobPosition_DepartmentId",
table: "Hr_T_JobPosition",
column: "DepartmentId");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_JobPosition_TenantId_Name_DepartmentId",
table: "Hr_T_JobPosition",
columns: new[] { "TenantId", "Name", "DepartmentId" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_Skill_SkillTypeId",
table: "Hr_T_Skill",
column: "SkillTypeId");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_Skill_TenantId_SkillTypeId_Name",
table: "Hr_T_Skill",
columns: new[] { "TenantId", "SkillTypeId", "Name" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_SkillLevel_SkillTypeId",
table: "Hr_T_SkillLevel",
column: "SkillTypeId");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_SkillLevel_TenantId_SkillTypeId_Name",
table: "Hr_T_SkillLevel",
columns: new[] { "TenantId", "SkillTypeId", "Name" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_SkillType_TenantId_Name",
table: "Hr_T_SkillType",
columns: new[] { "TenantId", "Name" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_OpenIddictApplications_ClientId", name: "IX_OpenIddictApplications_ClientId",
table: "OpenIddictApplications", table: "OpenIddictApplications",
@ -4337,56 +4388,6 @@ namespace Sozsoft.Platform.Migrations
unique: true, unique: true,
filter: "[IsDeleted] = 0"); filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_Skill_SkillTypeId",
table: "Hr_T_Skill",
column: "SkillTypeId");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_Skill_TenantId_SkillTypeId_Name",
table: "Hr_T_Skill",
columns: new[] { "TenantId", "SkillTypeId", "Name" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_SkillLevel_SkillTypeId",
table: "Hr_T_SkillLevel",
column: "SkillTypeId");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_SkillLevel_TenantId_SkillTypeId_Name",
table: "Hr_T_SkillLevel",
columns: new[] { "TenantId", "SkillTypeId", "Name" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Hr_T_SkillType_TenantId_Name",
table: "Hr_T_SkillType",
columns: new[] { "TenantId", "Name" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Adm_T_Uom_TenantId_Name_UomCategoryId",
table: "Adm_T_Uom",
columns: new[] { "TenantId", "Name", "UomCategoryId" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex(
name: "IX_Adm_T_Uom_UomCategoryId",
table: "Adm_T_Uom",
column: "UomCategoryId");
migrationBuilder.CreateIndex(
name: "IX_Adm_T_UomCategory_TenantId_Name",
table: "Adm_T_UomCategory",
columns: new[] { "TenantId", "Name" },
unique: true,
filter: "[IsDeleted] = 0");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Sas_T_Branch_Code", name: "IX_Sas_T_Branch_Code",
table: "Sas_T_Branch", table: "Sas_T_Branch",
@ -4526,9 +4527,6 @@ namespace Sozsoft.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Adm_T_IpRestriction"); name: "Adm_T_IpRestriction");
migrationBuilder.DropTable(
name: "Hr_T_JobPosition");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Adm_T_MessengerConversationMessage"); name: "Adm_T_MessengerConversationMessage");
@ -4568,6 +4566,9 @@ namespace Sozsoft.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Adm_T_SurveyQuestionOption"); name: "Adm_T_SurveyQuestionOption");
migrationBuilder.DropTable(
name: "Adm_T_Uom");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Adm_T_VideoroomAttandance"); name: "Adm_T_VideoroomAttandance");
@ -4580,6 +4581,15 @@ namespace Sozsoft.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Adm_T_WorkHour"); name: "Adm_T_WorkHour");
migrationBuilder.DropTable(
name: "Hr_T_JobPosition");
migrationBuilder.DropTable(
name: "Hr_T_Skill");
migrationBuilder.DropTable(
name: "Hr_T_SkillLevel");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "OpenIddictScopes"); name: "OpenIddictScopes");
@ -4676,15 +4686,6 @@ namespace Sozsoft.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Sas_H_SettingDefinition"); name: "Sas_H_SettingDefinition");
migrationBuilder.DropTable(
name: "Hr_T_Skill");
migrationBuilder.DropTable(
name: "Hr_T_SkillLevel");
migrationBuilder.DropTable(
name: "Adm_T_Uom");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Sas_T_Branch"); name: "Sas_T_Branch");
@ -4721,9 +4722,6 @@ namespace Sozsoft.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Adm_T_Event"); name: "Adm_T_Event");
migrationBuilder.DropTable(
name: "Hr_T_Department");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Adm_T_MessengerConversation"); name: "Adm_T_MessengerConversation");
@ -4742,9 +4740,18 @@ namespace Sozsoft.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Adm_T_SurveyQuestion"); name: "Adm_T_SurveyQuestion");
migrationBuilder.DropTable(
name: "Adm_T_UomCategory");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Adm_T_Videoroom"); name: "Adm_T_Videoroom");
migrationBuilder.DropTable(
name: "Hr_T_Department");
migrationBuilder.DropTable(
name: "Hr_T_SkillType");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "OpenIddictAuthorizations"); name: "OpenIddictAuthorizations");
@ -4772,12 +4779,6 @@ namespace Sozsoft.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Sas_H_Order"); name: "Sas_H_Order");
migrationBuilder.DropTable(
name: "Hr_T_SkillType");
migrationBuilder.DropTable(
name: "Adm_T_UomCategory");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Sas_T_ForumTopic"); name: "Sas_T_ForumTopic");

View file

@ -6062,15 +6062,15 @@ namespace Sozsoft.Platform.Migrations
.HasPrecision(18, 6) .HasPrecision(18, 6)
.HasColumnType("decimal(18,6)"); .HasColumnType("decimal(18,6)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<string>("Type") b.Property<string>("Type")
.IsRequired() .IsRequired()
.HasMaxLength(32) .HasMaxLength(32)
.HasColumnType("nvarchar(32)"); .HasColumnType("nvarchar(32)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<string>("UomCategoryId") b.Property<string>("UomCategoryId")
.IsRequired() .IsRequired()
.HasMaxLength(128) .HasMaxLength(128)
@ -7805,6 +7805,10 @@ namespace Sozsoft.Platform.Migrations
.HasMaxLength(128) .HasMaxLength(128)
.HasColumnType("nvarchar(128)"); .HasColumnType("nvarchar(128)");
b.Property<string>("Gender")
.HasMaxLength(16)
.HasColumnType("nvarchar(16)");
b.Property<string>("GraduationSchool") b.Property<string>("GraduationSchool")
.HasMaxLength(256) .HasMaxLength(256)
.HasColumnType("nvarchar(256)"); .HasColumnType("nvarchar(256)");

View file

@ -152,6 +152,7 @@ public class TenantIdentityDataSeeder : IdentityDataSeeder
adminUser.SetJobPositionId(PlatformConsts.AbpIdentity.User.AdminJobPositionIdDefaultValue); adminUser.SetJobPositionId(PlatformConsts.AbpIdentity.User.AdminJobPositionIdDefaultValue);
adminUser.SetAvatar(GetAvatar(tenantId?.ToString(), adminUser.Id.ToString())); adminUser.SetAvatar(GetAvatar(tenantId?.ToString(), adminUser.Id.ToString()));
adminUser.SetUserType(PlatformConsts.AbpIdentity.User.InternalUserTypeDefaultValue); adminUser.SetUserType(PlatformConsts.AbpIdentity.User.InternalUserTypeDefaultValue);
adminUser.SetGender(PlatformConsts.AbpIdentity.User.AdminGenderDefaultValue);
(await UserManager.CreateAsync(adminUser, adminPassword, validatePassword: false)).CheckErrors(); (await UserManager.CreateAsync(adminUser, adminPassword, validatePassword: false)).CheckErrors();
result.CreatedAdminUser = true; result.CreatedAdminUser = true;

View file

@ -293,7 +293,9 @@ Bir çelişki varsa sıra: `ai.instructions.md` → `dotnet.instructions.md` →
- **MCP şema araçları** → tablo/sütun bilgisi canlı katalogdan değil `Sas_H_DbTableColumn` - **MCP şema araçları** → tablo/sütun bilgisi canlı katalogdan değil `Sas_H_DbTableColumn`
sözlüğünden okunur (`IMcpSchemaDictionary`). Sözlüğün alan adları sözlüğünden okunur (`IMcpSchemaDictionary`). Sözlüğün alan adları
`dbo.Sas_H_ListFormFieldsDictionaryJson` prosedürünün ürettiği JSON ile birebir aynıdır; `dbo.Sas_H_ListFormFieldsDictionaryJson` prosedürünün ürettiği JSON ile birebir aynıdır;
prosedür değişirse `McpDictionaryListForm`/`McpDictionaryField` de değişir. prosedür değişirse `McpDictionaryListForm`/`McpDictionaryField` de değişir. Sözlük tablo kataloğunu
değil ekranların alanlarını döker: bir tablonun ekranda alan olarak tanımlanmamış kolonunu MCP göremez.
Modelin okuması gereken kolon (ör. `AbpUsers`'ın kişisel bilgileri) ilgili ekranda gizli alan olarak durur.
- **MCP OAuth** → bilinen sağlayıcılar (Claude, ChatGPT) seed edilmiş `Platform_Mcp` istemcisini, - **MCP OAuth** → bilinen sağlayıcılar (Claude, ChatGPT) seed edilmiş `Platform_Mcp` istemcisini,
diğer MCP istemcileri `/connect/register` ile üretilen `mcp_` önekli açık onaylı istemcileri diğer MCP istemcileri `/connect/register` ile üretilen `mcp_` önekli açık onaylı istemcileri
kullanır (`McpOAuthClientManager`; seed `McpOAuthClientDataSeedContributor`). Bilinen sağlayıcı kullanır (`McpOAuthClientManager`; seed `McpOAuthClientDataSeedContributor`). Bilinen sağlayıcı

File diff suppressed because one or more lines are too long

View file

@ -31770,6 +31770,34 @@
"Key": "App.Listform.ListformField.Gender", "Key": "App.Listform.ListformField.Gender",
"Value": "Cinsiyet" "Value": "Cinsiyet"
}, },
{
"Id": "8b2bfaa8-2e63-5476-acae-ea326f9758d1",
"CultureName": "en",
"ResourceName": "Platform",
"Key": "App.StaticLookup.Male",
"Value": "Male"
},
{
"Id": "ce60852a-a9bb-5a91-b99d-7b4b2a35f174",
"CultureName": "tr",
"ResourceName": "Platform",
"Key": "App.StaticLookup.Male",
"Value": "Erkek"
},
{
"Id": "c1265549-443f-5332-a060-6d67b23e5ac9",
"CultureName": "en",
"ResourceName": "Platform",
"Key": "App.StaticLookup.Female",
"Value": "Female"
},
{
"Id": "b400d0ec-4139-51da-a9a8-2d78103b4b87",
"CultureName": "tr",
"ResourceName": "Platform",
"Key": "App.StaticLookup.Female",
"Value": "Kadın"
},
{ {
"Id": "374919e4-2ca5-5089-8abf-c77ee44e528d", "Id": "374919e4-2ca5-5089-8abf-c77ee44e528d",
"CultureName": "en", "CultureName": "en",

View file

@ -148,6 +148,7 @@ export interface UserInfoViewModel extends ExtensibleObject {
department?: AssignedDepartmentViewModel department?: AssignedDepartmentViewModel
jobPositionId?: string jobPositionId?: string
nationality?: string nationality?: string
gender?: string
sskNo?: string sskNo?: string
hireDate?: Date | string hireDate?: Date | string
terminationDate?: Date | string terminationDate?: Date | string

View file

@ -207,6 +207,12 @@ const General = () => {
}, },
] ]
// Değer dilden bağımsız anahtardır (PlatformConsts.AbpIdentity.User.Gender*).
const genderOptions: SelectBoxOption[] = [
{ value: 'Male', label: translate('::App.StaticLookup.Male') },
{ value: 'Female', label: translate('::App.StaticLookup.Female') },
]
const bloodTypeOptions: SelectBoxOption[] = [ const bloodTypeOptions: SelectBoxOption[] = [
{ value: 'A Rh+', label: 'A Rh+' }, { value: 'A Rh+', label: 'A Rh+' },
{ value: 'A Rh-', label: 'A Rh-' }, { value: 'A Rh-', label: 'A Rh-' },
@ -329,6 +335,13 @@ const General = () => {
)} )}
/> />
</FormItem> </FormItem>
<FormItem label={translate('::App.Listform.ListformField.Gender')}>
<Select<SelectBoxOption>
isDisabled
options={genderOptions}
value={getSelectValue(genderOptions, getProfileExtraValue('Gender'))}
/>
</FormItem>
<FormItem label={translate('::Abp.Account.EducationLevel')}> <FormItem label={translate('::Abp.Account.EducationLevel')}>
<Select<SelectBoxOption> <Select<SelectBoxOption>
isDisabled isDisabled

View file

@ -443,6 +443,31 @@ function UserDetails() {
}} }}
</Field> </Field>
</FormItem> </FormItem>
<FormItem label={translate('::App.Listform.ListformField.Gender')}>
<Field type="text" name="gender">
{({ field, form }: FieldProps<SelectBoxOption>) => {
const genderOptions: SelectBoxOption[] = [
{ value: 'Male', label: translate('::App.StaticLookup.Male') },
{
value: 'Female',
label: translate('::App.StaticLookup.Female'),
},
]
return (
<Select
field={field}
form={form}
options={genderOptions}
isClearable={true}
value={genderOptions.filter((o) => o.value === values.gender)}
onChange={(option) =>
form.setFieldValue(field.name, option?.value ?? null)
}
/>
)
}}
</Field>
</FormItem>
<FormItem label={translate('::Abp.Account.EducationLevel')}> <FormItem label={translate('::Abp.Account.EducationLevel')}>
<Field type="text" name="educationLevel"> <Field type="text" name="educationLevel">
{({ field, form }: FieldProps<SelectBoxOption>) => { {({ field, form }: FieldProps<SelectBoxOption>) => {