Fix bad filtering

This commit is contained in:
2025-09-04 20:14:05 -07:00
parent d9bd4355c7
commit eb439e58db
2 changed files with 12 additions and 13 deletions
@@ -1,7 +1,6 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using BoredCareers.Services.DatabaseService; using BoredCareers.Services.DatabaseService;
using BoredCareers.Entities; using BoredCareers.Entities;
using Org.BouncyCastle.Tls;
namespace BoredCareers.Controllers { namespace BoredCareers.Controllers {
[ApiController] [ApiController]
@@ -17,45 +17,45 @@ namespace BoredCareers.Services.DatabaseService {
string limit = " LIMIT @PageSize OFFSET @PageNumber;"; string limit = " LIMIT @PageSize OFFSET @PageNumber;";
List<string> Filters = new List<string>(); List<string> Filters = new List<string>();
List<string> Parameters = new List<string>(); List<object> Parameters = new List<object>();
List<string> ParameterName = new List<string>(); List<string> ParameterName = new List<string>();
if (PostalCodes != null) { if (PostalCodes != null) {
for (int i = 0; i < PostalCodes.Length; i++) { for (int i = 0; i < PostalCodes.Length; i++) {
Filters.Add("PostalCode"); Filters.Add("PostalCode");
Parameters.Add(PostalCodes[i]); Parameters.Add(PostalCodes[i]);
ParameterName.Add("@PostalCode" + i); ParameterName.Add(" = @PostalCode" + i);
} }
} }
if (CountryCode != null) { if (CountryCode != null) {
Filters.Add("Country"); Filters.Add("Country");
Parameters.Add(CountryCode); Parameters.Add(CountryCode);
ParameterName.Add("@CountryCode"); ParameterName.Add(" = @CountryCode");
} }
if (JobType != null) { if (JobType != null) {
Filters.Add("JobType"); Filters.Add("JobType");
Parameters.Add(JobType); Parameters.Add(JobType);
ParameterName.Add("@JobType"); ParameterName.Add(" = @JobType");
} }
if (Remote != null) { if (Remote != null) {
Filters.Add("Remote"); Filters.Add("Remote");
Parameters.Add(Remote.Value.ToString()); Parameters.Add(Remote.Value);
ParameterName.Add("@Remote"); ParameterName.Add(" = @Remote");
} }
if (SalaryMin != null) { if (SalaryMin != null) {
Filters.Add("SalaryMin"); Filters.Add("SalaryMin");
Parameters.Add(SalaryMin.Value.ToString()); Parameters.Add(SalaryMin.Value);
ParameterName.Add("@SalaryMin"); ParameterName.Add(" >= @SalaryMin");
} }
if (SalaryMax != null) { if (SalaryMax != null) {
Filters.Add("SalaryMax"); Filters.Add("SalaryMax");
Parameters.Add(SalaryMax.Value.ToString()); Parameters.Add(SalaryMax.Value);
ParameterName.Add("@SalaryMax"); ParameterName.Add(" <= @SalaryMax");
} }
string filter = " WHERE IsDeleted = False"; string filter = " WHERE IsDeleted = False";
@@ -65,14 +65,14 @@ namespace BoredCareers.Services.DatabaseService {
} else { } else {
filter += " AND "; filter += " AND ";
} }
filter += Filters[i] + " = " + ParameterName[i]; filter += Filters[i] + ParameterName[i];
} }
MySqlCommand cmd = new MySqlCommand(select + filter + order + limit, connection); MySqlCommand cmd = new MySqlCommand(select + filter + order + limit, connection);
cmd.Parameters.AddWithValue("@PageSize", CountPerPage); cmd.Parameters.AddWithValue("@PageSize", CountPerPage);
cmd.Parameters.AddWithValue("@PageNumber", (PageNumber - 1) * CountPerPage); cmd.Parameters.AddWithValue("@PageNumber", (PageNumber - 1) * CountPerPage);
for (int i = 0; i < Filters.Count; i++) { for (int i = 0; i < Filters.Count; i++) {
cmd.Parameters.AddWithValue( ParameterName[i], Parameters[i] ); cmd.Parameters.AddWithValue( ParameterName[i].Split(' ').Last(), Parameters[i] );
} }
using (DbDataReader reader = await cmd.ExecuteReaderAsync()) { using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {