Added the API og list organization

This commit is contained in:
ashutosh.nehete 2025-09-18 10:25:59 +05:30
parent 4a25158cc9
commit 55cae17ed1

View File

@ -29,6 +29,7 @@ namespace Marco.Pms.Services.Controllers
private readonly ILoggingService _logger;
private static readonly Guid PMCProvider = Guid.Parse("b1877a3b-8832-47b1-bbe3-dc7e98672f49");
private static readonly Guid superTenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26");
public OrganizationController(IDbContextFactory<ApplicationDbContext> dbContextFactory,
IServiceScopeFactory serviceScope,
UserHelper userHelper,
@ -43,54 +44,61 @@ namespace Marco.Pms.Services.Controllers
tenantId = userHelper.GetTenantId();
}
#region =================================================================== Get Functions ===================================================================
//[HttpGet("list")]
//public async Task<IActionResult> GetListServiceProviderAsync([FromQuery] string? searchString, [FromQuery] string? filter, [FromQuery] bool active = true,
// [FromQuery] int pageNumber = 1, [FromQuery] int pageSize = 1)
//{
// await using var _context = await _dbContextFactory.CreateDbContextAsync();
// using var scope = _serviceScope.CreateScope();
// var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
[HttpGet("list")]
public async Task<IActionResult> GetOrganizarionListAsync([FromQuery] string? searchString, [FromQuery] double? sprid, [FromQuery] bool active = true,
[FromQuery] int pageNumber = 1, [FromQuery] int pageSize = 20)
{
await using var _context = await _dbContextFactory.CreateDbContextAsync();
using var scope = _serviceScope.CreateScope();
// var serviceProviderQuery = _context.ServiceProviders
// .Include(sp => sp.ProviderType)
// .Where(sp => sp.TenantId == tenantId && sp.IsActive == active);
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
// var filterObject = TryDeserializeServicesProviderFilter(filter);
var organizationQuery = _context.Organizations
.Where(o => o.IsActive == active);
// if (filterObject != null)
// {
// if (filterObject.ProviderTypeIds?.Any() ?? false)
// {
// serviceProviderQuery = serviceProviderQuery.Where(sp => filterObject.ProviderTypeIds.Contains(sp.ProviderTypeId));
// }
// }
if (tenantId != superTenantId)
{
var organizationIds = await _context.TenantOrgMappings.Where(to => to.TenantId == tenantId && to.IsActive).Select(to => to.OrganizationId).ToListAsync();
organizationQuery = organizationQuery.Where(o => organizationIds.Contains(o.Id));
}
// if (!string.IsNullOrWhiteSpace(searchString))
// {
// if (!(Int32.TryParse(searchString, out int num)))
// {
// num = 0;
// }
// serviceProviderQuery = serviceProviderQuery.Where(sp =>
// sp.ProviderName.Contains(searchString) ||
// sp.ContactPerson.Contains(searchString) ||
// sp.Address.Contains(searchString) ||
// sp.Email.Contains(searchString) ||
// sp.PhoneNumber.Contains(searchString) ||
// sp.SPRID == num);
// }
if (sprid.HasValue)
{
organizationQuery = organizationQuery.Where(o => o.SPRID == sprid.Value);
}
// var serviceProviders = await serviceProviderQuery
// .OrderBy(e => e.ProviderName)
// .Skip((pageNumber - 1) * pageSize)
// .Take(pageSize)
// .ToListAsync();
if (!string.IsNullOrWhiteSpace(searchString))
{
organizationQuery = organizationQuery.Where(sp =>
sp.Name.Contains(searchString) ||
sp.ContactPerson.Contains(searchString) ||
sp.Address.Contains(searchString) ||
sp.Email.Contains(searchString) ||
sp.ContactNumber.Contains(searchString));
}
// var response = _mapper.Map<List<OrganizationVM>>(serviceProviders);
var organizations = await organizationQuery
.OrderBy(e => e.Name)
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
.ToListAsync();
// return Ok(ApiResponse<object>.SuccessResponse(response, "Successfully fetched the Service Provider list", 200));
//}
var createdByIds = organizations.Where(o => o.CreatedById != null).Select(o => o.CreatedById).ToList();
var updatedByIds = organizations.Where(o => o.UpdatedById != null).Select(o => o.UpdatedById).ToList();
var employees = await _context.Employees.Where(e => createdByIds.Contains(e.Id) || updatedByIds.Contains(e.Id)).ToListAsync();
var response = organizations.Select(o =>
{
var result = _mapper.Map<OrganizationVM>(o);
result.CreatedBy = employees.Where(e => e.Id == o.CreatedById).Select(e => _mapper.Map<BasicEmployeeVM>(e)).FirstOrDefault();
result.UpdatedBy = employees.Where(e => e.Id == o.UpdatedById).Select(e => _mapper.Map<BasicEmployeeVM>(e)).FirstOrDefault();
return result;
});
return Ok(ApiResponse<object>.SuccessResponse(response, "Successfully fetched the Service Provider list", 200));
}
#endregion