added new metod for getting workshop on client login

This commit is contained in:
SamSys
2025-01-13 20:10:25 +03:30
parent dcda7b0bd0
commit 16b85676a2
3 changed files with 37 additions and 10 deletions

View File

@@ -246,15 +246,13 @@ public class AccountApplication : IAccountApplication
{ {
var clientPermissions = _accountPermissionSubtitle1Repository.GetAllPermissionCodes(); var clientPermissions = _accountPermissionSubtitle1Repository.GetAllPermissionCodes();
authViewModel.Permissions = clientPermissions; authViewModel.Permissions = clientPermissions;
var workshopList = _workshopRepository.SearchForClient(new WorkshopSearchModel() { AccountId = account.id }) var workshopList = _workshopRepository.GetWorkshopsByClientAccountId(account.id).Select(x => new WorkshopClaim
.OrderByDescending(x => x.PersonnelCount).ToList().Select(x => new WorkshopClaim() {
{ PersonnelCount = x.PersonnelCount,
Slug = _passwordHasher.SlugHasher(x.Id), Id = x.Id,
Name = x.WorkshopFullName, Name = x.WorkshopFullName,
PersonnelCount = x.PersonnelCount, Slug = _passwordHasher.SlugHasher(x.Id)
Id = x.Id }).OrderByDescending(x => x.PersonnelCount).ToList();
}
).ToList();
authViewModel.WorkshopList = workshopList; authViewModel.WorkshopList = workshopList;
if (workshopList.Any()) if (workshopList.Any())
authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshopList.First().Id); authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshopList.First().Id);

View File

@@ -61,6 +61,7 @@ public interface IWorkshopRepository : IRepository<long, Workshop>
#endregion #endregion
#region Mahan #region Mahan
PersonalContractingPartyViewModel GetPersonalContractingPartyByWorkshopId(long workshopId); PersonalContractingPartyViewModel GetPersonalContractingPartyByWorkshopId(long workshopId);
List<WorkshopViewModel> GetWorkshopsByClientAccountId(long clientAccountId);
#endregion #endregion
} }

View File

@@ -6,6 +6,8 @@ using _0_Framework.Application;
using _0_Framework.InfraStructure; using _0_Framework.InfraStructure;
using AccountManagement.Application.Contracts.Account; using AccountManagement.Application.Contracts.Account;
using AccountMangement.Infrastructure.EFCore; using AccountMangement.Infrastructure.EFCore;
using Company.Domain.EmployeeAgg;
using Company.Domain.empolyerAgg;
using Company.Domain.WorkshopAccountAgg; using Company.Domain.WorkshopAccountAgg;
using Company.Domain.WorkshopAgg; using Company.Domain.WorkshopAgg;
using Company.Domain.WorkshopEmployerAgg; using Company.Domain.WorkshopEmployerAgg;
@@ -27,13 +29,15 @@ public class WorkshopRepository : RepositoryBase<long, Company.Domain.WorkshopAg
private readonly IAuthHelper _authHelper; private readonly IAuthHelper _authHelper;
private readonly IPasswordHasher _passwordHasher; private readonly IPasswordHasher _passwordHasher;
private readonly IWorkshopAccountRepository _workshopAccountRepository; private readonly IWorkshopAccountRepository _workshopAccountRepository;
public WorkshopRepository(CompanyContext context, AccountContext accountContext, IAuthHelper authHelper, IPasswordHasher passwordHasher, IWorkshopAccountRepository workshopAccountRepository) : base(context) private readonly IEmployeeRepository _employeeRepository;
public WorkshopRepository(CompanyContext context, AccountContext accountContext, IAuthHelper authHelper, IPasswordHasher passwordHasher, IWorkshopAccountRepository workshopAccountRepository, IEmployeeRepository employeeRepository) : base(context)
{ {
_context = context; _context = context;
_accountContext = accountContext; _accountContext = accountContext;
_authHelper = authHelper; _authHelper = authHelper;
_passwordHasher = passwordHasher; _passwordHasher = passwordHasher;
_workshopAccountRepository = workshopAccountRepository; _workshopAccountRepository = workshopAccountRepository;
_employeeRepository = employeeRepository;
} }
@@ -1037,6 +1041,30 @@ public class WorkshopRepository : RepositoryBase<long, Company.Domain.WorkshopAg
}).FirstOrDefault(); }).FirstOrDefault();
} }
public List<WorkshopViewModel> GetWorkshopsByClientAccountId(long clientAccountId)
{
var workshops = _context.ContractingPartyAccounts.Where(x => x.AccountId == clientAccountId)
.Include(x => x.PersonalContractingParty)
.ThenInclude(x => x.Employers).ThenInclude(x => x.WorkshopEmployers).ThenInclude(x => x.Workshop).SelectMany(x =>
x.PersonalContractingParty.Employers.SelectMany(e => e.WorkshopEmployers).Select(e => e.Workshop)).Distinct().Select(x => new WorkshopViewModel()
{
Id = x.id,
WorkshopFullName = x.WorkshopFullName,
}).ToList();
workshops = workshops.Select(x => new WorkshopViewModel()
{
Id = x.Id,
WorkshopFullName = x.WorkshopFullName,
PersonnelCount = _employeeRepository.GetWorkingEmployeesByWorkshopId(x.Id).Count(),
}).ToList();
return workshops;
}
#endregion #endregion
#region NewByHeydari #region NewByHeydari