Organization_Management #142
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user