diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Commands/CreateCheckout/CreateOrEditCheckoutCommandHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Commands/CreateCheckout/CreateOrEditCheckoutCommandHandler.cs index d7704b1f..d8c4a5b4 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Commands/CreateCheckout/CreateOrEditCheckoutCommandHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Commands/CreateCheckout/CreateOrEditCheckoutCommandHandler.cs @@ -10,7 +10,7 @@ using GozareshgirProgramManager.Domain.ProjectAgg.Repositories; using GozareshgirProgramManager.Domain.SalaryPaymentSettingAgg.DTOs; using GozareshgirProgramManager.Domain.SalaryPaymentSettingAgg.Enums; using GozareshgirProgramManager.Domain.SalaryPaymentSettingAgg.Repositories; -using GozareshgirProgramManager.Domain.UserAgg.Entities; + using MediatR; using PersianTools.Core; using System.Runtime.InteropServices; diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Queries/GetUserToGropCreate/GetUserToGroupCreatingQueryHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Queries/GetUserToGropCreate/GetUserToGroupCreatingQueryHandler.cs index 1b04026a..c98b88e9 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Queries/GetUserToGropCreate/GetUserToGroupCreatingQueryHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Checkouts/Queries/GetUserToGropCreate/GetUserToGroupCreatingQueryHandler.cs @@ -14,10 +14,12 @@ namespace GozareshgirProgramManager.Application.Modules.Checkouts.Queries.GetUse public class GetUserToGroupCreatingQueryHandler : IBaseQueryHandler { private readonly IProgramManagerDbContext _context; + private readonly IGozareshgirDbContext _gozareshgirDbContext; - public GetUserToGroupCreatingQueryHandler(IProgramManagerDbContext context) + public GetUserToGroupCreatingQueryHandler(IProgramManagerDbContext context, IGozareshgirDbContext gozareshgirDbContext) { _context = context; + _gozareshgirDbContext = gozareshgirDbContext; } public async Task> Handle(GetUserToGroupCreatingQuery request, CancellationToken cancellationToken) @@ -48,13 +50,14 @@ public class GetUserToGroupCreatingQueryHandler : IBaseQueryHandler Handle(CreateSalarySettingsCommand request, CancellationToken cancellationToken) { - if(_salaryPaymentSettingRepository.Exists(x=>x.UserId == request.UserId)) + if(_salaryPaymentSettingRepository.Exists(x=>x.AccountId == request.UserId)) return OperationResult.Failure(" برای این پرسنل قبلا تنظیمات ایجاد شده است"); diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/SalaryPaymentSettings/Queries/GetSalarySettingToEdit/GetSalarySettingToEditQueryHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/SalaryPaymentSettings/Queries/GetSalarySettingToEdit/GetSalarySettingToEditQueryHandler.cs index c3bd3385..1fe869c7 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/SalaryPaymentSettings/Queries/GetSalarySettingToEdit/GetSalarySettingToEditQueryHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/SalaryPaymentSettings/Queries/GetSalarySettingToEdit/GetSalarySettingToEditQueryHandler.cs @@ -27,7 +27,7 @@ public class GetSalarySettingToEditQueryHandler : IBaseQueryHandler new WorkingHoursListDto diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/SalaryPaymentSettings/Queries/GetUserListWhoHaveSettings/GetUserListWhoHaveSettingsQueryHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/SalaryPaymentSettings/Queries/GetUserListWhoHaveSettings/GetUserListWhoHaveSettingsQueryHandler.cs index 2e9361e6..05fd3674 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/SalaryPaymentSettings/Queries/GetUserListWhoHaveSettings/GetUserListWhoHaveSettingsQueryHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/SalaryPaymentSettings/Queries/GetUserListWhoHaveSettings/GetUserListWhoHaveSettingsQueryHandler.cs @@ -21,7 +21,7 @@ public class GetUserListWhoHaveSettingsQueryHandler : IBaseQueryHandler Checkouts { set; get; } DbSet SalaryPaymentSettings { set; get; } - DbSet Roles { get; set; } - DbSet Users { get; set; } - DbSet RefreshTokens { get; set; } DbSet Customers { get; } DbSet Projects { get; set; } DbSet ProjectPhases { get; set; } diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/RoleAgg/Entities/Role.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/RoleAgg/Entities/Role.cs deleted file mode 100644 index 81bb10ba..00000000 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/RoleAgg/Entities/Role.cs +++ /dev/null @@ -1,48 +0,0 @@ -using GozareshgirProgramManager.Domain._Common; -using GozareshgirProgramManager.Domain.PermissionAgg.Entities; -using System.Security.Principal; -using System.Xml.Linq; -using GozareshgirProgramManager.Domain.UserAgg.Entities; - -namespace GozareshgirProgramManager.Domain.RoleAgg.Entities; - -public class Role : EntityBase -{ - /// - /// نام نقش - /// - public string RoleName { get; private set; } - - - /// - /// لیست پرمیشن کد ها - /// - public List Permissions { get; private set; } - - /// - /// ای دی نقش در گزارشگیر - /// - public long? GozareshgirRoleId { get; private set; } - - - protected Role() - { - } - - public Role(string roleName,long? gozareshgirRolId, List permissions) - { - RoleName = roleName; - Permissions = permissions; - GozareshgirRoleId = gozareshgirRolId; - - } - - - public void Edit(string roleName, List permissions) - { - RoleName = roleName; - Permissions = permissions; - } - - -} \ No newline at end of file diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/RoleAgg/Repositories/IRoleRepository.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/RoleAgg/Repositories/IRoleRepository.cs deleted file mode 100644 index 6d30ae22..00000000 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/RoleAgg/Repositories/IRoleRepository.cs +++ /dev/null @@ -1,12 +0,0 @@ -using GozareshgirProgramManager.Domain._Common; -using GozareshgirProgramManager.Domain.RoleAgg.Entities; -using GozareshgirProgramManager.Domain.UserAgg.Entities; - -namespace GozareshgirProgramManager.Domain.RoleAgg.Repositories; - -public interface IRoleRepository : IRepository -{ - Task GetByGozareshgirRoleIdAsync(long? gozareshgirRolId); - - -} \ No newline at end of file diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/RoleUserAgg/RoleUser.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/RoleUserAgg/RoleUser.cs deleted file mode 100644 index b8a05dc9..00000000 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/RoleUserAgg/RoleUser.cs +++ /dev/null @@ -1,19 +0,0 @@ -using GozareshgirProgramManager.Domain.UserAgg.Entities; - -namespace GozareshgirProgramManager.Domain.RoleUserAgg; - -public class RoleUser -{ - public RoleUser(long roleId) - { - RoleId = roleId; - } - - public long Id { get; private set; } - public long RoleId { get; private set; } - - - public User User { get; set; } - - -} \ No newline at end of file diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/SalaryPaymentSettingAgg/Entities/SalaryPaymentSetting.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/SalaryPaymentSettingAgg/Entities/SalaryPaymentSetting.cs index d98e3454..e5923ad6 100644 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/SalaryPaymentSettingAgg/Entities/SalaryPaymentSetting.cs +++ b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/SalaryPaymentSettingAgg/Entities/SalaryPaymentSetting.cs @@ -1,5 +1,4 @@ using GozareshgirProgramManager.Domain._Common; -using GozareshgirProgramManager.Domain.UserAgg.Entities; namespace GozareshgirProgramManager.Domain.SalaryPaymentSettingAgg.Entities; @@ -13,13 +12,13 @@ public class SalaryPaymentSetting : EntityBase /// برای اولین بار /// /// - /// + /// /// /// - public SalaryPaymentSetting(bool holidayWorking, long userId, double monthlySalary, List workingHoursList) + public SalaryPaymentSetting(bool holidayWorking, long accountId, double monthlySalary, List workingHoursList) { HolidayWorking = holidayWorking; - UserId = userId; + AccountId = accountId; MonthlySalary = monthlySalary; WorkingHoursList = workingHoursList; StartSettingDate = new DateTime(2025, 3, 21); @@ -28,14 +27,14 @@ public class SalaryPaymentSetting : EntityBase /// افزودن تنظیمات جدید /// /// - /// + /// /// /// /// - public SalaryPaymentSetting(bool holidayWorking, long userId, List workingHoursList, DateTime startSettingDate) + public SalaryPaymentSetting(bool holidayWorking, long accountId, List workingHoursList, DateTime startSettingDate) { HolidayWorking = holidayWorking; - UserId = userId; + AccountId = accountId; WorkingHoursList = workingHoursList; StartSettingDate = startSettingDate; @@ -56,7 +55,7 @@ public class SalaryPaymentSetting : EntityBase /// /// آی دی کاربر /// - public long UserId { get; private set; } + public long AccountId { get; private set; } /// /// دستمزد ماهانه diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Entities/User.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Entities/User.cs deleted file mode 100644 index d112136d..00000000 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Entities/User.cs +++ /dev/null @@ -1,169 +0,0 @@ -using GozareshgirProgramManager.Domain._Common; -using GozareshgirProgramManager.Domain.PermissionAgg.Entities; -using GozareshgirProgramManager.Domain.RoleAgg.Entities; -using GozareshgirProgramManager.Domain.RoleUserAgg; - -namespace GozareshgirProgramManager.Domain.UserAgg.Entities; - -/// -/// کاربر -/// -public class User : EntityBase -{ - /// - /// ایجاد - /// - /// - /// - /// - /// - /// - /// - /// - public User(string fullName, string userName, string password, string mobile, string? email, long? accountId, List roles) - { - FullName = fullName; - UserName = userName; - Password = password; - Mobile = mobile; - Email = email; - IsActive = true; - AccountId = accountId; - RoleUser = roles; - } - - protected User() - { - - } - /// - /// نام و نام خانوادگی - /// - public string FullName { get; private set; } - - /// - /// نام کاربری - /// - public string UserName { get; private set; } - - /// - /// گذرواژه - /// - public string Password { get; private set; } - - /// - /// مسیر عکس پروفایل - /// - public string ProfilePhotoPath { get; private set; } - - /// - /// شماره موبایل - /// - public string Mobile { get; set; } - - /// - /// ایمیل - /// - public string? Email { get; private set; } - - /// - /// فعال/غیر فعال بودن یوزر - /// - public bool IsActive { get; private set; } - - - /// - /// کد یکبارمصرف ورود - /// - public string? VerifyCode { get; private set; } - - /// - /// آی دی کاربر در گزارشگیر - /// - public long? AccountId { get; private set; } - - - /// - /// لیست پرمیشن کد ها - /// - public List RoleUser { get; private set; } - - /// - /// لیست توکن‌های تازه‌سازی - /// - private List _refreshTokens = new(); - public IReadOnlyCollection RefreshTokens => _refreshTokens.AsReadOnly(); - - /// - /// آپدیت کاربر - /// - /// - /// - /// - /// - /// - public void Edit(string fullName, string userName, string mobile, List roles, bool isActive) - { - FullName = fullName; - UserName = userName; - Mobile = mobile; - RoleUser = roles; - IsActive = isActive; - } - - /// - /// غیرفعال سازی - /// - public void DeActive() - { - IsActive = false; - } - - /// - /// فعال سازی - /// - public void ReActive() - { - IsActive = true; - } - - /// - /// افزودن توکن تازه‌سازی - /// - public void AddRefreshToken(string token, DateTime expiresAt, string? ipAddress = null, string? userAgent = null) - { - var refreshToken = new UserRefreshToken(Id, token, expiresAt, ipAddress, userAgent); - _refreshTokens.Add(refreshToken); - } - - /// - /// لغو توکن تازه‌سازی - /// - public void RevokeRefreshToken(string token) - { - var refreshToken = _refreshTokens.FirstOrDefault(x => x.Token == token); - if (refreshToken == null) - throw new InvalidOperationException("توکن یافت نشد"); - - refreshToken.Revoke(); - } - - /// - /// لغو تمام توکن‌های فعال - /// - public void RevokeAllRefreshTokens() - { - foreach (var token in _refreshTokens.Where(x => x.IsActive)) - { - token.Revoke(); - } - } - - /// - /// پاکسازی توکن‌های منقضی شده - /// - public void RemoveExpiredRefreshTokens() - { - _refreshTokens.RemoveAll(x => !x.IsActive); - } -} \ No newline at end of file diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Entities/UserRefreshToken.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Entities/UserRefreshToken.cs deleted file mode 100644 index b04b3615..00000000 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Entities/UserRefreshToken.cs +++ /dev/null @@ -1,90 +0,0 @@ -using GozareshgirProgramManager.Domain._Common; - -namespace GozareshgirProgramManager.Domain.UserAgg.Entities; - -/// -/// توکن تازه‌سازی برای احراز هویت -/// -public class UserRefreshToken : EntityBase -{ - /// - /// سازنده محافظت شده برای EF Core - /// - protected UserRefreshToken() - { - } - - /// - /// ایجاد توکن تازه‌سازی - /// - public UserRefreshToken(long userId, string token, DateTime expiresAt, string? ipAddress = null, string? userAgent = null) - { - UserId = userId; - Token = token; - ExpiresAt = expiresAt; - IpAddress = ipAddress; - UserAgent = userAgent; - } - - /// - /// شناسه کاربر - /// - public long UserId { get; private set; } - - /// - /// توکن تازه‌سازی - /// - public string Token { get; private set; } - - /// - /// تاریخ انقضا - /// - public DateTime ExpiresAt { get; private set; } - - /// - /// تاریخ لغو - /// - public DateTime? RevokedAt { get; private set; } - - /// - /// آی‌پی کاربر - /// - public string? IpAddress { get; private set; } - - /// - /// User Agent مرورگر - /// - public string? UserAgent { get; private set; } - - /// - /// آیا منقضی شده؟ - /// - public bool IsExpired => DateTime.Now >= ExpiresAt; - - /// - /// آیا لغو شده؟ - /// - public bool IsRevoked => RevokedAt.HasValue; - - /// - /// آیا فعال است؟ - /// - public bool IsActive => !IsRevoked && !IsExpired; - - /// - /// لغو توکن - /// - public void Revoke() - { - if (IsRevoked) - throw new InvalidOperationException("توکن قبلاً لغو شده است"); - - RevokedAt = DateTime.Now; - } - - /// - /// کاربر صاحب توکن - /// - public User User { get; private set; } -} - diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Enums/ExternalAuthProvider.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Enums/ExternalAuthProvider.cs deleted file mode 100644 index e02abfc9..00000000 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Enums/ExternalAuthProvider.cs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Events/UserEvents.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Events/UserEvents.cs deleted file mode 100644 index 83b95f05..00000000 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Events/UserEvents.cs +++ /dev/null @@ -1,47 +0,0 @@ -using GozareshgirProgramManager.Domain._Common; -using GozareshgirProgramManager.Domain.UserAgg.Entities; - - -namespace GozareshgirProgramManager.Domain.UserAgg.Events; - -public record UserCreatedEvent(long UserId, string FirstName, string LastName, string Email) : IDomainEvent -{ - public DateTime OccurredOn { get; init; } = DateTime.UtcNow; -} - -public record UserPersonalInfoUpdatedEvent(long UserId, string OldFirstName, string OldLastName, string NewFirstName, string NewLastName) : IDomainEvent -{ - public DateTime OccurredOn { get; init; } = DateTime.UtcNow; -} - -public record UserEmailUpdatedEvent(long UserId, string OldEmail, string NewEmail) : IDomainEvent -{ - public DateTime OccurredOn { get; init; } = DateTime.UtcNow; -} - -public record UserWorkInfoUpdatedEvent(long UserId, string? Department, string? Position) : IDomainEvent -{ - public DateTime OccurredOn { get; init; } = DateTime.UtcNow; -} - - - - - - - - -public record UserDeactivatedEvent(long UserId, string? Reason) : IDomainEvent -{ - public DateTime OccurredOn { get; init; } = DateTime.UtcNow; -} - -public record UserActivatedEvent(long UserId) : IDomainEvent -{ - public DateTime OccurredOn { get; init; } = DateTime.UtcNow; -} - -public record UserLoggedInEvent(long UserId, DateTime LoginTime) : IDomainEvent -{ - public DateTime OccurredOn { get; init; } = DateTime.UtcNow; -} diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Repositories/IUserRefreshTokenRepository.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Repositories/IUserRefreshTokenRepository.cs deleted file mode 100644 index 62146e68..00000000 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Repositories/IUserRefreshTokenRepository.cs +++ /dev/null @@ -1,9 +0,0 @@ -using GozareshgirProgramManager.Domain._Common; -using GozareshgirProgramManager.Domain.UserAgg.Entities; - -namespace GozareshgirProgramManager.Domain.UserAgg.Repositories; - -public interface IUserRefreshTokenRepository : IRepository -{ - -} \ No newline at end of file diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Repositories/IUserRepository.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Repositories/IUserRepository.cs deleted file mode 100644 index 5ce68190..00000000 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/UserAgg/Repositories/IUserRepository.cs +++ /dev/null @@ -1,32 +0,0 @@ -using GozareshgirProgramManager.Domain._Common; -using GozareshgirProgramManager.Domain.UserAgg.Entities; - -namespace GozareshgirProgramManager.Domain.UserAgg.Repositories; - -public interface IUserRepository: IRepository -{ - Task GetByIdAsync(long id); - - /// - /// یافتن کاربر با آی دی اکانت گزارشگیر او - /// - /// - /// - Task GetByGozareshgirAccountId(long accountId); - Task GetByEmailAsync(string email); - Task GetByMobileAsync(string mobile); - Task> GetAllAsync(); - Task> GetActiveUsersAsync(); - - Task AddAsync(User user); - void Update(User user); - void Delete(User user); - Task ExistsAsync(long id); - Task UsernameExistsAsync(string username); - Task EmailExistsAsync(string email); - Task MobileExistsAsync(string mobile); - Task GetUserWithRolesByIdAsync(long userId, CancellationToken cancellationToken); -} - - - diff --git a/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Context/ProgramManagerDbContext.cs b/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Context/ProgramManagerDbContext.cs index 2fc4854c..69327586 100644 --- a/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Context/ProgramManagerDbContext.cs +++ b/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Context/ProgramManagerDbContext.cs @@ -31,13 +31,9 @@ public class ProgramManagerDbContext : DbContext, IProgramManagerDbContext public DbSet TaskSectionActivities { get; set; } = null!; public DbSet TaskSectionAdditionalTimes { get; set; } = null!; - - public DbSet Users { get; set; } = null!; - public DbSet RefreshTokens { get; set; } = null!; public DbSet Checkouts { get; set; } = null!; public DbSet SalaryPaymentSettings { get; set; } = null!; - public DbSet Roles { get; set; } = null!; public DbSet Skills { get; set; } = null!; protected override void OnModelCreating(ModelBuilder modelBuilder) diff --git a/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/SalaryPaymentSettingRepository.cs b/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/SalaryPaymentSettingRepository.cs index a3d43ccd..4af80655 100644 --- a/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/SalaryPaymentSettingRepository.cs +++ b/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/SalaryPaymentSettingRepository.cs @@ -19,16 +19,16 @@ public class SalaryPaymentSettingRepository : RepositoryBase GetSalarySettingByUserId(long userId) { - return await _context.SalaryPaymentSettings.FirstOrDefaultAsync(x => x.UserId == userId); + return await _context.SalaryPaymentSettings.FirstOrDefaultAsync(x => x.AccountId == userId); } public async Task> GetAllSettings(List userIdList) { _context.SalaryPaymentSettings.AsNoTracking(); - var query = await _context.SalaryPaymentSettings.Where(s=> userIdList.Contains(s.UserId)) + var query = await _context.SalaryPaymentSettings.Where(s=> userIdList.Contains(s.AccountId)) .Join(_context.Users.AsNoTracking(), - setting => setting.UserId, + setting => setting.AccountId, user => user.Id, (setting, user) => new { setting, user } ) diff --git a/ServiceHost/Areas/Admin/Controllers/AuthController.cs b/ServiceHost/Areas/Admin/Controllers/ProgramManager/AuthController.cs similarity index 97% rename from ServiceHost/Areas/Admin/Controllers/AuthController.cs rename to ServiceHost/Areas/Admin/Controllers/ProgramManager/AuthController.cs index cac9318f..22e3c173 100644 --- a/ServiceHost/Areas/Admin/Controllers/AuthController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ProgramManager/AuthController.cs @@ -9,14 +9,12 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; -namespace ServiceHost.Areas.Admin.Controllers; +namespace ServiceHost.Areas.Admin.Controllers.ProgramManager; /// /// کنترلر احراز هویت /// -[Route("api/[controller]")] -[ApiController] -public class AuthController :AdminBaseController +public class AuthController : ProgramManagerBaseController { private readonly IAuthHelper _authHelper; private readonly IMediator _mediator; diff --git a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs b/ServiceHost/Areas/Admin/Controllers/ProgramManager/CheckoutController.cs similarity index 96% rename from ServiceHost/Areas/Admin/Controllers/CheckoutController.cs rename to ServiceHost/Areas/Admin/Controllers/ProgramManager/CheckoutController.cs index 69128d3a..29edd65c 100644 --- a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ProgramManager/CheckoutController.cs @@ -7,9 +7,9 @@ using MediatR; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; -namespace ServiceHost.Areas.Admin.Controllers; +namespace ServiceHost.Areas.Admin.Controllers.ProgramManager; -public class CheckoutController : AdminBaseController +public class CheckoutController : ProgramManagerBaseController { private readonly IMediator _mediator; diff --git a/ServiceHost/Areas/Admin/Controllers/ProjectController.cs b/ServiceHost/Areas/Admin/Controllers/ProgramManager/ProjectController.cs similarity index 96% rename from ServiceHost/Areas/Admin/Controllers/ProjectController.cs rename to ServiceHost/Areas/Admin/Controllers/ProgramManager/ProjectController.cs index a52e8ab1..266e72d4 100644 --- a/ServiceHost/Areas/Admin/Controllers/ProjectController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ProgramManager/ProjectController.cs @@ -14,9 +14,9 @@ using MediatR; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; -namespace ServiceHost.Areas.Admin.Controllers; +namespace ServiceHost.Areas.Admin.Controllers.ProgramManager; -public class ProjectController : AdminBaseController +public class ProjectController : ProgramManagerBaseController { private readonly IMediator _mediator; diff --git a/ServiceHost/Areas/Admin/Controllers/RoleController.cs b/ServiceHost/Areas/Admin/Controllers/ProgramManager/RoleController.cs similarity index 84% rename from ServiceHost/Areas/Admin/Controllers/RoleController.cs rename to ServiceHost/Areas/Admin/Controllers/ProgramManager/RoleController.cs index b074f105..39e7ff7d 100644 --- a/ServiceHost/Areas/Admin/Controllers/RoleController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ProgramManager/RoleController.cs @@ -1,4 +1,4 @@ -using GozareshgirProgramManager.Application._Common.Models; +using GozareshgirProgramManager.Application._Common.Models; using GozareshgirProgramManager.Application.Modules.Roles.Commands.CreateRole; using GozareshgirProgramManager.Application.Modules.Roles.Commands.EditRole; using GozareshgirProgramManager.Application.Modules.Roles.Queries.GetRoles; @@ -6,9 +6,9 @@ using MediatR; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; -namespace ServiceHost.Areas.Admin.Controllers; +namespace ServiceHost.Areas.Admin.Controllers.ProgramManager; -public class RoleController : AdminBaseController +public class RoleController : ProgramManagerBaseController { private readonly IMediator _mediator; diff --git a/ServiceHost/Areas/Admin/Controllers/SalaryPaymentSettingsController.cs b/ServiceHost/Areas/Admin/Controllers/ProgramManager/SalaryPaymentSettingsController.cs similarity index 90% rename from ServiceHost/Areas/Admin/Controllers/SalaryPaymentSettingsController.cs rename to ServiceHost/Areas/Admin/Controllers/ProgramManager/SalaryPaymentSettingsController.cs index bb09a5a3..bbf188ed 100644 --- a/ServiceHost/Areas/Admin/Controllers/SalaryPaymentSettingsController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ProgramManager/SalaryPaymentSettingsController.cs @@ -1,4 +1,4 @@ -using GozareshgirProgramManager.Application._Common.Models; +using GozareshgirProgramManager.Application._Common.Models; using GozareshgirProgramManager.Application.Modules.SalaryPaymentSettings.Commands.CreateSalarySettings; using GozareshgirProgramManager.Application.Modules.SalaryPaymentSettings.Commands.EditSalarySettings; using GozareshgirProgramManager.Application.Modules.SalaryPaymentSettings.Queries.GetSalarySettingToEdit; @@ -8,9 +8,9 @@ using MediatR; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; -namespace ServiceHost.Areas.Admin.Controllers; +namespace ServiceHost.Areas.Admin.Controllers.ProgramManager; -public class SalaryPaymentSettingsController : AdminBaseController +public class SalaryPaymentSettingsController : ProgramManagerBaseController { private readonly IMediator _mediator; diff --git a/ServiceHost/Areas/Admin/Controllers/SkillController.cs b/ServiceHost/Areas/Admin/Controllers/ProgramManager/SkillController.cs similarity index 82% rename from ServiceHost/Areas/Admin/Controllers/SkillController.cs rename to ServiceHost/Areas/Admin/Controllers/ProgramManager/SkillController.cs index 4fcc373e..da770a7e 100644 --- a/ServiceHost/Areas/Admin/Controllers/SkillController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ProgramManager/SkillController.cs @@ -4,9 +4,9 @@ using MediatR; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; -namespace ServiceHost.Areas.Admin.Controllers; +namespace ServiceHost.Areas.Admin.Controllers.ProgramManager; -public class SkillController:AdminBaseController +public class SkillController : ProgramManagerBaseController { private readonly IMediator _mediator; diff --git a/ServiceHost/Areas/Admin/Controllers/UserController.cs b/ServiceHost/Areas/Admin/Controllers/ProgramManager/UserController.cs similarity index 90% rename from ServiceHost/Areas/Admin/Controllers/UserController.cs rename to ServiceHost/Areas/Admin/Controllers/ProgramManager/UserController.cs index 9fabaf9f..f0f7ada3 100644 --- a/ServiceHost/Areas/Admin/Controllers/UserController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ProgramManager/UserController.cs @@ -1,4 +1,4 @@ -using GozareshgirProgramManager.Application._Common.Models; +using GozareshgirProgramManager.Application._Common.Models; using GozareshgirProgramManager.Application.Modules.Users.Commands.CreateUser; using GozareshgirProgramManager.Application.Modules.Users.Commands.EditUser; using GozareshgirProgramManager.Application.Modules.Users.Queries.GetSingleUser; @@ -8,9 +8,9 @@ using MediatR; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; -namespace ServiceHost.Areas.Admin.Controllers; +namespace ServiceHost.Areas.Admin.Controllers.ProgramManager; -public class UserController : AdminBaseController +public class UserController : ProgramManagerBaseController { private readonly IMediator _mediator; diff --git a/ServiceHost/BaseControllers/ProgramManagerBaseController.cs b/ServiceHost/BaseControllers/ProgramManagerBaseController.cs new file mode 100644 index 00000000..1a174236 --- /dev/null +++ b/ServiceHost/BaseControllers/ProgramManagerBaseController.cs @@ -0,0 +1,13 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +namespace ServiceHost.BaseControllers; + +[Authorize(Policy = "AdminArea")] +[Area("Admin")] +[ApiExplorerSettings(GroupName = "ProgramManager")] +[Route("api/admin/programmanager/[controller]")] +public class ProgramManagerBaseController:ControllerBase +{ + +} + diff --git a/ServiceHost/Program.cs b/ServiceHost/Program.cs index a414829e..3bb89c85 100644 --- a/ServiceHost/Program.cs +++ b/ServiceHost/Program.cs @@ -242,36 +242,38 @@ builder.Services.AddSwaggerGen(options => options.SwaggerDoc("Admin", new OpenApiInfo { Title = "API - Admin", Version = "v1" }); options.SwaggerDoc("Client", new OpenApiInfo { Title = "API - Client", Version = "v1" }); options.SwaggerDoc("Camera", new OpenApiInfo { Title = "API - Camera", Version = "v1" }); + options.SwaggerDoc("ProgramManager", new OpenApiInfo { Title = "API - ProgramManager", Version = "v1" }); + options.DocInclusionPredicate((docName, apiDesc) => string.Equals(docName, apiDesc.GroupName, StringComparison.OrdinalIgnoreCase)); - // اضافه کردن پشتیبانی از JWT در Swagger - options.AddSecurityDefinition("Bearer", new Microsoft.OpenApi.Models.OpenApiSecurityScheme - { - Name = "Authorization", - Type = Microsoft.OpenApi.Models.SecuritySchemeType.ApiKey, - Scheme = "Bearer", - BearerFormat = "JWT", - In = Microsoft.OpenApi.Models.ParameterLocation.Header, - Description = "لطفاً 'Bearer [space] token' را وارد کنید." - }); - - options.AddSecurityRequirement(new Microsoft.OpenApi.Models.OpenApiSecurityRequirement - { - { - new Microsoft.OpenApi.Models.OpenApiSecurityScheme - { - Reference = new Microsoft.OpenApi.Models.OpenApiReference - { - Type = Microsoft.OpenApi.Models.ReferenceType.SecurityScheme, - Id = "Bearer" - } - }, - Array.Empty() - } - }); + // // اضافه کردن پشتیبانی از JWT در Swagger + // options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme + // { + // Name = "Authorization", + // Type = Microsoft.OpenApi.Models.SecuritySchemeType.ApiKey, + // Scheme = "Bearer", + // BearerFormat = "JWT", + // In = Microsoft.OpenApi.Models.ParameterLocation.Header, + // Description = "لطفاً 'Bearer [space] token' را وارد کنید." + // }); + // + // options.AddSecurityRequirement(new Microsoft.OpenApi.Models.OpenApiSecurityRequirement + // { + // { + // new Microsoft.OpenApi.Models.OpenApiSecurityScheme + // { + // Reference = new Microsoft.OpenApi.Models.OpenApiReference + // { + // Type = Microsoft.OpenApi.Models.ReferenceType.SecurityScheme, + // Id = "Bearer" + // } + // }, + // Array.Empty() + // } + // }); options.EnableAnnotations(); }); @@ -405,6 +407,7 @@ if (app.Environment.IsDevelopment()) options.DocExpansion(DocExpansion.None); options.SwaggerEndpoint("/swagger/General/swagger.json", "API - General"); options.SwaggerEndpoint("/swagger/Admin/swagger.json", "API - Admin"); + options.SwaggerEndpoint("/swagger/ProgramManager/swagger.json", "API - ProgramManager"); options.SwaggerEndpoint("/swagger/Client/swagger.json", "API - Client"); options.SwaggerEndpoint("/swagger/Camera/swagger.json", "API - Camera"); });