User içerisine tüm eksik sütunlar dahil edildi.

This commit is contained in:
Sedat ÖZTÜRK 2026-05-05 10:23:02 +03:00
parent 4444fce93b
commit 0e102b3dfc
15 changed files with 1702 additions and 105 deletions

View file

@ -7,49 +7,27 @@ namespace Sozsoft.Platform.Identity.Dto;
public class UserInfoViewModel: ExtensibleObject
{
public Guid Id { get; set; }
public string ConcurrencyStamp { get; set; }
public string UserName { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string Email { get; set; }
public string PhoneNumber { get; set; }
public bool IsActive { get; set; }
public bool TwoFactorEnabled { get; set; }
public bool LockoutEnabled { get; set; }
public DateTimeOffset? LockoutEnd { get; set; }
public DateTime? LoginEndDate { get; set; }
public bool IsVerified { get; set; }
public List<string> userRoleNames { get; set; }
public AssignedRoleViewModel[] Roles { get; set; }
public AssignedBranchViewModel[] Branches { get; set; }
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; }
public bool EmailConfirmed { get; set; }
public bool PhoneNumberConfirmed { get; set; }
public int AccessFailedCount { get; set; }
@ -60,4 +38,28 @@ public class UserInfoViewModel: ExtensibleObject
public string WorkHour { get; set; }
public Guid DepartmentId { get; set; }
public Guid JobPositionId { get; set; }
public string Nationality { get; set; }
public string SskNo { get; set; }
public DateTime? HireDate { get; set; }
public DateTime? TerminationDate { get; set; }
public string IdentityNumber { get; set; }
public string SerialNo { get; set; }
public string Province { get; set; }
public string District { get; set; }
public string Village { get; set; }
public string VolumeNo { get; set; }
public string FamilySequenceNo { get; set; }
public string SequenceNo { get; set; }
public string IssuedPlace { get; set; }
public DateTime? IssuedDate { get; set; }
public string BirthPlace { get; set; }
public DateTime? BirthDate { get; set; }
public string FatherName { get; set; }
public string MotherName { get; set; }
public string MaritalStatus { get; set; }
public DateTime? MarriageDate { get; set; }
public string HomeAddress { get; set; }
public string EducationLevel { get; set; }
public string GraduationSchool { get; set; }
public string BloodType { get; set; }
}

View file

@ -165,6 +165,31 @@ public class PlatformIdentityAppService : ApplicationService
JobPositionId = user.GetJobPositionId(),
CreationTime = user.CreationTime,
LastModificationTime = user.LastModificationTime,
IdentityNumber = user.GetIdentityNumber(),
Nationality = user.GetNationality(),
SskNo = user.GetSskNo(),
HireDate = user.GetHireDate(),
TerminationDate = user.GetTerminationDate(),
SerialNo = user.GetSerialNo(),
Province = user.GetProvince(),
District = user.GetDistrict(),
Village = user.GetVillage(),
VolumeNo = user.GetVolumeNo(),
FamilySequenceNo = user.GetFamilySequenceNo(),
SequenceNo = user.GetSequenceNo(),
IssuedPlace = user.GetIssuedPlace(),
IssuedDate = user.GetIssuedDate(),
BirthPlace = user.GetBirthPlace(),
BirthDate = user.GetBirthDate(),
FatherName = user.GetFatherName(),
MotherName = user.GetMotherName(),
MaritalStatus = user.GetMaritalStatus(),
MarriageDate = user.GetMarriageDate(),
HomeAddress = user.GetHomeAddress(),
EducationLevel = user.GetEducationLevel(),
GraduationSchool = user.GetGraduationSchool(),
BloodType = user.GetBloodType(),
};
}
@ -247,6 +272,30 @@ public class PlatformIdentityAppService : ApplicationService
user.SetWorkHour(UserInfo.WorkHour);
user.SetDepartmentId(UserInfo.DepartmentId);
user.SetJobPositionId(UserInfo.JobPositionId);
user.SetNationality(UserInfo.Nationality);
user.SetSskNo(UserInfo.SskNo);
user.SetHireDate(UserInfo.HireDate);
user.SetTerminationDate(UserInfo.TerminationDate);
user.SetIdentityNumber(UserInfo.IdentityNumber);
user.SetSerialNo(UserInfo.SerialNo);
user.SetProvince(UserInfo.Province);
user.SetDistrict(UserInfo.District);
user.SetVillage(UserInfo.Village);
user.SetVolumeNo(UserInfo.VolumeNo);
user.SetFamilySequenceNo(UserInfo.FamilySequenceNo);
user.SetSequenceNo(UserInfo.SequenceNo);
user.SetIssuedPlace(UserInfo.IssuedPlace);
user.SetIssuedDate(UserInfo.IssuedDate);
user.SetBirthPlace(UserInfo.BirthPlace);
user.SetBirthDate(UserInfo.BirthDate);
user.SetFatherName(UserInfo.FatherName);
user.SetMotherName(UserInfo.MotherName);
user.SetMaritalStatus(UserInfo.MaritalStatus);
user.SetMarriageDate(UserInfo.MarriageDate);
user.SetHomeAddress(UserInfo.HomeAddress);
user.SetEducationLevel(UserInfo.EducationLevel);
user.SetGraduationSchool(UserInfo.GraduationSchool);
user.SetBloodType(UserInfo.BloodType);
await UserManager.UpdateAsync(user);
}

View file

@ -33,6 +33,7 @@ public class PublicAppService : PlatformAppService
private readonly IRepository<About, Guid> _aboutRepository;
private readonly IRepository<Home, Guid> _homeRepository;
private readonly IRepository<Contact, Guid> _contactRepository;
private readonly IRepository<Country, string> _countryRepository;
private readonly IIdentityUserRepository _identityUserRepository;
private readonly IRepository<LanguageKey, Guid> _languageKeyRepository;
private readonly IRepository<LanguageText, Guid> _languageTextRepository;
@ -52,6 +53,7 @@ public class PublicAppService : PlatformAppService
IRepository<About, Guid> aboutRepository,
IRepository<Home, Guid> homeRepository,
IRepository<Contact, Guid> contactRepository,
IRepository<Country, string> countryRepository,
IIdentityUserRepository identityUserRepository,
IRepository<LanguageKey, Guid> languageKeyRepository,
IRepository<LanguageText, Guid> languageTextRepository,
@ -75,6 +77,7 @@ public class PublicAppService : PlatformAppService
_languageKeyRepository = languageKeyRepository;
_languageTextRepository = languageTextRepository;
_languageTextAppService = languageTextAppService;
_countryRepository = countryRepository;
}
public async Task<List<ServiceDto>> GetServicesListAsync()
@ -535,6 +538,13 @@ public class PublicAppService : PlatformAppService
return ObjectMapper.Map<Contact, ContactDto>(entity);
}
public async Task<List<CountryDto>> GetCountryAsync()
{
var entities = await _countryRepository.GetListAsync() ?? throw new EntityNotFoundException(typeof(Country));
return ObjectMapper.Map<List<Country>, List<CountryDto>>(entities);
}
public async Task SaveContactPageAsync(SaveContactPageInput input)
{
var entity = await _contactRepository.FirstOrDefaultAsync() ?? throw new EntityNotFoundException(typeof(Contact));

View file

@ -20,6 +20,7 @@ public class PublicAutoMapperProfile : Profile
CreateMap<About, AboutDto>();
CreateMap<Home, HomeDto>();
CreateMap<Contact, ContactDto>();
CreateMap<Country, CountryDto>();
}
}

View file

@ -2262,6 +2262,36 @@
"en": "Email",
"tr": "E-posta"
},
{
"resourceName": "Platform",
"key": "Abp.Account.HomeAddress",
"en": "Home Address",
"tr": "Ev Adresi"
},
{
"resourceName": "Platform",
"key": "Abp.Account.BloodType",
"en": "Blood Type",
"tr": "Kan Grubu"
},
{
"resourceName": "Platform",
"key": "Abp.Account.GraduationSchool",
"en": "Graduation School",
"tr": "Mezuniyet Okulu"
},
{
"resourceName": "Platform",
"key": "Abp.Account.EducationLevel",
"en": "Education Level",
"tr": "Eğitim Seviyesi"
},
{
"resourceName": "Platform",
"key": "Abp.Account.Nationality",
"en": "Nationality",
"tr": "Uyruk"
},
{
"resourceName": "Platform",
"key": "Abp.Account.ConfirmPassword",
@ -2739,8 +2769,208 @@
{
"resourceName": "Platform",
"key": "Abp.Identity.User.Permissions",
"en": "User Permissions",
"tr": "Kullanıcı Yetkileri"
"en": "Permissions",
"tr": "Yetkiler"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.WorkInformation",
"en": "Work",
"tr": "İş"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.IndentityInformation",
"en": "Identity Information",
"tr": "Kimlik Bilgileri"
},
{
"resourceName": "Platform",
"key": "App.EducationLevel.Primary",
"en": "Primary Education",
"tr": "İlköğretim"
},
{
"resourceName": "Platform",
"key": "App.EducationLevel.MiddleSchool",
"en": "Middle School",
"tr": "Ortaokul"
},
{
"resourceName": "Platform",
"key": "App.EducationLevel.HighSchool",
"en": "High School",
"tr": "Lise"
},
{
"resourceName": "Platform",
"key": "App.EducationLevel.Associate",
"en": "Associate Degree",
"tr": "Ön Lisans"
},
{
"resourceName": "Platform",
"key": "App.EducationLevel.Bachelor",
"en": "Bachelor's Degree",
"tr": "Lisans"
},
{
"resourceName": "Platform",
"key": "App.EducationLevel.Master",
"en": "Master's Degree",
"tr": "Yüksek Lisans"
},
{
"resourceName": "Platform",
"key": "App.EducationLevel.PhD",
"en": "PhD",
"tr": "Doktora"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.AdditionalInformation",
"en": "Additional Information",
"tr": "Ek Bilgiler"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.SskNo",
"en": "SSK Number",
"tr": "SSK No"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.HireDate",
"en": "Hire Date",
"tr": "İşe Başlama Tarihi"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.TerminationDate",
"en": "Termination Date",
"tr": "İşten Ayrılma Tarihi"
},
{
"resourceName": "Platform",
"key": "App.MaritalStatus.Single",
"en": "Single",
"tr": "Bekar"
},
{
"resourceName": "Platform",
"key": "App.MaritalStatus.Married",
"en": "Married",
"tr": "Evli"
},
{
"resourceName": "Platform",
"key": "App.MaritalStatus.Divorced",
"en": "Divorced",
"tr": "Boşanmış"
},
{
"resourceName": "Platform",
"key": "App.MaritalStatus.Widowed",
"en": "Widowed",
"tr": "Dul"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.IdentityNumber",
"en": "Identity Number",
"tr": "Kimlik No"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.SerialNo",
"en": "Serial Number",
"tr": "Seri No"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.Province",
"en": "Province",
"tr": "İl"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.District",
"en": "District",
"tr": "İlçe"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.Village",
"en": "Village",
"tr": "Köy"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.VolumeNo",
"en": "Volume Number",
"tr": "Cilt No"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.FamilySequenceNo",
"en": "Family Sequence Number",
"tr": "Aile Sıra No"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.SequenceNo",
"en": "Sequence Number",
"tr": "Sıra No"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.IssuedPlace",
"en": "Issued Place",
"tr": "Veriliş Yeri"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.IssuedDate",
"en": "Issued Date",
"tr": "Veriliş Tarihi"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.BirthPlace",
"en": "Birth Place",
"tr": "Doğum Yeri"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.BirthDate",
"en": "Birth Date",
"tr": "Doğum Tarihi"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.FatherName",
"en": "Father Name",
"tr": "Baba Adı"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.MotherName",
"en": "Mother Name",
"tr": "Anne Adı"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.MaritalStatus",
"en": "Marital Status",
"tr": "Medeni Durum"
},
{
"resourceName": "Platform",
"key": "Abp.Identity.User.UserInformation.MarriageDate",
"en": "Marriage Date",
"tr": "Evlenme Tarihi"
},
{
"resourceName": "Platform",
@ -3203,7 +3433,7 @@
"key": "Abp.Identity.ConcurrentUserLimitError",
"en": "The maximum number of simultaneous users has been reached.",
"tr": "Eş zamanlı kullanıcı limiti dolmuştur."
},
},
{
"resourceName": "Platform",
"key": "Abp.Identity.IpRestrictionError",
@ -3324,7 +3554,7 @@
"en": "Grid State Saved",
"tr": "Tablo Yapısı Kaydedildi"
},
{
{
"resourceName": "Platform",
"key": "ListForms.ListForm.FitColumns",
"en": "Fit Columns",
@ -5747,13 +5977,13 @@
"key": "App.Definitions.Department",
"tr": "Departmanlar",
"en": "Departments"
},
},
{
"resourceName": "Platform",
"key": "App.Definitions.JobPosition",
"tr": "Pozisyonlar",
"en": "Job Positions"
},
},
{
"resourceName": "Platform",
"key": "App.Definitions.ContactTag",

View file

@ -112,9 +112,35 @@ public static class PlatformConsts
public const string RoleNames = "RoleNames";
public const string IsVerified = "IsVerified";
public const string RocketUsername = "RocketUsername";
public const string HomeAddress = "HomeAddress";
public const string EducationLevel = "EducationLevel";
public const string GraduationSchool = "GraduationSchool";
public const string BloodType = "BloodType";
public const string Nationality = "Nationality";
public const string WorkHour = "WorkHour";
public const string DepartmentId = "DepartmentId";
public const string JobPositionId = "JobPositionId";
public const string SskNo = "SskNo";
public const string HireDate = "HireDate";
public const string TerminationDate = "TerminationDate";
public const string IdentityNumber = "IdentityNumber";
public const string SerialNo = "SerialNo";
public const string Province = "Province";
public const string District = "District";
public const string Village = "Village";
public const string VolumeNo = "VolumeNo";
public const string FamilySequenceNo = "FamilySequenceNo";
public const string SequenceNo = "SequenceNo";
public const string IssuedPlace = "IssuedPlace";
public const string IssuedDate = "IssuedDate";
public const string BirthPlace = "BirthPlace";
public const string BirthDate = "BirthDate";
public const string FatherName = "FatherName";
public const string MotherName = "MotherName";
public const string MaritalStatus = "MaritalStatus";
public const string MarriageDate = "MarriageDate";
public const string UserLockedOutMessage = GroupName + ".UserLockedOutMessage";
public const string InvalidUserNameOrPassword = GroupName + ".InvalidUserNameOrPassword";

View file

@ -70,5 +70,245 @@ public static class AbpIdentityUserExtensions
{
return user.GetProperty<Guid>(PlatformConsts.AbpIdentity.User.JobPositionId);
}
//Nationality
public static void SetNationality(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.Nationality, value);
}
public static string GetNationality(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.Nationality);
}
//SskNo
public static void SetSskNo(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.SskNo, value);
}
public static string GetSskNo(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.SskNo);
}
//HireDate
public static void SetHireDate(this IdentityUser user, DateTime? value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.HireDate, value);
}
public static DateTime? GetHireDate(this IdentityUser user)
{
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.HireDate);
}
//TerminationDate
public static void SetTerminationDate(this IdentityUser user, DateTime? value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.TerminationDate, value);
}
public static DateTime? GetTerminationDate(this IdentityUser user)
{
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.TerminationDate);
}
//IdentityNumber
public static void SetIdentityNumber(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.IdentityNumber, value);
}
public static string GetIdentityNumber(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.IdentityNumber);
}
//SerialNo
public static void SetSerialNo(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.SerialNo, value);
}
public static string GetSerialNo(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.SerialNo);
}
//Province
public static void SetProvince(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.Province, value);
}
public static string GetProvince(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.Province);
}
//District
public static void SetDistrict(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.District, value);
}
public static string GetDistrict(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.District);
}
//Village
public static void SetVillage(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.Village, value);
}
public static string GetVillage(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.Village);
}
//VolumeNo
public static void SetVolumeNo(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.VolumeNo, value);
}
public static string GetVolumeNo(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.VolumeNo);
}
//FamilySequenceNo
public static void SetFamilySequenceNo(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.FamilySequenceNo, value);
}
public static string GetFamilySequenceNo(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.FamilySequenceNo);
}
//SequenceNo
public static void SetSequenceNo(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.SequenceNo, value);
}
public static string GetSequenceNo(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.SequenceNo);
}
//IssuedPlace
public static void SetIssuedPlace(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.IssuedPlace, value);
}
public static string GetIssuedPlace(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.IssuedPlace);
}
//IssuedDate
public static void SetIssuedDate(this IdentityUser user, DateTime? value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.IssuedDate, value);
}
public static DateTime? GetIssuedDate(this IdentityUser user)
{
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.IssuedDate);
}
//BirthPlace
public static void SetBirthPlace(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.BirthPlace, value);
}
public static string GetBirthPlace(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.BirthPlace);
}
//BirthDate
public static void SetBirthDate(this IdentityUser user, DateTime? value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.BirthDate, value);
}
public static DateTime? GetBirthDate(this IdentityUser user)
{
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.BirthDate);
}
//FatherName
public static void SetFatherName(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.FatherName, value);
}
public static string GetFatherName(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.FatherName);
}
//MotherName
public static void SetMotherName(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.MotherName, value);
}
public static string GetMotherName(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.MotherName);
}
//MaritalStatus
public static void SetMaritalStatus(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.MaritalStatus, value);
}
public static string GetMaritalStatus(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.MaritalStatus);
}
//MarriageDate
public static void SetMarriageDate(this IdentityUser user, DateTime? value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.MarriageDate, value);
}
public static DateTime? GetMarriageDate(this IdentityUser user)
{
return user.GetProperty<DateTime?>(PlatformConsts.AbpIdentity.User.MarriageDate);
}
//HomeAddress
public static void SetHomeAddress(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.HomeAddress, value);
}
public static string GetHomeAddress(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.HomeAddress);
}
//EducationLevel
public static void SetEducationLevel(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.EducationLevel, value);
}
public static string GetEducationLevel(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.EducationLevel);
}
//GraduationSchool
public static void SetGraduationSchool(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.GraduationSchool, value);
}
public static string GetGraduationSchool(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.GraduationSchool);
}
//BloodType
public static void SetBloodType(this IdentityUser user, string value)
{
user.SetProperty(PlatformConsts.AbpIdentity.User.BloodType, value);
}
public static string GetBloodType(this IdentityUser user)
{
return user.GetProperty<string>(PlatformConsts.AbpIdentity.User.BloodType);
}
}

View file

@ -73,6 +73,222 @@ public static class PlatformEfCoreEntityExtensionMappings
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.Nationality,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(128).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.SskNo,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(32).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, DateTime?>(
PlatformConsts.AbpIdentity.User.HireDate,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, DateTime?>(
PlatformConsts.AbpIdentity.User.TerminationDate,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.IdentityNumber,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(15).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.SerialNo,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(32).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.Province,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(128).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.District,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(128).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.Village,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(128).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.VolumeNo,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(32).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.FamilySequenceNo,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(32).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.SequenceNo,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(32).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.IssuedPlace,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(256).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, DateTime?>(
PlatformConsts.AbpIdentity.User.IssuedDate,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.BirthPlace,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(256).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, DateTime?>(
PlatformConsts.AbpIdentity.User.BirthDate,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.FatherName,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(128).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.MotherName,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(128).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.MaritalStatus,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(32).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, DateTime?>(
PlatformConsts.AbpIdentity.User.MarriageDate,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.HomeAddress,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(512).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.EducationLevel,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(128).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.GraduationSchool,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(256).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
PlatformConsts.AbpIdentity.User.BloodType,
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasMaxLength(16).HasDefaultValue(null);
}
);
ObjectExtensionManager.Instance
.MapEfCoreProperty<Tenant, bool>(
PlatformConsts.Tenants.IsActive,

View file

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace Sozsoft.Platform.Migrations
{
[DbContext(typeof(PlatformDbContext))]
[Migration("20260504141857_Initial")]
[Migration("20260505071050_Initial")]
partial class Initial
{
/// <inheritdoc />
@ -5049,6 +5049,17 @@ namespace Sozsoft.Platform.Migrations
.HasDefaultValue(0)
.HasColumnName("AccessFailedCount");
b.Property<DateTime?>("BirthDate")
.HasColumnType("datetime2");
b.Property<string>("BirthPlace")
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
b.Property<string>("BloodType")
.HasMaxLength(16)
.HasColumnType("nvarchar(16)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
@ -5075,6 +5086,14 @@ namespace Sozsoft.Platform.Migrations
b.Property<Guid>("DepartmentId")
.HasColumnType("uniqueidentifier");
b.Property<string>("District")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("EducationLevel")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("Email")
.IsRequired()
.HasMaxLength(256)
@ -5095,6 +5114,29 @@ namespace Sozsoft.Platform.Migrations
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<string>("FamilySequenceNo")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<string>("FatherName")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("GraduationSchool")
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
b.Property<DateTime?>("HireDate")
.HasColumnType("datetime2");
b.Property<string>("HomeAddress")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property<string>("IdentityNumber")
.HasMaxLength(15)
.HasColumnType("nvarchar(15)");
b.Property<bool>("IsActive")
.HasColumnType("bit")
.HasColumnName("IsActive");
@ -5116,6 +5158,13 @@ namespace Sozsoft.Platform.Migrations
.HasColumnType("bit")
.HasDefaultValue(false);
b.Property<DateTime?>("IssuedDate")
.HasColumnType("datetime2");
b.Property<string>("IssuedPlace")
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
b.Property<Guid>("JobPositionId")
.HasColumnType("uniqueidentifier");
@ -5142,11 +5191,26 @@ namespace Sozsoft.Platform.Migrations
b.Property<DateTime?>("LoginEndDate")
.HasColumnType("datetime2");
b.Property<string>("MaritalStatus")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<DateTime?>("MarriageDate")
.HasColumnType("datetime2");
b.Property<string>("MotherName")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("Name")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<string>("Nationality")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("NormalizedEmail")
.IsRequired()
.HasMaxLength(256)
@ -5175,6 +5239,10 @@ namespace Sozsoft.Platform.Migrations
.HasDefaultValue(false)
.HasColumnName("PhoneNumberConfirmed");
b.Property<string>("Province")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("RocketUsername")
.HasColumnType("nvarchar(max)");
@ -5184,9 +5252,21 @@ namespace Sozsoft.Platform.Migrations
.HasColumnType("nvarchar(256)")
.HasColumnName("SecurityStamp");
b.Property<string>("SequenceNo")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<string>("SerialNo")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<bool>("ShouldChangePasswordOnNextLogin")
.HasColumnType("bit");
b.Property<string>("SskNo")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<string>("Surname")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
@ -5196,6 +5276,9 @@ namespace Sozsoft.Platform.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<DateTime?>("TerminationDate")
.HasColumnType("datetime2");
b.Property<bool>("TwoFactorEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
@ -5208,6 +5291,14 @@ namespace Sozsoft.Platform.Migrations
.HasColumnType("nvarchar(256)")
.HasColumnName("UserName");
b.Property<string>("Village")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("VolumeNo")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<string>("WorkHour")
.HasColumnType("nvarchar(max)");

View file

@ -417,11 +417,35 @@ namespace Sozsoft.Platform.Migrations
ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "bit", nullable: false),
EntityVersion = table.Column<int>(type: "int", nullable: false),
LastPasswordChangeTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
BirthDate = table.Column<DateTime>(type: "datetime2", nullable: true),
BirthPlace = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
BloodType = table.Column<string>(type: "nvarchar(16)", maxLength: 16, nullable: true),
DepartmentId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
District = 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),
FatherName = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true),
GraduationSchool = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
HireDate = table.Column<DateTime>(type: "datetime2", nullable: true),
HomeAddress = table.Column<string>(type: "nvarchar(512)", maxLength: 512, nullable: true),
IdentityNumber = table.Column<string>(type: "nvarchar(15)", maxLength: 15, nullable: true),
IsVerified = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
IssuedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
IssuedPlace = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
JobPositionId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
LoginEndDate = table.Column<DateTime>(type: "datetime2", nullable: true),
MaritalStatus = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: true),
MarriageDate = table.Column<DateTime>(type: "datetime2", nullable: true),
MotherName = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true),
Nationality = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true),
Province = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true),
RocketUsername = table.Column<string>(type: "nvarchar(max)", nullable: true),
SequenceNo = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: true),
SerialNo = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: true),
SskNo = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: true),
TerminationDate = table.Column<DateTime>(type: "datetime2", nullable: true),
Village = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true),
VolumeNo = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: true),
WorkHour = table.Column<string>(type: "nvarchar(max)", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: false),

View file

@ -5046,6 +5046,17 @@ namespace Sozsoft.Platform.Migrations
.HasDefaultValue(0)
.HasColumnName("AccessFailedCount");
b.Property<DateTime?>("BirthDate")
.HasColumnType("datetime2");
b.Property<string>("BirthPlace")
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
b.Property<string>("BloodType")
.HasMaxLength(16)
.HasColumnType("nvarchar(16)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
@ -5072,6 +5083,14 @@ namespace Sozsoft.Platform.Migrations
b.Property<Guid>("DepartmentId")
.HasColumnType("uniqueidentifier");
b.Property<string>("District")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("EducationLevel")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("Email")
.IsRequired()
.HasMaxLength(256)
@ -5092,6 +5111,29 @@ namespace Sozsoft.Platform.Migrations
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<string>("FamilySequenceNo")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<string>("FatherName")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("GraduationSchool")
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
b.Property<DateTime?>("HireDate")
.HasColumnType("datetime2");
b.Property<string>("HomeAddress")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property<string>("IdentityNumber")
.HasMaxLength(15)
.HasColumnType("nvarchar(15)");
b.Property<bool>("IsActive")
.HasColumnType("bit")
.HasColumnName("IsActive");
@ -5113,6 +5155,13 @@ namespace Sozsoft.Platform.Migrations
.HasColumnType("bit")
.HasDefaultValue(false);
b.Property<DateTime?>("IssuedDate")
.HasColumnType("datetime2");
b.Property<string>("IssuedPlace")
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
b.Property<Guid>("JobPositionId")
.HasColumnType("uniqueidentifier");
@ -5139,11 +5188,26 @@ namespace Sozsoft.Platform.Migrations
b.Property<DateTime?>("LoginEndDate")
.HasColumnType("datetime2");
b.Property<string>("MaritalStatus")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<DateTime?>("MarriageDate")
.HasColumnType("datetime2");
b.Property<string>("MotherName")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("Name")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<string>("Nationality")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("NormalizedEmail")
.IsRequired()
.HasMaxLength(256)
@ -5172,6 +5236,10 @@ namespace Sozsoft.Platform.Migrations
.HasDefaultValue(false)
.HasColumnName("PhoneNumberConfirmed");
b.Property<string>("Province")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("RocketUsername")
.HasColumnType("nvarchar(max)");
@ -5181,9 +5249,21 @@ namespace Sozsoft.Platform.Migrations
.HasColumnType("nvarchar(256)")
.HasColumnName("SecurityStamp");
b.Property<string>("SequenceNo")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<string>("SerialNo")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<bool>("ShouldChangePasswordOnNextLogin")
.HasColumnType("bit");
b.Property<string>("SskNo")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<string>("Surname")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
@ -5193,6 +5273,9 @@ namespace Sozsoft.Platform.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<DateTime?>("TerminationDate")
.HasColumnType("datetime2");
b.Property<bool>("TwoFactorEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
@ -5205,6 +5288,14 @@ namespace Sozsoft.Platform.Migrations
.HasColumnType("nvarchar(256)")
.HasColumnName("UserName");
b.Property<string>("Village")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<string>("VolumeNo")
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property<string>("WorkHour")
.HasColumnType("nvarchar(max)");

View file

@ -6,10 +6,10 @@ export enum SIZES {
}
export const CONTROL_SIZES = {
[SIZES.XS]: 7,
[SIZES.SM]: 9,
[SIZES.MD]: 11,
[SIZES.LG]: 14,
[SIZES.XS]: 6,
[SIZES.SM]: 8,
[SIZES.MD]: 10,
[SIZES.LG]: 12,
}
export const LAYOUT = {

View file

@ -140,6 +140,30 @@ export interface UserInfoViewModel extends ExtensibleObject {
workHour?: string
departmentId?: string
jobPositionId?: string
nationality?: string
sskNo?: string
hireDate?: Date | string
terminationDate?: Date | string
identityNumber?: string
serialNo?: string
province?: string
district?: string
village?: string
volumeNo?: string
familySequenceNo?: string
sequenceNo?: string
issuedPlace?: string
issuedDate?: Date | string
birthPlace?: string
birthDate?: Date | string
fatherName?: string
motherName?: string
maritalStatus?: string
marriageDate?: Date | string
homeAddress?: string
educationLevel?: string
graduationSchool?: string
bloodType?: string
}
export interface AssignedRoleViewModel {

View file

@ -128,6 +128,25 @@ export interface SaveHomePageInput {
solutions: SaveHomeSolutionInput[]
}
export interface CountryDto {
id: string;
name: string;
groupName: string;
currency: string;
phoneCode: number;
taxLabel: string;
zipRequired: boolean;
stateRequired: boolean;
cities: CityDto[];
}
export interface CityDto {
id: string;
name: string;
}
export function getHome() {
return apiService.fetchData<HomeDto>(
{
@ -138,6 +157,16 @@ export function getHome() {
)
}
export function getCountry() {
return apiService.fetchData<CountryDto[]>(
{
method: 'GET',
url: '/api/app/public/country',
},
{ apiName: 'Default' },
)
}
export function saveHomePage(input: SaveHomePageInput) {
return apiService.fetchData<void, SaveHomePageInput>(
{

View file

@ -29,12 +29,21 @@ import {
putUserLookout,
putUserPermission,
} from '@/services/identity.service'
import { CountryDto, getCountry } from '@/services/home.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, FaCheckCircle } from 'react-icons/fa'
import {
FaBuilding,
FaLockOpen,
FaUser,
FaFileAlt,
FaTrashAlt,
FaCheckCircle,
FaUserAstronaut,
} from 'react-icons/fa'
import { useParams } from 'react-router-dom'
import * as Yup from 'yup'
import { SelectBoxOption, SelectBoxOptionWithGroup } from '@/types/shared'
@ -54,6 +63,7 @@ function UserDetails() {
const [loading, setLoading] = useState(true)
const [open, setOpen] = useState(false)
const [confirmDeleteClaim, setConfirmDeleteClaim] = useState<AssignedClaimViewModel | null>(null)
const [countries, setCountries] = useState<CountryDto[]>([])
const getUser = async () => {
const { data } = await getUserDetail(userId || '')
@ -62,6 +72,7 @@ function UserDetails() {
useEffect(() => {
getUser()
getCountry().then(({ data }) => setCountries(data))
}, [])
const scheme = Yup.object().shape({
@ -119,6 +130,12 @@ function UserDetails() {
<TabNav value="permission" icon={<FaCheckCircle />}>
{translate('::Abp.Identity.User.Permissions')}
</TabNav>
<TabNav value="work" icon={<FaBuilding />}>
{translate('::Abp.Identity.User.WorkInformation')}
</TabNav>
<TabNav value="identity" icon={<FaUserAstronaut />}>
{translate('::Abp.Identity.User.IndentityInformation')}
</TabNav>
<TabNav value="lockout" icon={<FaLockOpen />}>
{translate('::Abp.Identity.User.LockoutManagement')}
</TabNav>
@ -136,7 +153,7 @@ function UserDetails() {
toast.push(
<Notification type="success" duration={2000}>
{translate('Kaydet')}
{translate('::Kaydet')}
</Notification>,
{
placement: 'top-end',
@ -148,22 +165,6 @@ function UserDetails() {
}}
>
{({ isSubmitting, values }) => {
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 (
<Form>
<div className="w-1/2">
@ -196,59 +197,6 @@ function UserDetails() {
</FormItem>
</div>
<div>
<FormItem
label={translate(
'::Abp.Identity.User.UserInformation.DepartmentId',
)}
>
<Field type="text" name="departmentId">
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
options={departmentOptions}
isClearable={true}
value={departmentOptions.filter(
(option) => option.value === values.departmentId,
)}
onChange={(option) => {
form.setFieldValue(field.name, option?.value)
form.setFieldValue('jobPositionId', null)
}}
/>
)}
</Field>
</FormItem>
</div>
<div>
<FormItem
label={translate(
'::Abp.Identity.User.UserInformation.JobPositionId',
)}
>
<Field type="text" name="jobPositionId">
{({ field, form }: FieldProps<SelectBoxOptionWithGroup>) => (
<Select
field={field}
form={form}
options={jobPositionOptions.filter(
(option) => option.group === values.departmentId,
)}
isClearable={true}
value={jobPositionOptions.filter(
(option) => option.value === values.jobPositionId,
)}
onChange={(option) =>
form.setFieldValue(field.name, option?.value)
}
/>
)}
</Field>
</FormItem>
</div>
<div>
<h6 className="mb-4">
{translate(
@ -276,7 +224,15 @@ function UserDetails() {
component={Input}
/>
</FormItem>
<FormItem label={translate('::RocketUsername')}>
<FormItem label={translate('::Abp.Account.HomeAddress')}>
<Field
type="text"
name="homeAddress"
placeholder={translate('::Abp.Account.HomeAddress')}
component={Input}
/>
</FormItem>
<FormItem size="xs" label={translate('::RocketUsername')}>
<Field
type="text"
name="rocketUsername"
@ -286,6 +242,134 @@ function UserDetails() {
</FormItem>
</div>
<div>
<h6 className="mb-4">
{translate(
'::Abp.Identity.User.UserInformation.AdditionalInformation',
)}
</h6>
<FormItem label={translate('::Abp.Account.Nationality')}>
<Field type="text" name="nationality">
{({ field, form }: FieldProps<SelectBoxOption>) => {
const nationalityOptions: SelectBoxOption[] = countries.map(
(c) => ({ value: c.name, label: c.name }),
)
return (
<Select
field={field}
form={form}
options={nationalityOptions}
isClearable={true}
value={nationalityOptions.filter(
(o) => o.value === values.nationality,
)}
onChange={(option) =>
form.setFieldValue(field.name, option?.value ?? null)
}
/>
)
}}
</Field>
</FormItem>
<FormItem label={translate('::Abp.Account.EducationLevel')}>
<Field type="text" name="educationLevel">
{({ field, form }: FieldProps<SelectBoxOption>) => {
const educationOptions: SelectBoxOption[] = [
{
value: 'İlkokul',
label:
translate('::App.EducationLevel.Primary') || 'İlkokul',
},
{
value: 'Ortaokul',
label:
translate('::App.EducationLevel.MiddleSchool') ||
'Ortaokul',
},
{
value: 'Lise',
label:
translate('::App.EducationLevel.HighSchool') || 'Lise',
},
{
value: 'Ön Lisans',
label:
translate('::App.EducationLevel.Associate') ||
'Ön Lisans',
},
{
value: 'Lisans',
label:
translate('::App.EducationLevel.Bachelor') || 'Lisans',
},
{
value: 'Yüksek Lisans',
label:
translate('::App.EducationLevel.Master') ||
'Yüksek Lisans',
},
{
value: 'Doktora',
label: translate('::App.EducationLevel.PhD') || 'Doktora',
},
]
return (
<Select
field={field}
form={form}
options={educationOptions}
isClearable={true}
value={educationOptions.filter(
(o) => o.value === values.educationLevel,
)}
onChange={(option) =>
form.setFieldValue(field.name, option?.value ?? null)
}
/>
)
}}
</Field>
</FormItem>
<FormItem label={translate('::Abp.Account.GraduationSchool')}>
<Field
type="text"
name="graduationSchool"
placeholder={translate('::GraduationSchool')}
component={Input}
/>
</FormItem>
<FormItem label={translate('::Abp.Account.BloodType')}>
<Field type="text" name="bloodType">
{({ field, form }: FieldProps<SelectBoxOption>) => {
const bloodTypeOptions: SelectBoxOption[] = [
{ value: 'A Rh+', label: 'A Rh+' },
{ value: 'A Rh-', label: 'A Rh-' },
{ value: 'B Rh+', label: 'B Rh+' },
{ value: 'B Rh-', label: 'B Rh-' },
{ value: 'AB Rh+', label: 'AB Rh+' },
{ value: 'AB Rh-', label: 'AB Rh-' },
{ value: '0 Rh+', label: '0 Rh+' },
{ value: '0 Rh-', label: '0 Rh-' },
]
return (
<Select
field={field}
form={form}
options={bloodTypeOptions}
isClearable={true}
value={bloodTypeOptions.filter(
(o) => o.value === values.bloodType,
)}
onChange={(option) =>
form.setFieldValue(field.name, option?.value ?? null)
}
/>
)
}}
</Field>
</FormItem>
</div>
<div>
<h6 className="mb-4">
{translate('::Abp.Identity.User.UserInformation.AccountTimestamps')}
@ -477,6 +561,485 @@ function UserDetails() {
</div>
</TabContent>
<TabContent value="work">
<div className="mt-5">
<Formik
initialValues={userDetails}
onSubmit={async (values, { resetForm, setSubmitting }) => {
setSubmitting(true)
await putUserDetail({ ...values })
toast.push(
<Notification type="success" duration={2000}>
{translate('::Kaydet')}
</Notification>,
{
placement: 'top-end',
},
)
getUser()
setSubmitting(false)
}}
>
{({ isSubmitting, values }) => {
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 (
<Form>
<div className="w-1/2">
<FormContainer size="md">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-2 w-full">
<div>
<FormItem
label={translate(
'::Abp.Identity.User.UserInformation.DepartmentId',
)}
>
<Field type="text" name="departmentId">
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
options={departmentOptions}
isClearable={true}
value={departmentOptions.filter(
(option) => option.value === values.departmentId,
)}
onChange={(option) => {
form.setFieldValue(field.name, option?.value)
form.setFieldValue('jobPositionId', null)
}}
/>
)}
</Field>
</FormItem>
</div>
<div>
<FormItem
label={translate(
'::Abp.Identity.User.UserInformation.JobPositionId',
)}
>
<Field type="text" name="jobPositionId">
{({ field, form }: FieldProps<SelectBoxOptionWithGroup>) => (
<Select
field={field}
form={form}
options={jobPositionOptions.filter(
(option) => option.group === values.departmentId,
)}
isClearable={true}
value={jobPositionOptions.filter(
(option) => option.value === values.jobPositionId,
)}
onChange={(option) =>
form.setFieldValue(field.name, option?.value)
}
/>
)}
</Field>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.SskNo')}
>
<Field
type="text"
name="sskNo"
placeholder={translate('::Abp.Identity.User.UserInformation.SskNo')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.HireDate')}
>
<Field name="hireDate">
{({ field, form }: FieldProps) => (
<DatePicker
field={field}
form={form}
value={field.value ? dayjs(field.value).toDate() : null}
placeholder={translate('::Abp.Identity.User.UserInformation.HireDate')}
onChange={(date) => {
form.setFieldValue(
field.name,
date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss') : null,
)
}}
/>
)}
</Field>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.TerminationDate')}
>
<Field name="terminationDate">
{({ field, form }: FieldProps) => (
<DatePicker
field={field}
form={form}
value={field.value ? dayjs(field.value).toDate() : null}
placeholder={translate('::Abp.Identity.User.UserInformation.TerminationDate')}
onChange={(date) => {
form.setFieldValue(
field.name,
date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss') : null,
)
}}
/>
)}
</Field>
</FormItem>
</div>
</div>
</FormContainer>
</div>
<div className="w-1/2">
<Button variant="solid" block loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')}
</Button>
</div>
</Form>
)
}}
</Formik>
</div>
</TabContent>
<TabContent value="identity">
<div className="mt-5">
<Formik
initialValues={userDetails}
onSubmit={async (values, { resetForm, setSubmitting }) => {
setSubmitting(true)
await putUserDetail({ ...values })
toast.push(
<Notification type="success" duration={2000}>
{translate('::Kaydet')}
</Notification>,
{
placement: 'top-end',
},
)
getUser()
setSubmitting(false)
}}
>
{({ isSubmitting, values }) => {
const maritalStatusOptions: SelectBoxOption[] = [
{
value: 'Bekar',
label: translate('::App.MaritalStatus.Single') || 'Bekar',
},
{
value: 'Evli',
label: translate('::App.MaritalStatus.Married') || 'Evli',
},
{
value: 'Boşanmış',
label: translate('::App.MaritalStatus.Divorced') || 'Boşanmış',
},
{
value: 'Dul',
label: translate('::App.MaritalStatus.Widowed') || 'Dul',
},
]
return (
<Form>
<div className="w-1/2">
<FormContainer size="md">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-2 w-full">
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.IdentityNumber')}
>
<Field
type="text"
name="identityNumber"
placeholder={translate('::Abp.Identity.User.UserInformation.IdentityNumber')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.SerialNo')}
>
<Field
type="text"
name="serialNo"
placeholder={translate('::Abp.Identity.User.UserInformation.SerialNo')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.Province')}
>
<Field
type="text"
name="province"
placeholder={translate('::Abp.Identity.User.UserInformation.Province')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.District')}
>
<Field
type="text"
name="district"
placeholder={translate('::Abp.Identity.User.UserInformation.District')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.Village')}
>
<Field
type="text"
name="village"
placeholder={translate('::Abp.Identity.User.UserInformation.Village')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.VolumeNo')}
>
<Field
type="text"
name="volumeNo"
placeholder={translate('::Abp.Identity.User.UserInformation.VolumeNo')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.FamilySequenceNo')}
>
<Field
type="text"
name="familySequenceNo"
placeholder={translate('::Abp.Identity.User.UserInformation.FamilySequenceNo')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.SequenceNo')}
>
<Field
type="text"
name="sequenceNo"
placeholder={translate('::Abp.Identity.User.UserInformation.SequenceNo')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.IssuedPlace')}
>
<Field
type="text"
name="issuedPlace"
placeholder={translate('::Abp.Identity.User.UserInformation.IssuedPlace')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.IssuedDate')}
>
<Field name="issuedDate">
{({ field, form }: FieldProps) => (
<DatePicker
field={field}
form={form}
value={field.value ? dayjs(field.value).toDate() : null}
placeholder={translate('::Abp.Identity.User.UserInformation.IssuedDate')}
onChange={(date) => {
form.setFieldValue(
field.name,
date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss') : null,
)
}}
/>
)}
</Field>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.BirthPlace')}
>
<Field
type="text"
name="birthPlace"
placeholder={translate('::Abp.Identity.User.UserInformation.BirthPlace')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.BirthDate')}
>
<Field name="birthDate">
{({ field, form }: FieldProps) => (
<DatePicker
field={field}
form={form}
value={field.value ? dayjs(field.value).toDate() : null}
placeholder={translate('::Abp.Identity.User.UserInformation.BirthDate')}
onChange={(date) => {
form.setFieldValue(
field.name,
date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss') : null,
)
}}
/>
)}
</Field>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.FatherName')}
>
<Field
type="text"
name="fatherName"
placeholder={translate('::Abp.Identity.User.UserInformation.FatherName')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.MotherName')}
>
<Field
type="text"
name="motherName"
placeholder={translate('::Abp.Identity.User.UserInformation.MotherName')}
component={Input}
/>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.MaritalStatus')}
>
<Field type="text" name="maritalStatus">
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
options={maritalStatusOptions}
isClearable={true}
value={maritalStatusOptions.filter(
(o) => o.value === values.maritalStatus,
)}
onChange={(option) =>
form.setFieldValue(field.name, option?.value ?? null)
}
/>
)}
</Field>
</FormItem>
</div>
<div>
<FormItem
label={translate('::Abp.Identity.User.UserInformation.MarriageDate')}
>
<Field name="marriageDate">
{({ field, form }: FieldProps) => (
<DatePicker
field={field}
form={form}
value={field.value ? dayjs(field.value).toDate() : null}
placeholder={translate('::Abp.Identity.User.UserInformation.MarriageDate')}
onChange={(date) => {
form.setFieldValue(
field.name,
date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss') : null,
)
}}
/>
)}
</Field>
</FormItem>
</div>
</div>
</FormContainer>
</div>
<div className="w-1/2">
<Button variant="solid" block loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')}
</Button>
</div>
</Form>
)
}}
</Formik>
</div>
</TabContent>
<TabContent value="lockout">
<div className="mt-5">
<Formik
@ -766,6 +1329,7 @@ function UserDetails() {
</Formik>
</div>
</TabContent>
<TabContent value="claimTypes">
<div className="mt-5 w-1/2">
<Table compact>