From 0f30c4ad7cb00e6658d960cdcd92244e6fc089f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Tue, 26 May 2026 23:01:49 +0300 Subject: [PATCH] =?UTF-8?q?Tenant=20yap=C4=B1s=C4=B1na=20uygunlu=C4=9Fu=20?= =?UTF-8?q?kontrol=20edildi.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hatalar giderildi. --- .../Seeds/ListFormSeeder_Saas.cs | 6 +- .../Seeds/PlatformIdentityDataSeeder.cs | 54 ++++++++---- .../PlatformConsts.cs | 10 ++- .../Entities/Branch/BranchUsers.cs | 1 - .../Entities/Tenant/Definitions/Department.cs | 5 ++ .../Tenant/Definitions/JobPosition.cs | 5 ++ .../Entities/Tenant/Saas/Branch.cs | 3 - .../EntityFrameworkCore/PlatformDbContext.cs | 8 +- ....cs => 20260526185809_Initial.Designer.cs} | 20 +---- ...1_Initial.cs => 20260526185809_Initial.cs} | 45 ++++------ .../PlatformDbContextModelSnapshot.cs | 18 ---- .../Seeds/TenantData.json | 10 +++ .../Seeds/TenantDataSeeder.cs | 25 +----- .../Seeds/TenantIdentityDataSeeder.cs | 83 ++++++++++++++++++- 14 files changed, 174 insertions(+), 119 deletions(-) rename api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/{20260525143351_Initial.Designer.cs => 20260526185809_Initial.Designer.cs} (99%) rename api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/{20260525143351_Initial.cs => 20260526185809_Initial.cs} (99%) diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Saas.cs b/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Saas.cs index e42e5d7..31edef7 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Saas.cs +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Saas.cs @@ -90,10 +90,10 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency ColumnOptionJson = DefaultColumnOptionJson(), PermissionJson = DefaultPermissionJson(TenantManagementPermissions.Tenants.Create, TenantManagementPermissions.Tenants.Default, TenantManagementPermissions.Tenants.Update, TenantManagementPermissions.Tenants.Delete, TenantManagementPermissions.Tenants.Default + ".Export", TenantManagementPermissions.Tenants.Default + ".Import", TenantManagementPermissions.Tenants.Default + ".Note"), PagerOptionJson = DefaultPagerOptionJson, - EditingOptionJson = DefaultEditingOptionJson(TenantManagementPermissions.Tenants.Default, 850, 700, true, true, true, true, false, true), + EditingOptionJson = DefaultEditingOptionJson(TenantManagementPermissions.Tenants.Default, 950, 700, true, true, true, true, false, true), EditingFormJson = JsonSerializer.Serialize(new List() { - new() { Order=1, ColCount=2, ColSpan=1, ItemType="group", Items = + new() { Order=1, ColCount=3, ColSpan=1, ItemType="group", Items = [ new EditingFormItemDto { Order=1, DataField = "Name", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=2, DataField = "OrganizationName", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxTextBox }, @@ -107,7 +107,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency new EditingFormItemDto { Order=10, DataField = "MaxConcurrentUsers", ColSpan=1, IsRequired=false, EditorType2=EditorTypes.dxNumberBox }, ] }, - new() { Order=2, ColCount=2, ColSpan=1, ItemType="group", Items = + new() { Order=2, ColCount=3, ColSpan=1, ItemType="group", Items = [ new EditingFormItemDto { Order=1, DataField = "Country", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton }, new EditingFormItemDto { Order=2, DataField = "City", ColSpan=1, IsRequired=true, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton }, diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/PlatformIdentityDataSeeder.cs b/api/src/Sozsoft.Platform.DbMigrator/Seeds/PlatformIdentityDataSeeder.cs index af7a7ea..b7ecf51 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/PlatformIdentityDataSeeder.cs +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/PlatformIdentityDataSeeder.cs @@ -13,13 +13,15 @@ using IdentityRole = Volo.Abp.Identity.IdentityRole; using IdentityUser = Volo.Abp.Identity.IdentityUser; using Volo.Abp.Domain.Repositories; using Sozsoft.Platform.Entities; +using Volo.Abp.TenantManagement; namespace Sozsoft.Platform.Data.Seeds; [Dependency(ReplaceServices = true)] public class PlatformIdentityDataSeeder : IdentityDataSeeder { - private readonly IPermissionGrantRepository permissionGrantRepository; + private readonly IPermissionGrantRepository _permissionGrantRepository; + private readonly ITenantRepository _tenantRepository; private readonly IRepository _branchRepository; private readonly IRepository _branchUsersRepository; @@ -34,10 +36,12 @@ public class PlatformIdentityDataSeeder : IdentityDataSeeder IdentityRoleManager roleManager, IPermissionGrantRepository permissionGrantRepository, ICurrentTenant currentTenant, + ITenantRepository tenantRepository, IOptions identityOptions ) : base(guidGenerator, roleRepository, userRepository, lookupNormalizer, userManager, roleManager, currentTenant, identityOptions) { - this.permissionGrantRepository = permissionGrantRepository; + this._permissionGrantRepository = permissionGrantRepository; + this._tenantRepository = tenantRepository; this._branchRepository = branchRepository; this._branchUsersRepository = branchUsersRepository; } @@ -53,14 +57,33 @@ public class PlatformIdentityDataSeeder : IdentityDataSeeder var result = new IdentityDataSeedResult(); - var branchId = GuidGenerator.Create(); - var defaultBranch = await _branchRepository.FirstOrDefaultAsync(b => b.Code == PlatformConsts.Branches.BranchCode); + var branchCode = ""; + var branchName = ""; + + if (tenantId == null && !CurrentTenant.IsAvailable) + { + branchCode = PlatformConsts.Branches.BranchCode; + branchName = PlatformConsts.Branches.BranchName; + } + else + { + var tenant = await _tenantRepository.FindAsync(tenantId ?? CurrentTenant.Id.Value); + if (tenant != null) + { + branchCode = tenant.Name; + branchName = tenant.GetOrganizationName(); + } + } + + //Default Branch otomatik olarak oluşturuluyor. + var defaultBranch = await _branchRepository.FirstOrDefaultAsync(b => b.Code == branchCode); if (defaultBranch == null) { - await _branchRepository.InsertAsync(new Branch(branchId) + var branchId = GuidGenerator.Create(); + defaultBranch = await _branchRepository.InsertAsync(new Branch(branchId) { - Code = PlatformConsts.Branches.BranchCode, - Name = PlatformConsts.Branches.BranchName, + Code = branchCode, + Name = branchName, VknTckn = PlatformConsts.Branches.BranchVknTckn, TaxOffice = PlatformConsts.Branches.BranchTaxOffice, MobileNumber = PlatformConsts.Branches.BranchMobileNumber, @@ -125,30 +148,32 @@ public class PlatformIdentityDataSeeder : IdentityDataSeeder adminUser.SetBirthDate(PlatformConsts.AbpIdentity.User.AdminBirthDateDefaultValue); adminUser.SetBirthPlace(PlatformConsts.AbpIdentity.User.AdminBirthPlaceDefaultValue); adminUser.SetMaritalStatus(PlatformConsts.AbpIdentity.User.AdminMaritalStatusDefaultValue); - + adminUser.SetDepartmentId(PlatformConsts.AbpIdentity.User.AdminDepartmentIdDefaultValue); + adminUser.SetJobPositionId(PlatformConsts.AbpIdentity.User.AdminJobPositionIdDefaultValue); + (await UserManager.CreateAsync(adminUser, adminPassword, validatePassword: false)).CheckErrors(); result.CreatedAdminUser = true; (await UserManager.AddToRoleAsync(adminUser, PlatformConsts.AbpIdentity.User.AdminRoleName)).CheckErrors(); - //BranchUsers tablosuna admin kullanıcısı ekleniyor - var defaultBranchUsers = await _branchUsersRepository.FirstOrDefaultAsync(bu => bu.UserId == userId && bu.BranchId == branchId); + // BranchUsers tablosuna admin kullanicisi ekleniyor. + var defaultBranchUsers = await _branchUsersRepository.FirstOrDefaultAsync(bu => bu.UserId == adminUser.Id && bu.BranchId == defaultBranch.Id); if (defaultBranchUsers is null) { await _branchUsersRepository.InsertAsync(new BranchUsers { - BranchId = branchId, - UserId = userId, + BranchId = defaultBranch.Id, + UserId = adminUser.Id, TenantId = tenantId }, autoSave: true); } } /*admin rolüne ait yetkiler otomatik atanıyor*/ - var permissions = await permissionGrantRepository.GetListAsync("R", PlatformConsts.AbpIdentity.User.AdminRoleName); + var permissions = await _permissionGrantRepository.GetListAsync("R", PlatformConsts.AbpIdentity.User.AdminRoleName); if (permissions.Count == 0) { - await permissionGrantRepository.InsertManyAsync( + await _permissionGrantRepository.InsertManyAsync( [ new(Guid.NewGuid(), IdentityPermissions.Roles.Default, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId), new(Guid.NewGuid(), IdentityPermissions.Roles.Create, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId), @@ -166,6 +191,7 @@ public class PlatformIdentityDataSeeder : IdentityDataSeeder new(Guid.NewGuid(), IdentityPermissions.UserLookup.Default, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId), ]); } + return result; } } diff --git a/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs b/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs index ecea6a7..b874e59 100644 --- a/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs +++ b/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs @@ -75,8 +75,8 @@ public static class PlatformConsts public static class Branches { - public const string BranchCode = "DEMO"; - public const string BranchName = "Demo"; + public const string BranchCode = "Sozsoft"; + public const string BranchName = "Sozsoft Branch"; public const long BranchVknTckn = 52849619172; public const string BranchTaxOffice = "Sarıgazi"; public const string BranchMobileNumber = "5449476346"; @@ -167,8 +167,10 @@ public static class PlatformConsts public const string AdminPhoneNumberDefaultValue = "05449476346"; public const string AdminRocketUsernameDefaultValue = "sedat.ozturk"; public const string AdminWorkHourDefaultValue = "00:00-23:59"; - public const string AdminDepartmentIdDefaultValue = "Yönetim"; - public const string AdminJobPositionIdDefaultValue = "Genel Müdür"; + public const string AdminDepartmentDefaultValue = "Yönetim"; + public static Guid AdminDepartmentIdDefaultValue = Guid.Parse("8f14e45f-ea2d-4d9f-9f1d-1a2b3c4d5e6f"); + public const string AdminJobPositionDefaultValue = "Genel Müdür"; + public static Guid AdminJobPositionIdDefaultValue = Guid.Parse("d1f7c6a2-3b4e-4c8d-9f0a-1b2c3d4e5f60"); public const string AdminNationalityDefaultValue = "Türkiye"; public const string AdminBloodTypeDefaultValue = "B Rh+"; public const string AdminEducationLevelDefaultValue = "Yüksek Lisans"; diff --git a/api/src/Sozsoft.Platform.Domain/Entities/Branch/BranchUsers.cs b/api/src/Sozsoft.Platform.Domain/Entities/Branch/BranchUsers.cs index acbdd8e..e9ee0bf 100644 --- a/api/src/Sozsoft.Platform.Domain/Entities/Branch/BranchUsers.cs +++ b/api/src/Sozsoft.Platform.Domain/Entities/Branch/BranchUsers.cs @@ -9,7 +9,6 @@ public class BranchUsers : Entity, IMultiTenant { public Guid? TenantId { get; set; } public Guid BranchId { get; set; } - public Branch Branch { get; set; } public Guid UserId { get; set; } Guid? IMultiTenant.TenantId => TenantId; diff --git a/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/Department.cs b/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/Department.cs index e2e012c..74af63d 100644 --- a/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/Department.cs +++ b/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/Department.cs @@ -16,4 +16,9 @@ public class Department : FullAuditedEntity, IMultiTenant Guid? IMultiTenant.TenantId => TenantId; public ICollection JobPositions { get; set; } + + public Department(Guid id) + { + Id = id; + } } diff --git a/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/JobPosition.cs b/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/JobPosition.cs index a3f74e7..65d4c28 100644 --- a/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/JobPosition.cs +++ b/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Definitions/JobPosition.cs @@ -16,4 +16,9 @@ public class JobPosition : FullAuditedEntity, IMultiTenant public Guid? ParentId { get; set; } Guid? IMultiTenant.TenantId => TenantId; + + public JobPosition(Guid id) + { + Id = id; + } } diff --git a/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Saas/Branch.cs b/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Saas/Branch.cs index b5b03ad..6d28599 100644 --- a/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Saas/Branch.cs +++ b/api/src/Sozsoft.Platform.Domain/Entities/Tenant/Saas/Branch.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using Volo.Abp.Domain.Entities.Auditing; namespace Sozsoft.Platform.Entities; @@ -26,8 +25,6 @@ public class Branch : FullAuditedEntity public string Website { get; set; } public bool? IsActive { get; set; } - public ICollection UserBranches { get; set; } - public Branch(Guid id) { Id = id; diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs index f838495..78d4a53 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs @@ -229,10 +229,10 @@ public class PlatformDbContext : b.HasIndex(x => new { x.TenantId, x.BranchId, x.UserId }).IsUnique().HasFilter(null); - b.HasOne(x => x.Branch) - .WithMany(x => x.UserBranches) - .HasForeignKey(x => x.BranchId) - .OnDelete(DeleteBehavior.Restrict); + // b.HasOne(x => x.Branch) + // .WithMany(x => x.UserBranches) + // .HasForeignKey(x => x.BranchId) + // .OnDelete(DeleteBehavior.Restrict); }); builder.Entity(b => diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260525143351_Initial.Designer.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260526185809_Initial.Designer.cs similarity index 99% rename from api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260525143351_Initial.Designer.cs rename to api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260526185809_Initial.Designer.cs index aac7020..539a801 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260525143351_Initial.Designer.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260526185809_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace Sozsoft.Platform.Migrations { [DbContext(typeof(PlatformDbContext))] - [Migration("20260525143351_Initial")] + [Migration("20260526185809_Initial")] partial class Initial { /// @@ -1179,8 +1179,6 @@ namespace Sozsoft.Platform.Migrations b.HasKey("Id"); - b.HasIndex("BranchId"); - b.HasIndex("TenantId", "BranchId", "UserId") .IsUnique(); @@ -8139,17 +8137,6 @@ namespace Sozsoft.Platform.Migrations b.Navigation("Category"); }); - modelBuilder.Entity("Sozsoft.Platform.Entities.BranchUsers", b => - { - b.HasOne("Sozsoft.Platform.Entities.Branch", "Branch") - .WithMany("UserBranches") - .HasForeignKey("BranchId") - .OnDelete(DeleteBehavior.Restrict) - .IsRequired(); - - b.Navigation("Branch"); - }); - modelBuilder.Entity("Sozsoft.Platform.Entities.City", b => { b.HasOne("Sozsoft.Platform.Entities.Country", null) @@ -8662,11 +8649,6 @@ namespace Sozsoft.Platform.Migrations b.Navigation("Posts"); }); - modelBuilder.Entity("Sozsoft.Platform.Entities.Branch", b => - { - b.Navigation("UserBranches"); - }); - modelBuilder.Entity("Sozsoft.Platform.Entities.City", b => { b.Navigation("Districts"); diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260525143351_Initial.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260526185809_Initial.cs similarity index 99% rename from api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260525143351_Initial.cs rename to api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260526185809_Initial.cs index 05349ad..50cd40d 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260525143351_Initial.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20260526185809_Initial.cs @@ -1749,6 +1749,20 @@ namespace Sozsoft.Platform.Migrations table.PrimaryKey("PK_Sas_T_Branch", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Sas_T_BranchUsers", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + BranchId = table.Column(type: "uniqueidentifier", nullable: false), + UserId = table.Column(type: "uniqueidentifier", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Sas_T_BranchUsers", x => x.Id); + }); + migrationBuilder.CreateTable( name: "Sas_T_ForumCategory", columns: table => new @@ -2825,26 +2839,6 @@ namespace Sozsoft.Platform.Migrations onDelete: ReferentialAction.Restrict); }); - migrationBuilder.CreateTable( - name: "Sas_T_BranchUsers", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - BranchId = table.Column(type: "uniqueidentifier", nullable: false), - UserId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Sas_T_BranchUsers", x => x.Id); - table.ForeignKey( - name: "FK_Sas_T_BranchUsers_Sas_T_Branch_BranchId", - column: x => x.BranchId, - principalTable: "Sas_T_Branch", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - migrationBuilder.CreateTable( name: "Sas_T_ForumTopic", columns: table => new @@ -4024,11 +4018,6 @@ namespace Sozsoft.Platform.Migrations unique: true, filter: "[IsDeleted] = 0"); - migrationBuilder.CreateIndex( - name: "IX_Sas_T_BranchUsers_BranchId", - table: "Sas_T_BranchUsers", - column: "BranchId"); - migrationBuilder.CreateIndex( name: "IX_Sas_T_BranchUsers_TenantId_BranchId_UserId", table: "Sas_T_BranchUsers", @@ -4304,6 +4293,9 @@ namespace Sozsoft.Platform.Migrations migrationBuilder.DropTable( name: "Sas_H_Uom"); + migrationBuilder.DropTable( + name: "Sas_T_Branch"); + migrationBuilder.DropTable( name: "Sas_T_BranchUsers"); @@ -4382,9 +4374,6 @@ namespace Sozsoft.Platform.Migrations migrationBuilder.DropTable( name: "Sas_H_UomCategory"); - migrationBuilder.DropTable( - name: "Sas_T_Branch"); - migrationBuilder.DropTable( name: "Sas_T_ForumTopic"); diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs index 990af2d..2471ab0 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs @@ -1176,8 +1176,6 @@ namespace Sozsoft.Platform.Migrations b.HasKey("Id"); - b.HasIndex("BranchId"); - b.HasIndex("TenantId", "BranchId", "UserId") .IsUnique(); @@ -8136,17 +8134,6 @@ namespace Sozsoft.Platform.Migrations b.Navigation("Category"); }); - modelBuilder.Entity("Sozsoft.Platform.Entities.BranchUsers", b => - { - b.HasOne("Sozsoft.Platform.Entities.Branch", "Branch") - .WithMany("UserBranches") - .HasForeignKey("BranchId") - .OnDelete(DeleteBehavior.Restrict) - .IsRequired(); - - b.Navigation("Branch"); - }); - modelBuilder.Entity("Sozsoft.Platform.Entities.City", b => { b.HasOne("Sozsoft.Platform.Entities.Country", null) @@ -8659,11 +8646,6 @@ namespace Sozsoft.Platform.Migrations b.Navigation("Posts"); }); - modelBuilder.Entity("Sozsoft.Platform.Entities.Branch", b => - { - b.Navigation("UserBranches"); - }); - modelBuilder.Entity("Sozsoft.Platform.Entities.City", b => { b.Navigation("Districts"); diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantData.json b/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantData.json index 8b55a01..6867cb4 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantData.json +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantData.json @@ -1257,45 +1257,55 @@ ], "Departments": [ { + "Id": "8f14e45f-ea2d-4d9f-9f1d-1a2b3c4d5e6f", "Name": "Yönetim" }, { + "Id": "2c1743a3-91b7-4b57-a6c8-7d8e9f0a1b2c", "Name": "Üretim", "ParentName": "Yönetim" }, { + "Id": "987bcab0-1b92-4a4e-8d7f-3c2b1a0f9e8d", "Name": "Satış", "ParentName": "Yönetim" }, { + "Id": "05b048d7-2f44-4f9d-b5a1-6e7f8a9b0c1d", "Name": "Finans", "ParentName": "Yönetim" }, { + "Id": "63dc7ed1-81f2-4c5a-9d8b-0a1b2c3d4e5f", "Name": "Muhasebe", "ParentName": "Finans" }, { + "Id": "3cd38ab3-7e6f-4b8d-9c0a-5f4e3d2c1b0a", "Name": "Bilgi İşlem", "ParentName": "Yönetim" } ], "JobPositions": [ { + "Id": "d1f7c6a2-3b4e-4c8d-9f0a-1b2c3d4e5f60", "DepartmentName": "Yönetim", "Name": "Genel Müdür" }, { + "Id": "a2b3c4d5-e6f7-4890-ab12-cd34ef56ab78", "DepartmentName": "Yönetim", "Name": "Genel Müdür Yardımcısı", "ParentName": "Genel Müdür" }, { + "Id": "b7c8d9e0-f1a2-4b3c-8d9e-0f1a2b3c4d5e", "DepartmentName": "Muhasebe", "Name": "Muhasebe Müdürü", "ParentName": "Genel Müdür" }, { + "Id": "c3d4e5f6-a7b8-4c9d-8e0f-1a2b3c4d5e6f", "DepartmentName": "Muhasebe", "Name": "Muhasebe Şefi", "ParentName": "Muhasebe Müdürü" diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantDataSeeder.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantDataSeeder.cs index b04ed73..7ee636b 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantDataSeeder.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantDataSeeder.cs @@ -225,6 +225,7 @@ public class AnnouncementSeedDto public class JobPositionSeedDto { + public Guid Id { get; set; } public string DepartmentName { get; set; } public string Name { get; set; } public string BranchCode { get; set; } @@ -233,6 +234,7 @@ public class JobPositionSeedDto public class DepartmentSeedDto { + public Guid Id { get; set; } public string Name { get; set; } public string BranchCode { get; set; } public string ParentName { get; set; } @@ -961,7 +963,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency var branch = await _branchRepository.FirstOrDefaultAsync(x => x.Code == item.BranchCode); var parent = await _departmentRepository.FirstOrDefaultAsync(x => x.Name == item.ParentName); - await _departmentRepository.InsertAsync(new Department + await _departmentRepository.InsertAsync(new Department(item.Id) { Name = item.Name, ParentId = parent?.Id @@ -977,7 +979,7 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency var department = await _departmentRepository.FirstOrDefaultAsync(x => x.Name == item.DepartmentName); var parent = await _jobPositionRepository.FirstOrDefaultAsync(x => x.Name == item.ParentName); - await _jobPositionRepository.InsertAsync(new JobPosition + await _jobPositionRepository.InsertAsync(new JobPosition(item.Id) { Name = item.Name, DepartmentId = department.Id, @@ -1270,24 +1272,5 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency ); } } - - //admin kullanının departmen ve pozisyonunu default olarak belirliyoruz - var adminUser = await _repositoryUser.FindByNormalizedEmailAsync(PlatformConsts.AbpIdentity.User.AdminEmailDefaultValue); - if (adminUser != null) - { - var defaultDepartment = await _departmentRepository.FirstOrDefaultAsync(x => x.Name == PlatformConsts.AbpIdentity.User.AdminDepartmentIdDefaultValue); - if (defaultDepartment != null) - { - adminUser.SetDepartmentId(defaultDepartment.Id); - } - - var defaultJobPosition = await _jobPositionRepository.FirstOrDefaultAsync(x => x.Name == PlatformConsts.AbpIdentity.User.AdminJobPositionIdDefaultValue); - if (defaultJobPosition != null) - { - adminUser.SetJobPositionId(defaultJobPosition.Id); - } - - await _repositoryUser.UpdateAsync(adminUser); - } } } diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantIdentityDataSeeder.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantIdentityDataSeeder.cs index a886f20..11ada79 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantIdentityDataSeeder.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Seeds/TenantIdentityDataSeeder.cs @@ -11,27 +11,39 @@ using Volo.Abp.MultiTenancy; using Volo.Abp.PermissionManagement; using IdentityRole = Volo.Abp.Identity.IdentityRole; using IdentityUser = Volo.Abp.Identity.IdentityUser; +using Volo.Abp.Domain.Repositories; +using Sozsoft.Platform.Entities; +using Volo.Abp.TenantManagement; namespace Sozsoft.Platform.Data.Seeds; [Dependency(ReplaceServices = true)] public class TenantIdentityDataSeeder : IdentityDataSeeder { - private readonly IPermissionGrantRepository permissionGrantRepository; + private readonly IRepository _branchRepository; + private readonly IRepository _branchUsersRepository; + private readonly IPermissionGrantRepository _permissionGrantRepository; + private readonly ITenantRepository _tenantRepository; public TenantIdentityDataSeeder( IGuidGenerator guidGenerator, IIdentityRoleRepository roleRepository, IIdentityUserRepository userRepository, + IRepository branchRepository, + IRepository branchUsersRepository, ILookupNormalizer lookupNormalizer, IdentityUserManager userManager, IdentityRoleManager roleManager, IPermissionGrantRepository permissionGrantRepository, ICurrentTenant currentTenant, + ITenantRepository tenantRepository, IOptions identityOptions ) : base(guidGenerator, roleRepository, userRepository, lookupNormalizer, userManager, roleManager, currentTenant, identityOptions) { - this.permissionGrantRepository = permissionGrantRepository; + this._branchRepository = branchRepository; + this._branchUsersRepository = branchUsersRepository; + this._permissionGrantRepository = permissionGrantRepository; + this._tenantRepository = tenantRepository; } public override async Task SeedAsync(string adminEmail, string adminPassword, Guid? tenantId = null, string adminUserName = null) @@ -45,6 +57,47 @@ public class TenantIdentityDataSeeder : IdentityDataSeeder var result = new IdentityDataSeedResult(); + var branchCode = ""; + var branchName = ""; + + if (tenantId == null && !CurrentTenant.IsAvailable) + { + branchCode = PlatformConsts.Branches.BranchCode; + branchName = PlatformConsts.Branches.BranchName; + } + else + { + var tenant = await _tenantRepository.FindAsync(tenantId ?? CurrentTenant.Id.Value); + if (tenant != null) + { + branchCode = tenant.Name; + branchName = tenant.GetOrganizationName(); + } + } + + //Default Branch otomatik olarak oluşturuluyor. + var defaultBranch = await _branchRepository.FirstOrDefaultAsync(b => b.Code == branchCode); + if (defaultBranch == null) + { + var branchId = GuidGenerator.Create(); + defaultBranch = await _branchRepository.InsertAsync(new Branch(branchId) + { + Code = branchCode, + Name = branchName, + VknTckn = PlatformConsts.Branches.BranchVknTckn, + TaxOffice = PlatformConsts.Branches.BranchTaxOffice, + MobileNumber = PlatformConsts.Branches.BranchMobileNumber, + Country = PlatformConsts.Branches.BranchCountry, + City = PlatformConsts.Branches.BranchCity, + District = PlatformConsts.Branches.BranchDistrict, + Township = PlatformConsts.Branches.BranchTownship, + Email = PlatformConsts.Branches.BranchEmail, + Website = PlatformConsts.Branches.BranchWebsite, + IsActive = PlatformConsts.Branches.BranchIsActive, + TenantId = tenantId, + }, autoSave: true); + } + var adminRole = await RoleRepository.FindByNormalizedNameAsync(LookupNormalizer.NormalizeName(PlatformConsts.AbpIdentity.User.AdminRoleName)); if (adminRole is null) { @@ -85,13 +138,35 @@ public class TenantIdentityDataSeeder : IdentityDataSeeder adminUser.SetRocketUsername(PlatformConsts.AbpIdentity.User.AdminRocketUsernameDefaultValue); adminUser.SetPhoneNumber(PlatformConsts.AbpIdentity.User.AdminPhoneNumberDefaultValue, true); adminUser.SetWorkHour(PlatformConsts.AbpIdentity.User.AdminWorkHourDefaultValue); - + adminUser.SetNationality(PlatformConsts.AbpIdentity.User.AdminNationalityDefaultValue); + adminUser.SetBloodType(PlatformConsts.AbpIdentity.User.AdminBloodTypeDefaultValue); + adminUser.SetEducationLevel(PlatformConsts.AbpIdentity.User.AdminEducationLevelDefaultValue); + adminUser.SetGraduationSchool(PlatformConsts.AbpIdentity.User.AdminGraduationSchoolDefaultValue); + adminUser.SetHomeAddress(PlatformConsts.AbpIdentity.User.AdminHomeAddressDefaultValue); + adminUser.SetBirthDate(PlatformConsts.AbpIdentity.User.AdminBirthDateDefaultValue); + adminUser.SetBirthPlace(PlatformConsts.AbpIdentity.User.AdminBirthPlaceDefaultValue); + adminUser.SetMaritalStatus(PlatformConsts.AbpIdentity.User.AdminMaritalStatusDefaultValue); + adminUser.SetDepartmentId(PlatformConsts.AbpIdentity.User.AdminDepartmentIdDefaultValue); + adminUser.SetJobPositionId(PlatformConsts.AbpIdentity.User.AdminJobPositionIdDefaultValue); + (await UserManager.CreateAsync(adminUser, adminPassword, validatePassword: false)).CheckErrors(); result.CreatedAdminUser = true; (await UserManager.AddToRoleAsync(adminUser, PlatformConsts.AbpIdentity.User.AdminRoleName)).CheckErrors(); + + // BranchUsers tablosuna admin kullanicisi ekleniyor. + var defaultBranchUsers = await _branchUsersRepository.FirstOrDefaultAsync(bu => bu.UserId == adminUser.Id && bu.BranchId == defaultBranch.Id); + if (defaultBranchUsers is null) + { + await _branchUsersRepository.InsertAsync(new BranchUsers + { + BranchId = defaultBranch.Id, + UserId = adminUser.Id, + TenantId = tenantId + }, autoSave: true); + } } - + // Grant all permission kısmı Abp tarafından otomatik çalıştırılıyor. // Ayrıca bende çalıştırınca hata veriyor. // Hem DbMigrator hem de burada IdentityDataSeeder var.