Identity NomalizeName

This commit is contained in:
Sedat Öztürk 2026-06-02 23:24:06 +03:00
parent d161e0f4b9
commit a9e1a15183
4 changed files with 59 additions and 54 deletions

View file

@ -18,6 +18,7 @@ using Volo.Abp.Identity;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Identity;
namespace Sozsoft.Platform.Intranet; namespace Sozsoft.Platform.Intranet;
@ -27,7 +28,7 @@ public class IntranetAppService : PlatformAppService, IIntranetAppService
private readonly ICurrentTenant _currentTenant; private readonly ICurrentTenant _currentTenant;
private readonly BlobManager _blobContainer; private readonly BlobManager _blobContainer;
private readonly IConfiguration _configuration; private readonly IConfiguration _configuration;
private readonly ILookupNormalizer _lookupNormalizer;
private readonly IRepository<Event, Guid> _eventRepository; private readonly IRepository<Event, Guid> _eventRepository;
private readonly IIdentityUserAppService _identityUserAppService; private readonly IIdentityUserAppService _identityUserAppService;
private readonly IIdentityUserRepository _identityUserRepository; private readonly IIdentityUserRepository _identityUserRepository;
@ -49,7 +50,8 @@ public class IntranetAppService : PlatformAppService, IIntranetAppService
ICurrentTenant currentTenant, ICurrentTenant currentTenant,
BlobManager blobContainer, BlobManager blobContainer,
IConfiguration configuration, IConfiguration configuration,
ILookupNormalizer lookupNormalizer,
IRepository<Event, Guid> eventRepository, IRepository<Event, Guid> eventRepository,
IIdentityUserAppService identityUserAppService, IIdentityUserAppService identityUserAppService,
IIdentityUserRepository identityUserRepository, IIdentityUserRepository identityUserRepository,
@ -71,6 +73,7 @@ public class IntranetAppService : PlatformAppService, IIntranetAppService
_currentTenant = currentTenant; _currentTenant = currentTenant;
_blobContainer = blobContainer; _blobContainer = blobContainer;
_configuration = configuration; _configuration = configuration;
_lookupNormalizer = lookupNormalizer;
_eventRepository = eventRepository; _eventRepository = eventRepository;
_identityUserAppService = identityUserAppService; _identityUserAppService = identityUserAppService;
_identityUserRepository = identityUserRepository; _identityUserRepository = identityUserRepository;
@ -114,12 +117,12 @@ public class IntranetAppService : PlatformAppService, IIntranetAppService
} }
private UserInfoViewModel MapUserInfoViewModel( private UserInfoViewModel MapUserInfoViewModel(
IdentityUser user, Volo.Abp.Identity.IdentityUser user,
IReadOnlyDictionary<Guid, string> departmentDict, IReadOnlyDictionary<Guid, string> departmentDict,
IReadOnlyDictionary<Guid, JobPosition> jobPositionDict) IReadOnlyDictionary<Guid, JobPosition> jobPositionDict)
{ {
return ObjectMapper return ObjectMapper
.Map<IdentityUser, UserInfoViewModel>(user) .Map<Volo.Abp.Identity.IdentityUser, UserInfoViewModel>(user)
.MapDepartmentAndJobPositionAssignments(departmentDict, jobPositionDict); .MapDepartmentAndJobPositionAssignments(departmentDict, jobPositionDict);
} }
@ -127,9 +130,8 @@ public class IntranetAppService : PlatformAppService, IIntranetAppService
IReadOnlyDictionary<Guid, string> departmentDict, IReadOnlyDictionary<Guid, string> departmentDict,
IReadOnlyDictionary<Guid, JobPosition> jobPositionDict) IReadOnlyDictionary<Guid, JobPosition> jobPositionDict)
{ {
var normalizedAdmin = PlatformConsts.AbpIdentity.User.AdminEmailDefaultValue; var normalizedAdmin = _lookupNormalizer.NormalizeName(PlatformConsts.AbpIdentity.User.AdminEmailDefaultValue);
var user = await _identityUserRepository.FindByNormalizedUserNameAsync(normalizedAdmin) var user = await _identityUserRepository.FindByNormalizedUserNameAsync(normalizedAdmin);
?? await _identityUserRepository.FindByNormalizedEmailAsync(normalizedAdmin);
if (user == null && CurrentUser.Id.HasValue) if (user == null && CurrentUser.Id.HasValue)
{ {

View file

@ -162,7 +162,7 @@ public static class PlatformConsts
public const string AdminRoleName = "admin"; public const string AdminRoleName = "admin";
public const string AdminNameDefaultValue = "Sedat"; public const string AdminNameDefaultValue = "Sedat";
public const string AdminSurNameDefaultValue = "ÖZTÜRK"; public const string AdminSurNameDefaultValue = "ÖZTÜRK";
public const string AdminEmailDefaultValue = "SYSTEM@SOZSOFT.COM"; public const string AdminEmailDefaultValue = "system@sozsoft.com";
public const string AdminPasswordDefaultValue = "1q2w3E*"; public const string AdminPasswordDefaultValue = "1q2w3E*";
public const string AdminPhoneNumberDefaultValue = "05449476346"; public const string AdminPhoneNumberDefaultValue = "05449476346";
public const string AdminRocketUsernameDefaultValue = "sedat.ozturk"; public const string AdminRocketUsernameDefaultValue = "sedat.ozturk";

View file

@ -202,7 +202,7 @@
"Summary": "blog.posts.ai.excerpt", "Summary": "blog.posts.ai.excerpt",
"CoverImage": "https://images.pexels.com/photos/8386434/pexels-photo-8386434.jpeg?auto=compress&cs=tinysrgb&w=1920", "CoverImage": "https://images.pexels.com/photos/8386434/pexels-photo-8386434.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.technology", "CategoryName": "blog.categories.technology",
"Author": "SYSTEM@SOZSOFT.COM" "Author": "system@sozsoft.com"
}, },
{ {
"Title": "blog.posts.web.title", "Title": "blog.posts.web.title",
@ -213,7 +213,7 @@
"Summary": "blog.posts.web.excerpt", "Summary": "blog.posts.web.excerpt",
"CoverImage": "https://images.pexels.com/photos/11035471/pexels-photo-11035471.jpeg?auto=compress&cs=tinysrgb&w=1920", "CoverImage": "https://images.pexels.com/photos/11035471/pexels-photo-11035471.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.webdev", "CategoryName": "blog.categories.webdev",
"Author": "SYSTEM@SOZSOFT.COM" "Author": "system@sozsoft.com"
}, },
{ {
"Title": "blog.posts.security.title", "Title": "blog.posts.security.title",
@ -224,7 +224,7 @@
"Summary": "blog.posts.security.excerpt", "Summary": "blog.posts.security.excerpt",
"CoverImage": "https://images.pexels.com/photos/5380642/pexels-photo-5380642.jpeg?auto=compress&cs=tinysrgb&w=1920", "CoverImage": "https://images.pexels.com/photos/5380642/pexels-photo-5380642.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.security", "CategoryName": "blog.categories.security",
"Author": "SYSTEM@SOZSOFT.COM" "Author": "system@sozsoft.com"
}, },
{ {
"Title": "blog.posts.mobile.title", "Title": "blog.posts.mobile.title",
@ -235,7 +235,7 @@
"ReadTime": "4 dk", "ReadTime": "4 dk",
"CoverImage": "https://images.pexels.com/photos/13017583/pexels-photo-13017583.jpeg?auto=compress&cs=tinysrgb&w=1920", "CoverImage": "https://images.pexels.com/photos/13017583/pexels-photo-13017583.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.mobile", "CategoryName": "blog.categories.mobile",
"Author": "SYSTEM@SOZSOFT.COM" "Author": "system@sozsoft.com"
}, },
{ {
"Title": "blog.posts.database.title", "Title": "blog.posts.database.title",
@ -246,7 +246,7 @@
"ReadTime": "8 dk", "ReadTime": "8 dk",
"CoverImage": "https://images.pexels.com/photos/325229/pexels-photo-325229.jpeg?auto=compress&cs=tinysrgb&w=1920", "CoverImage": "https://images.pexels.com/photos/325229/pexels-photo-325229.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.database", "CategoryName": "blog.categories.database",
"Author": "SYSTEM@SOZSOFT.COM" "Author": "system@sozsoft.com"
}, },
{ {
"Title": "blog.posts.digital.title", "Title": "blog.posts.digital.title",
@ -257,7 +257,7 @@
"ReadTime": "6 dk", "ReadTime": "6 dk",
"CoverImage": "https://images.pexels.com/photos/7681091/pexels-photo-7681091.jpeg?auto=compress&cs=tinysrgb&w=1920", "CoverImage": "https://images.pexels.com/photos/7681091/pexels-photo-7681091.jpeg?auto=compress&cs=tinysrgb&w=1920",
"CategoryName": "blog.categories.digital", "CategoryName": "blog.categories.digital",
"Author": "SYSTEM@SOZSOFT.COM" "Author": "system@sozsoft.com"
} }
], ],
"GlobalSearch": [ "GlobalSearch": [
@ -341,7 +341,7 @@
"PermissionsJson": [ "PermissionsJson": [
{ {
"ResourceType": "User", "ResourceType": "User",
"ResourceId": "SYSTEM@SOZSOFT.COM" "ResourceId": "system@sozsoft.com"
} }
] ]
} }
@ -1464,7 +1464,7 @@
"content": "Ankara ofisimiz 1 Kasım tarihinde hizmete başlıyor! Tüm çalışanlarımızıılış törenimize davet ediyoruz.", "content": "Ankara ofisimiz 1 Kasım tarihinde hizmete başlıyor! Tüm çalışanlarımızıılış törenimize davet ediyoruz.",
"excerpt": "Ankara ofisimiz 1 Kasım tarihinde hizmete başlıyor!", "excerpt": "Ankara ofisimiz 1 Kasım tarihinde hizmete başlıyor!",
"category": "general", "category": "general",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"publishDate": "12-10-2024", "publishDate": "12-10-2024",
"isPinned": true, "isPinned": true,
"viewCount": 0, "viewCount": 0,
@ -1475,7 +1475,7 @@
"content": "Yıl sonu performans değerlendirmelerimiz 20 Ekim - 5 Kasım tarihleri arasında gerçekleştirilecektir. Lütfen formları zamanında doldurunuz.", "content": "Yıl sonu performans değerlendirmelerimiz 20 Ekim - 5 Kasım tarihleri arasında gerçekleştirilecektir. Lütfen formları zamanında doldurunuz.",
"excerpt": "Yıl sonu performans değerlendirmeleri başlıyor.", "excerpt": "Yıl sonu performans değerlendirmeleri başlıyor.",
"category": "event", "category": "event",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"publishDate": "08-10-2024", "publishDate": "08-10-2024",
"expiryDate": "05-11-2024", "expiryDate": "05-11-2024",
"isPinned": true, "isPinned": true,
@ -1486,7 +1486,7 @@
"content": "Bu Cumartesi saat 02: 00 - 06: 00 arası sistemlerimizde bakım çalışması yapılacaktır. Bu süre içinde sistemlere erişim sağlanamayacaktır.", "content": "Bu Cumartesi saat 02: 00 - 06: 00 arası sistemlerimizde bakım çalışması yapılacaktır. Bu süre içinde sistemlere erişim sağlanamayacaktır.",
"excerpt": "Cumartesi gecesi planlı bakım çalışması", "excerpt": "Cumartesi gecesi planlı bakım çalışması",
"category": "urgent", "category": "urgent",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"publishDate": "08-10-2024", "publishDate": "08-10-2024",
"isPinned": false, "isPinned": false,
"viewCount": 0 "viewCount": 0
@ -1496,7 +1496,7 @@
"content": "Yazılım Geliştirme ekibimiz için React İleri Seviye eğitimi 25-26 Ekim tarihlerinde düzenlenecektir. Katılım için IK birimine başvurunuz.", "content": "Yazılım Geliştirme ekibimiz için React İleri Seviye eğitimi 25-26 Ekim tarihlerinde düzenlenecektir. Katılım için IK birimine başvurunuz.",
"excerpt": "React İleri Seviye eğitimi kayıtları başladı", "excerpt": "React İleri Seviye eğitimi kayıtları başladı",
"category": "event", "category": "event",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"publishDate": "09-10-2024", "publishDate": "09-10-2024",
"isPinned": false, "isPinned": false,
"viewCount": 0 "viewCount": 0
@ -1506,7 +1506,7 @@
"content": "Bilgi güvenliği politikamız güncellenmiştir. Tüm çalışanlarımızın yeni politikayı okuması ve onaylaması gerekmektedir.", "content": "Bilgi güvenliği politikamız güncellenmiştir. Tüm çalışanlarımızın yeni politikayı okuması ve onaylaması gerekmektedir.",
"excerpt": "Güvenlik politikası güncellendi - Onay gerekli", "excerpt": "Güvenlik politikası güncellendi - Onay gerekli",
"category": "urgent", "category": "urgent",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"publishDate": "04-10-2024", "publishDate": "04-10-2024",
"isPinned": true, "isPinned": true,
"viewCount": 0 "viewCount": 0
@ -1680,42 +1680,42 @@
"SocialPosts": [ "SocialPosts": [
{ {
"content": "Yeni proje üzerinde çalışıyoruz! React ve TypeScript ile harika bir deneyim oluşturuyoruz. Ekip çalışması harika gidiyor! 🚀", "content": "Yeni proje üzerinde çalışıyoruz! React ve TypeScript ile harika bir deneyim oluşturuyoruz. Ekip çalışması harika gidiyor! 🚀",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"likeCount": 0, "likeCount": 0,
"isLiked": false, "isLiked": false,
"isOwnPost": true "isOwnPost": true
}, },
{ {
"content": "Bu hafta sprint planlamasını yaptık. Ekibimizle birlikte yeni özellikleri değerlendirdik. Heyecan verici bir hafta olacak!", "content": "Bu hafta sprint planlamasını yaptık. Ekibimizle birlikte yeni özellikleri değerlendirdik. Heyecan verici bir hafta olacak!",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"likeCount": 0, "likeCount": 0,
"isLiked": false, "isLiked": false,
"isOwnPost": true "isOwnPost": true
}, },
{ {
"content": "Yeni tasarım sistemimizin ilk prototipini hazırladık! Kullanıcı deneyimini iyileştirmek için çok çalıştık. Geri bildirimlerinizi bekliyorum! 🎨", "content": "Yeni tasarım sistemimizin ilk prototipini hazırladık! Kullanıcı deneyimini iyileştirmek için çok çalıştık. Geri bildirimlerinizi bekliyorum! 🎨",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"likeCount": 0, "likeCount": 0,
"isLiked": false, "isLiked": false,
"isOwnPost": true "isOwnPost": true
}, },
{ {
"content": "CI/CD pipeline güncellememiz tamamlandı! Deployment süremiz %40 azaldı. Otomasyonun gücü 💪", "content": "CI/CD pipeline güncellememiz tamamlandı! Deployment süremiz %40 azaldı. Otomasyonun gücü 💪",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"likeCount": 0, "likeCount": 0,
"isLiked": false, "isLiked": false,
"isOwnPost": true "isOwnPost": true
}, },
{ {
"content": "Ekip üyelerimize yeni eğitim programımızı duyurmak istiyorum! 🎓 React, TypeScript ve Modern Web Geliştirme konularında kapsamlı bir program hazırladık.", "content": "Ekip üyelerimize yeni eğitim programımızı duyurmak istiyorum! 🎓 React, TypeScript ve Modern Web Geliştirme konularında kapsamlı bir program hazırladık.",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"likeCount": 0, "likeCount": 0,
"isLiked": false, "isLiked": false,
"isOwnPost": true "isOwnPost": true
}, },
{ {
"content": "Bugün müşteri ile harika bir toplantı yaptık! Yeni projenin detaylarını konuştuk. 🎯", "content": "Bugün müşteri ile harika bir toplantı yaptık! Yeni projenin detaylarını konuştuk. 🎯",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"likeCount": 0, "likeCount": 0,
"isLiked": false, "isLiked": false,
"isOwnPost": true "isOwnPost": true
@ -1801,53 +1801,53 @@
"SocialComments": [ "SocialComments": [
{ {
"postContent": "Yeni proje üzerinde çalışıyoruz! React ve TypeScript ile harika bir deneyim oluşturuyoruz. Ekip çalışması harika gidiyor! 🚀", "postContent": "Yeni proje üzerinde çalışıyoruz! React ve TypeScript ile harika bir deneyim oluşturuyoruz. Ekip çalışması harika gidiyor! 🚀",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"content": "Harika görünüyor! Başarılar 👏" "content": "Harika görünüyor! Başarılar 👏"
}, },
{ {
"postContent": "Yeni proje üzerinde çalışıyoruz! React ve TypeScript ile harika bir deneyim oluşturuyoruz. Ekip çalışması harika gidiyor! 🚀", "postContent": "Yeni proje üzerinde çalışıyoruz! React ve TypeScript ile harika bir deneyim oluşturuyoruz. Ekip çalışması harika gidiyor! 🚀",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"content": "TypeScript gerçekten fark yaratıyor!" "content": "TypeScript gerçekten fark yaratıyor!"
}, },
{ {
"postContent": "Bu hafta sprint planlamasını yaptık. Ekibimizle birlikte yeni özellikleri değerlendirdik. Heyecan verici bir hafta olacak!", "postContent": "Bu hafta sprint planlamasını yaptık. Ekibimizle birlikte yeni özellikleri değerlendirdik. Heyecan verici bir hafta olacak!",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"content": "Mesajlaşma özelliğine kesinlikle ihtiyacımız var!" "content": "Mesajlaşma özelliğine kesinlikle ihtiyacımız var!"
}, },
{ {
"postContent": "Yeni tasarım sistemimizin ilk prototipini hazırladık! Kullanıcı deneyimini iyileştirmek için çok çalıştık. Geri bildirimlerinizi bekliyorum! 🎨", "postContent": "Yeni tasarım sistemimizin ilk prototipini hazırladık! Kullanıcı deneyimini iyileştirmek için çok çalıştık. Geri bildirimlerinizi bekliyorum! 🎨",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"content": "Tasarımlar çok şık! Renk paleti özellikle güzel 😍" "content": "Tasarımlar çok şık! Renk paleti özellikle güzel 😍"
}, },
{ {
"postContent": "Yeni tasarım sistemimizin ilk prototipini hazırladık! Kullanıcı deneyimini iyileştirmek için çok çalıştık. Geri bildirimlerinizi bekliyorum! 🎨", "postContent": "Yeni tasarım sistemimizin ilk prototipini hazırladık! Kullanıcı deneyimini iyileştirmek için çok çalıştık. Geri bildirimlerinizi bekliyorum! 🎨",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"content": "Dark mode opsiyonu da olacak mı?" "content": "Dark mode opsiyonu da olacak mı?"
}, },
{ {
"postContent": "CI/CD pipeline güncellememiz tamamlandı! Deployment süremiz %40 azaldı. Otomasyonun gücü 💪", "postContent": "CI/CD pipeline güncellememiz tamamlandı! Deployment süremiz %40 azaldı. Otomasyonun gücü 💪",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"content": "Harika iş! Detayları paylaşabilir misin?" "content": "Harika iş! Detayları paylaşabilir misin?"
}, },
{ {
"postContent": "Ekip üyelerimize yeni eğitim programımızı duyurmak istiyorum! 🎓 React, TypeScript ve Modern Web Geliştirme konularında kapsamlı bir program hazırladık.", "postContent": "Ekip üyelerimize yeni eğitim programımızı duyurmak istiyorum! 🎓 React, TypeScript ve Modern Web Geliştirme konularında kapsamlı bir program hazırladık.",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"content": "Ne zaman başlıyor?" "content": "Ne zaman başlıyor?"
}, },
{ {
"postContent": "Ekip üyelerimize yeni eğitim programımızı duyurmak istiyorum! 🎓 React, TypeScript ve Modern Web Geliştirme konularında kapsamlı bir program hazırladık.", "postContent": "Ekip üyelerimize yeni eğitim programımızı duyurmak istiyorum! 🎓 React, TypeScript ve Modern Web Geliştirme konularında kapsamlı bir program hazırladık.",
"userName": "SYSTEM@SOZSOFT.COM", "userName": "system@sozsoft.com",
"content": "Gelecek hafta başlıyoruz! Kayıt linki mail ile paylaşılacak." "content": "Gelecek hafta başlıyoruz! Kayıt linki mail ile paylaşılacak."
} }
], ],
"SocialLikes": [ "SocialLikes": [
{ {
"postContent": "Yeni proje üzerinde çalışıyoruz! React ve TypeScript ile harika bir deneyim oluşturuyoruz. Ekip çalışması harika gidiyor! 🚀", "postContent": "Yeni proje üzerinde çalışıyoruz! React ve TypeScript ile harika bir deneyim oluşturuyoruz. Ekip çalışması harika gidiyor! 🚀",
"userName": "SYSTEM@SOZSOFT.COM" "userName": "system@sozsoft.com"
}, },
{ {
"postContent": "Yeni tasarım sistemimizin ilk prototipini hazırladık! Kullanıcı deneyimini iyileştirmek için çok çalıştık. Geri bildirimlerinizi bekliyorum! 🎨", "postContent": "Yeni tasarım sistemimizin ilk prototipini hazırladık! Kullanıcı deneyimini iyileştirmek için çok çalıştık. Geri bildirimlerinizi bekliyorum! 🎨",
"userName": "SYSTEM@SOZSOFT.COM" "userName": "system@sozsoft.com"
} }
], ],
"EventTypes": [ "EventTypes": [
@ -2028,7 +2028,7 @@
"Description": "Tüm departmanların katılımıyla düzenlenen geleneksel yaz futbol turnuvası.", "Description": "Tüm departmanların katılımıyla düzenlenen geleneksel yaz futbol turnuvası.",
"Place": "Şirket Kampüsü Spor Alanı", "Place": "Şirket Kampüsü Spor Alanı",
"Status": "published", "Status": "published",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"ParticipantsCount": 64, "ParticipantsCount": 64,
"IsPublished": true, "IsPublished": true,
"Likes": 0, "Likes": 0,
@ -2043,7 +2043,7 @@
"Description": "Çalışanlarımıza özel, rehber eşliğinde 2 günlük kültürel gezi.", "Description": "Çalışanlarımıza özel, rehber eşliğinde 2 günlük kültürel gezi.",
"Place": "Kapadokya, Nevşehir", "Place": "Kapadokya, Nevşehir",
"Status": "published", "Status": "published",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"ParticipantsCount": 25, "ParticipantsCount": 25,
"IsPublished": true, "IsPublished": true,
"Likes": 0, "Likes": 0,
@ -2058,7 +2058,7 @@
"Description": "Caz müziğinin en güzel örneklerinin canlı performanslarla sunulacağı özel akşam.", "Description": "Caz müziğinin en güzel örneklerinin canlı performanslarla sunulacağı özel akşam.",
"Place": "Şirket Konferans Salonu", "Place": "Şirket Konferans Salonu",
"Status": "published", "Status": "published",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"ParticipantsCount": 40, "ParticipantsCount": 40,
"IsPublished": true, "IsPublished": true,
"Likes": 0, "Likes": 0,
@ -2069,55 +2069,55 @@
"EventComments": [ "EventComments": [
{ {
"EventName": "Yaz Futbol Turnuvası 2025", "EventName": "Yaz Futbol Turnuvası 2025",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"Content": "Muhteşem bir gündü! Yılın en güzel etkinliği 🎉", "Content": "Muhteşem bir gündü! Yılın en güzel etkinliği 🎉",
"Likes": 12 "Likes": 12
}, },
{ {
"EventName": "Yaz Futbol Turnuvası 2025", "EventName": "Yaz Futbol Turnuvası 2025",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"Content": "Voleybol turnuvası harikaydı, gelecek yıl yine yapalım!", "Content": "Voleybol turnuvası harikaydı, gelecek yıl yine yapalım!",
"Likes": 8 "Likes": 8
}, },
{ {
"EventName": "Kültür Gezisi: Kapadokya", "EventName": "Kültür Gezisi: Kapadokya",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"Content": "Ekibimiz 2. oldu! Çok gurur duydum herkesle 💪", "Content": "Ekibimiz 2. oldu! Çok gurur duydum herkesle 💪",
"Likes": 15 "Likes": 15
}, },
{ {
"EventName": "Kültür Gezisi: Kapadokya", "EventName": "Kültür Gezisi: Kapadokya",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"Content": "Gece boyunca kod yazmak ve pizza yemek priceless! 🍕", "Content": "Gece boyunca kod yazmak ve pizza yemek priceless! 🍕",
"Likes": 10 "Likes": 10
}, },
{ {
"EventName": "Müzik Dinletisi: Jazz Akşamı", "EventName": "Müzik Dinletisi: Jazz Akşamı",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"Content": "İT departmanı şampiyon oldu! Gelecek sene kupayı koruyacağız 🏆", "Content": "İT departmanı şampiyon oldu! Gelecek sene kupayı koruyacağız 🏆",
"Likes": 18 "Likes": 18
}, },
{ {
"EventName": "Müzik Dinletisi: Jazz Akşamı", "EventName": "Müzik Dinletisi: Jazz Akşamı",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"Content": "Yılın en şık gecesi! Organizasyon mükemmeldi 👏", "Content": "Yılın en şık gecesi! Organizasyon mükemmeldi 👏",
"Likes": 25 "Likes": 25
}, },
{ {
"EventName": "Müzik Dinletisi: Jazz Akşamı", "EventName": "Müzik Dinletisi: Jazz Akşamı",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"Content": "Tombala hediyelerim harika, çok teşekkürler! 🎁", "Content": "Tombala hediyelerim harika, çok teşekkürler! 🎁",
"Likes": 14 "Likes": 14
}, },
{ {
"EventName": "Müzik Dinletisi: Jazz Akşamı", "EventName": "Müzik Dinletisi: Jazz Akşamı",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"Content": "Müzik grubunuz süperdi, dans pistinden ayrılamadık! 🎵", "Content": "Müzik grubunuz süperdi, dans pistinden ayrılamadık! 🎵",
"Likes": 19 "Likes": 19
}, },
{ {
"EventName": "Müzik Dinletisi: Jazz Akşamı", "EventName": "Müzik Dinletisi: Jazz Akşamı",
"UserName": "SYSTEM@SOZSOFT.COM", "UserName": "system@sozsoft.com",
"Content": "İlk defa ebru yaptım, çok huzurlu bir deneyimdi 🎨", "Content": "İlk defa ebru yaptım, çok huzurlu bir deneyimdi 🎨",
"Likes": 11 "Likes": 11
} }

View file

@ -14,9 +14,9 @@ using Volo.Abp.Identity;
using Volo.Abp.Timing; using Volo.Abp.Timing;
using System.Collections.Generic; using System.Collections.Generic;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
using Sozsoft.Platform.Extensions;
using System.Linq; using System.Linq;
using Sozsoft.Platform.Enums; using Sozsoft.Platform.Enums;
using Microsoft.AspNetCore.Identity;
namespace Sozsoft.Platform.Data.Seeds; namespace Sozsoft.Platform.Data.Seeds;
@ -485,6 +485,7 @@ public class ProductSeedDto
public class TenantDataSeeder : IDataSeedContributor, ITransientDependency public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
{ {
private readonly IClock _clock; private readonly IClock _clock;
private readonly ILookupNormalizer _lookupNormalizer;
private readonly IRepository<Branch, Guid> _branchRepository; private readonly IRepository<Branch, Guid> _branchRepository;
private readonly IRepository<GlobalSearch, int> _globalSearch; private readonly IRepository<GlobalSearch, int> _globalSearch;
private readonly IRepository<CustomEndpoint, Guid> _customEndpointRepository; private readonly IRepository<CustomEndpoint, Guid> _customEndpointRepository;
@ -534,6 +535,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
public TenantDataSeeder( public TenantDataSeeder(
IClock clock, IClock clock,
ILookupNormalizer lookupNormalizer,
IIdentityUserRepository repositoryUser, IIdentityUserRepository repositoryUser,
IRepository<Branch, Guid> branchRepository, IRepository<Branch, Guid> branchRepository,
IRepository<GlobalSearch, int> globalSearch, IRepository<GlobalSearch, int> globalSearch,
@ -583,6 +585,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
) )
{ {
_clock = clock; _clock = clock;
_lookupNormalizer = lookupNormalizer;
_repositoryUser = repositoryUser; _repositoryUser = repositoryUser;
_branchRepository = branchRepository; _branchRepository = branchRepository;
_globalSearch = globalSearch; _globalSearch = globalSearch;
@ -1071,7 +1074,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
if (exists) if (exists)
continue; continue;
var user = await _repositoryUser.FindByNormalizedUserNameAsync(item.UserName); var user = await _repositoryUser.FindByNormalizedUserNameAsync(_lookupNormalizer.NormalizeName(item.UserName));
await _announcementRepository.InsertAsync(new Announcement await _announcementRepository.InsertAsync(new Announcement
{ {
Title = item.Title, Title = item.Title,
@ -1145,7 +1148,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
if (exists) if (exists)
continue; continue;
var user = await _repositoryUser.FindByNormalizedUserNameAsync(item.UserName); var user = await _repositoryUser.FindByNormalizedUserNameAsync(_lookupNormalizer.NormalizeName(item.UserName));
await _socialPostRepository.InsertAsync(new SocialPost(Guid.NewGuid()) await _socialPostRepository.InsertAsync(new SocialPost(Guid.NewGuid())
{ {
@ -1235,7 +1238,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
if (exists) if (exists)
continue; continue;
var user = await _repositoryUser.FindByNormalizedUserNameAsync(item.UserName); var user = await _repositoryUser.FindByNormalizedUserNameAsync(_lookupNormalizer.NormalizeName(item.UserName));
await _socialCommentRepository.InsertAsync(new SocialComment(Guid.NewGuid()) await _socialCommentRepository.InsertAsync(new SocialComment(Guid.NewGuid())
{ {
UserId = user != null ? user.Id : null, UserId = user != null ? user.Id : null,
@ -1255,7 +1258,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
if (exists) if (exists)
continue; continue;
var user = await _repositoryUser.FindByNormalizedUserNameAsync(item.UserName); var user = await _repositoryUser.FindByNormalizedUserNameAsync(_lookupNormalizer.NormalizeName(item.UserName));
await _socialLikeRepository.InsertAsync(new SocialLike(Guid.NewGuid()) await _socialLikeRepository.InsertAsync(new SocialLike(Guid.NewGuid())
{ {
SocialPostId = post != null ? post.Id : Guid.Empty, SocialPostId = post != null ? post.Id : Guid.Empty,
@ -1296,7 +1299,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
{ {
var category = await _eventCategoryRepository.FirstOrDefaultAsync(x => x.Name == item.CategoryName); var category = await _eventCategoryRepository.FirstOrDefaultAsync(x => x.Name == item.CategoryName);
var type = await _eventTypeRepository.FirstOrDefaultAsync(x => x.Name == item.TypeName); var type = await _eventTypeRepository.FirstOrDefaultAsync(x => x.Name == item.TypeName);
var user = await _repositoryUser.FindByNormalizedUserNameAsync(item.UserName); var user = await _repositoryUser.FindByNormalizedUserNameAsync(_lookupNormalizer.NormalizeName(item.UserName));
if (category != null && type != null) if (category != null && type != null)
{ {