Added the search string in get infra project list API

This commit is contained in:
ashutosh.nehete 2025-11-19 12:07:48 +05:30
parent eed97d31c6
commit 0277303c54
3 changed files with 12 additions and 4 deletions

View File

@ -66,7 +66,7 @@ namespace MarcoBMS.Services.Controllers
/// <returns>An ApiResponse containing a list of projects or an error.</returns>
[HttpGet("list")]
public async Task<IActionResult> GetAllProjects([FromQuery] int pageNumber = 1, [FromQuery] int pageSize = 20)
public async Task<IActionResult> GetAllProjects([FromQuery] string? searchString, [FromQuery] int pageNumber = 1, [FromQuery] int pageSize = 20)
{
// --- Input Validation and Initial Setup ---
if (!ModelState.IsValid)
@ -79,7 +79,7 @@ namespace MarcoBMS.Services.Controllers
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid request data provided.", errors, 400));
}
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
var response = await _projectServices.GetAllProjectsAsync(pageNumber, pageSize, loggedInEmployee, tenantId);
var response = await _projectServices.GetAllProjectsAsync(searchString, pageNumber, pageSize, loggedInEmployee, tenantId);
return StatusCode(response.StatusCode, response);
}

View File

@ -173,7 +173,7 @@ namespace Marco.Pms.Services.Service
return ApiResponse<object>.ErrorResponse("An internal server error occurred. Please try again later.", null, 500);
}
}
public async Task<ApiResponse<object>> GetAllProjectsAsync(int pageNumber, int pageSize, Employee loggedInEmployee, Guid tenantId)
public async Task<ApiResponse<object>> GetAllProjectsAsync(string? searchString, int pageNumber, int pageSize, Employee loggedInEmployee, Guid tenantId)
{
try
{
@ -223,6 +223,14 @@ namespace Marco.Pms.Services.Service
var totalEntites = responseVms.Count;
var totalPages = (int)Math.Ceiling((double)totalEntites / pageSize);
if (!string.IsNullOrWhiteSpace(searchString))
{
var normalized = searchString.Trim().ToLowerInvariant();
responseVms = responseVms
.Where(p => p.Name!.ToLower().Contains(normalized) ||
(!string.IsNullOrWhiteSpace(p.ShortName) && p.ShortName.ToLower().Contains(normalized))).ToList();
}
responseVms = responseVms
.OrderBy(p => p.Name)
.Skip((pageNumber - 1) * pageSize)

View File

@ -12,7 +12,7 @@ namespace Marco.Pms.Services.Service.ServiceInterfaces
{
Task<ApiResponse<object>> GetBothProjectBasicListAsync(string? searchString, Employee loggedInEmployee, Guid tenantId);
Task<ApiResponse<object>> GetAllProjectsBasicAsync(bool provideAll, Employee loggedInEmployee, Guid tenantId);
Task<ApiResponse<object>> GetAllProjectsAsync(int pageNumber, int pageSize, Employee loggedInEmployee, Guid tenantId);
Task<ApiResponse<object>> GetAllProjectsAsync(string? searchString, int pageNumber, int pageSize, Employee loggedInEmployee, Guid tenantId);
Task<ApiResponse<object>> GetProjectAsync(Guid id, Employee loggedInEmployee, Guid tenantId);
Task<ApiResponse<object>> GetProjectDetailsAsync(Guid id, Employee loggedInEmployee, Guid tenantId);
Task<ApiResponse<object>> GetProjectDetailsOldAsync(Guid id, Employee loggedInEmployee, Guid tenantId);