/// <summary>
 /// Searches the specified parameters in Criminal Profile table and get the data that match that prameters.
 /// </summary>
 /// <param name="parameters">The parameters class contains all paramters that user filled in UI.</param>
 /// <returns></returns>
 IEnumerable <CriminalProfile> ICriminalProfileRepository.Search(CriminalSearchParameter parameters)
 {
     //return all records from the database that match the paramters
     return(FindAll(a =>
                    (string.IsNullOrEmpty(parameters.Name) || a.CriminalName.ToLower().Contains(parameters.Name.ToLower())) &&
                    (!parameters.AgeFrom.HasValue || DateTime.Today.Year - a.DateOfBirth.Value.Year >= parameters.AgeFrom) &&
                    (!parameters.AgeTo.HasValue || DateTime.Today.Year - a.DateOfBirth.Value.Year <= parameters.AgeTo) &&
                    (!parameters.HeightFrom.HasValue || a.Height <= parameters.HeightFrom) &&
                    (!parameters.HeightTo.HasValue || a.Height >= parameters.HeightTo) &&
                    (!parameters.WeightFrom.HasValue || a.Weight <= parameters.WeightFrom) &&
                    (!parameters.WeightTo.HasValue || a.Weight <= parameters.WeightTo) &&
                    (!parameters.NationalityId.HasValue || a.NationalityID == parameters.NationalityId)
                    ));
 }
 /// <summary>
 /// Searches the specified parameter.
 /// </summary>
 /// <param name="param">The parameter.</param>
 /// <returns></returns>
 public IEnumerable <CriminalProfile> Search(CriminalSearchParameter param)
 {
     return(_criminalProfileRepository.Search(param));
 }