Esempio n. 1
0
        /// <summary>
        /// Gets Criminal result from database via filters
        /// </summary>
        /// <param name="name">Contains Name Filter, multiple values will be seperated with spaces (example : "Mike Halley Name1 Name2 etc...")</param>
        /// <param name="age">Age Range Filter</param>
        /// <param name="height">Height Range Filter</param>
        /// <param name="weight">Waight Range Filter</param>
        /// <param name="nationality">Contains Nationality Filter, multiple values will be seperated with spaces (example : "Mike Halley Name1 Name2 etc...")</param>
        /// <param name="sex">Sex Filter</param>
        /// <returns></returns>
        public static List <Criminal> GetFilteredResult(
            string name, DataRange <int> age,
            DataRange <decimal> height,
            DataRange <decimal> weight,
            string nationality,
            EmailSendRequest.SexType sex)
        {
            var dataContext = new CriminalsDataContext();
            var myTable     = dataContext.GetTable <Criminal>();

            IQueryable <Criminal> result =
                myTable.Where(x => x.BirthDate.Year <= (DateTime.Now.Year - age.Minimum) &&
                              x.BirthDate.Year >= (DateTime.Now.Year - age.Maximum) &&
                              x.Height >= height.Minimum &&
                              x.Height <= height.Maximum &&
                              x.Weight >= weight.Minimum &&
                              x.Weight <= weight.Maximum
                              );

            if (!string.IsNullOrEmpty(name))
            {
                var namePredicate = arrangeStringArrayPredicate(name, "Name");
                result = result.Where(namePredicate);
            }

            if (!string.IsNullOrEmpty(nationality))
            {
                var nationalityPredicate = arrangeStringArrayPredicate(nationality, "Nationality");
                result = result.Where(nationalityPredicate);
            }

            if (sex != EmailSendRequest.SexType.All)
            {
                result = result.Where(x => x.Sex == (int)sex);
            }

            return(result.ToList());
        }
Esempio n. 2
0
        static void ProcessSearch(string email, SearchInfoModel searchModel)
        {
            CriminalsDataContext dc = new CriminalsDataContext();
            byte maleByte           = (byte)CriminalInfo.SexType.Male;
            byte femaleByte         = (byte)CriminalInfo.SexType.Female;
            var  query =
                from a in dc.Criminals
                where (string.IsNullOrEmpty(searchModel.Name) || a.Name.Contains(searchModel.Name))
                where (string.IsNullOrEmpty(searchModel.Nationality) || a.Nationality.Equals(searchModel.Nationality, StringComparison.OrdinalIgnoreCase))
                where (searchModel.MinAge == null || a.Age >= searchModel.MinAge)
                where (searchModel.MaxAge == null || a.Age <= searchModel.MaxAge)
                where (searchModel.MinHeight == null || a.Height >= searchModel.MinHeight)
                where (searchModel.MaxHeight == null || a.Height <= searchModel.MaxHeight)
                where (searchModel.MinWeight == null || a.Weight >= searchModel.MinWeight)
                where (searchModel.MaxWeight == null || a.Weight <= searchModel.MaxWeight)
                where ((searchModel.CanBeMale && searchModel.CanBeFemale) || (searchModel.CanBeMale && a.Sex == maleByte) || (searchModel.CanBeFemale && a.Sex == femaleByte))
                select a;

            var criminalsList = query.ToList();
            var pdfNamesList  = new List <string>(criminalsList.Count);

            foreach (var criminal in criminalsList)
            {
                CriminalInfo ci = new CriminalInfo();
                ci.ID          = criminal.Id;
                ci.Name        = criminal.Name;
                ci.Age         = criminal.Age;
                ci.Sex         = (CriminalInfo.SexType)criminal.Sex;
                ci.Height      = criminal.Height;
                ci.Weight      = criminal.Weight;
                ci.Nationality = criminal.Nationality;
                ci.GeneratePDF();
                pdfNamesList.Add(ci.GetPdfName());
            }

            EmailUtils.SendPDFEmail(email, searchModel, pdfNamesList);
        }