public List <EmployeeModel> SearchEmployee(EmployeeSearchQuery query) { var currencyTable = GetCurrencyTable(); using (var reader = new StreamReader(@"..\api\data\employee.csv")) using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) { csv.Configuration.RegisterClassMap <EmployeeModelClassMap>(); var searchResult = csv.GetRecords <EmployeeModel>(); if (query.Country != string.Empty) { searchResult = searchResult.Where(w => w.Branch.Trim().ToLower() == query.Country.Trim().ToLower()); } if (!string.IsNullOrEmpty(query.FirstName) && query.FirstName.Contains("*")) { searchResult = searchResult.Where(w => w.FullName.Trim().ToLower().Split(" ")[0].Contains(query.FirstName.Replace("*", "").Trim().ToLower())); } if (!string.IsNullOrEmpty(query.FirstName) && !query.FirstName.Contains("*")) { searchResult = searchResult.Where(w => w.FullName.Trim().ToLower().Split(" ")[0].Contains(query.FirstName.Trim().ToLower())); } if (!string.IsNullOrEmpty(query.LastName) && query.FirstName.Contains("*")) { searchResult = searchResult.Where(w => w.FullName.Trim().ToLower().Split(" ")[1].Contains(query.LastName.Replace("*", "").Trim().ToLower())); } if (!string.IsNullOrEmpty(query.LastName) && !query.LastName.Contains("*")) { searchResult = searchResult.Where(w => w.FullName.Trim().ToLower().Split(" ")[1].Contains(query.LastName.Trim().ToLower())); } // ordet by skiped since cvs file already sorted by employye no searchResult = searchResult.Skip(query.Offset * query.Limit).Take(query.Limit); var skipedResult = searchResult.ToList(); // calculate local salary foreach (var item in skipedResult) { var currencyRate = currencyTable.FirstOrDefault(w => w.Country.Trim().ToLower() == item.Branch.Trim().ToLower()); if (currencyRate != null) { item.LocalSalary = item.SalaryUSD * currencyRate.Rate; item.PATETax = base.CalculatePATETax(item.LocalSalary, item.Branch); item.NetPay = item.LocalSalary - item.PATETax; } } return(skipedResult); } }
public IActionResult SearchEmployee([FromQuery] EmployeeSearchQuery query) { if (!string.IsNullOrEmpty(query.FirstName) || !string.IsNullOrEmpty(query.Country) || !string.IsNullOrEmpty(query.LastName)) { var result = _employeeService.SearchEmployee(query); if (result.Count > 0) { return(Ok(result)); } return(NotFound("No record found in this search criteria")); } return(BadRequest("Please provide minimum one search tearm")); }