Organization_Management #142
@ -29,6 +29,7 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
private readonly ILoggingService _logger;
|
private readonly ILoggingService _logger;
|
||||||
|
|
||||||
private static readonly Guid PMCProvider = Guid.Parse("b1877a3b-8832-47b1-bbe3-dc7e98672f49");
|
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,
|
public OrganizationController(IDbContextFactory<ApplicationDbContext> dbContextFactory,
|
||||||
IServiceScopeFactory serviceScope,
|
IServiceScopeFactory serviceScope,
|
||||||
UserHelper userHelper,
|
UserHelper userHelper,
|
||||||
@ -43,54 +44,61 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
tenantId = userHelper.GetTenantId();
|
tenantId = userHelper.GetTenantId();
|
||||||
}
|
}
|
||||||
#region =================================================================== Get Functions ===================================================================
|
#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
|
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||||
// .Include(sp => sp.ProviderType)
|
|
||||||
// .Where(sp => sp.TenantId == tenantId && sp.IsActive == active);
|
|
||||||
|
|
||||||
// var filterObject = TryDeserializeServicesProviderFilter(filter);
|
var organizationQuery = _context.Organizations
|
||||||
|
.Where(o => o.IsActive == active);
|
||||||
|
|
||||||
// if (filterObject != null)
|
if (tenantId != superTenantId)
|
||||||
// {
|
{
|
||||||
// if (filterObject.ProviderTypeIds?.Any() ?? false)
|
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));
|
||||||
// serviceProviderQuery = serviceProviderQuery.Where(sp => filterObject.ProviderTypeIds.Contains(sp.ProviderTypeId));
|
}
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (!string.IsNullOrWhiteSpace(searchString))
|
if (sprid.HasValue)
|
||||||
// {
|
{
|
||||||
// if (!(Int32.TryParse(searchString, out int num)))
|
organizationQuery = organizationQuery.Where(o => o.SPRID == sprid.Value);
|
||||||
// {
|
}
|
||||||
// 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);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// var serviceProviders = await serviceProviderQuery
|
if (!string.IsNullOrWhiteSpace(searchString))
|
||||||
// .OrderBy(e => e.ProviderName)
|
{
|
||||||
// .Skip((pageNumber - 1) * pageSize)
|
organizationQuery = organizationQuery.Where(sp =>
|
||||||
// .Take(pageSize)
|
sp.Name.Contains(searchString) ||
|
||||||
// .ToListAsync();
|
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
|
#endregion
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user