/// <summary> /// Seeker side: Searches for all positions matching the specified criteria. /// </summary> /// <returns></returns> public List <Position> SearchPosition(PositionsSearchCriteria criteria) { using (var db = new JobyJobsDB2()) { string searchTxtLowered = criteria.SearchText?.ToLower() ?? null; string locationLowered = criteria.Location?.ToLower() ?? null; int? salaryMin = criteria.SalaryPerMonth != null ? (criteria.SalaryPerMonth.Value ? criteria.Salary : criteria.Salary / 12) : //convert to month null; IQueryable <position> query = db.positions.Where(item => (searchTxtLowered == null || item.title.ToLower().Contains(searchTxtLowered) || item.description.ToLower().Contains(searchTxtLowered)) && //optional:by title or description (criteria.ProfessionId == null || item.profession_id == (criteria.ProfessionId)) && //optional:by field (criteria.FieldId == null || item.profession.field_id == (criteria.FieldId)) && //optional:by profession (criteria.PositionType == null || item.position_type == ((int?)criteria.PositionType)) && //optional:by position type (salaryMin == null || item.salary_min > salaryMin) && //optional:by salary (locationLowered == null || item.location.ToLower().Contains(locationLowered)) && //optional:by location item.status_id == (int)Enums.PositionStatuses.OnAir); var sql = query.ToString(); var res = query.ToSelectedList(BusinessObjectsExtensions.ToBusiness); return(res); } }
public IActionResult SearchPosition(PositionsSearchCriteria criteria) { return(Json(_positionsBL.SearchPosition(criteria))); }