public List <GuestViewModel> Search(GuestSearchModel searchModel) { var query = _hContext.Guests.Select(x => new GuestViewModel { Id = x.Id, FullName = x.FullName, Tel = x.Tel, GuestType = GuestTypes.GetGuestType(x.GuestType), Image = x.Image, Coordinator = x.Coordinator }); if (!string.IsNullOrWhiteSpace(searchModel.FullName)) { query = query.Where(x => x.FullName.Contains(searchModel.FullName)); } return(query.OrderByDescending(x => x.Id).ToList()); }
public List <GuestViewModel> Search(GuestSearchModel searchModel) { return(_guestRepository.Search(searchModel)); }
public async Task <object> Export(int id, [FromUri] GuestSearchModel pager) { try { if (pager == null) { pager = new GuestSearchModel(); } var ticketMailed = pager.IsMailed ?? false; var isWaiting = pager.IsWaiting ?? false; var isAttending = pager.IsAttending ?? false; var query = _context.Guests.Where(e => e.EventId == id); var pred = PredicateBuilder.True <Guest>(); if (!string.IsNullOrWhiteSpace(pager.Address)) { pred = pred.And(p => p.Address.Contains(pager.Address)); } if (!string.IsNullOrWhiteSpace(pager.FinderNumber)) { pred = pred.And(p => p.FinderNumber.StartsWith(pager.FinderNumber)); } if (!string.IsNullOrWhiteSpace(pager.Name)) { pred = pred.And(p => p.Name.Contains(pager.Name)); } if (!string.IsNullOrWhiteSpace(pager.City)) { pred = pred.And(p => p.City.StartsWith(pager.City)); } if (!string.IsNullOrWhiteSpace(pager.State)) { pred = pred.And(p => p.State.Equals(pager.State)); } if (!string.IsNullOrWhiteSpace(pager.ZipCode)) { pred = pred.And(p => p.Zipcode.StartsWith(pager.ZipCode)); } if (!string.IsNullOrWhiteSpace(pager.Phone)) { pred = pred.And(p => p.Phone.Contains(pager.Phone)); } if (!string.IsNullOrWhiteSpace(pager.Email)) { pred = pred.And(p => p.Email.StartsWith(pager.Email)); } if (!string.IsNullOrWhiteSpace(pager.LookupId)) { pred = pred.And(p => p.LookupId.StartsWith(pager.LookupId)); } if (!string.IsNullOrWhiteSpace(pager.ConstituentType)) { pred = pred.And(p => p.ConstituentType.StartsWith(pager.ConstituentType)); } if (pager.IsMailed != null) { pred = pred.And(p => p.IsMailed == ticketMailed); } if (pager.IsWaiting != null) { pred = pred.And(p => p.IsWaiting == isWaiting); } if (pager.IsAttending != null) { pred = pred.And(p => p.IsAttending == isAttending); } var filteredQuery = query.Where(pred); var results = await filteredQuery .ProjectTo <GuestExportViewModel>().ToListAsync(); var path = HttpContext.Current.Server.MapPath(@"~\app_data\guestlist.csv"); using (var csv = new CsvWriter(new StreamWriter(File.Create(path)))) { csv.Configuration.RegisterClassMap <GuestExportMap>(); csv.WriteHeader <GuestExportViewModel>(); csv.WriteRecords(results); } var filename = $"guest-list-{DateTime.Now:u}.csv"; var response = new HttpResponseMessage(HttpStatusCode.OK); var stream = new FileStream(path, FileMode.Open, FileAccess.Read); response.Content = new StreamContent(stream); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = filename }; response.Content.Headers.Add("x-filename", filename); return(ResponseMessage(response)); } catch (Exception e) { return(BadRequest(e.Message)); } }
public async Task <object> Guests(int id, [FromUri] GuestSearchModel pager) { var stopwatch = new Stopwatch(); stopwatch.Restart(); if (pager == null) { pager = new GuestSearchModel(); } var ticketMailed = pager.IsMailed ?? false; var isWaiting = pager.IsWaiting ?? false; var isAttending = pager.IsAttending ?? false; var query = _context.Guests.Where(e => e.EventId == id); var totalCount = await query.CountAsync(); var pred = PredicateBuilder.True <Guest>(); if (!string.IsNullOrWhiteSpace(pager.Address)) { pred = pred.And(p => p.Address.Contains(pager.Address)); } if (!string.IsNullOrWhiteSpace(pager.FinderNumber)) { pred = pred.And(p => p.FinderNumber.StartsWith(pager.FinderNumber)); } if (!string.IsNullOrWhiteSpace(pager.Name)) { pred = pred.And(p => p.Name.Contains(pager.Name)); } if (!string.IsNullOrWhiteSpace(pager.City)) { pred = pred.And(p => p.City.StartsWith(pager.City)); } if (!string.IsNullOrWhiteSpace(pager.State)) { pred = pred.And(p => p.State.Equals(pager.State)); } if (!string.IsNullOrWhiteSpace(pager.ZipCode)) { pred = pred.And(p => p.Zipcode.StartsWith(pager.ZipCode)); } if (!string.IsNullOrWhiteSpace(pager.Phone)) { pred = pred.And(p => p.Phone.Contains(pager.Phone)); } if (!string.IsNullOrWhiteSpace(pager.Email)) { pred = pred.And(p => p.Email.StartsWith(pager.Email)); } if (!string.IsNullOrWhiteSpace(pager.LookupId)) { pred = pred.And(p => p.LookupId.StartsWith(pager.LookupId)); } if (!string.IsNullOrWhiteSpace(pager.ConstituentType)) { pred = pred.And(p => p.ConstituentType.StartsWith(pager.ConstituentType)); } if (pager.IsMailed != null) { pred = pred.And(p => p.IsMailed == ticketMailed); } if (pager.IsWaiting != null) { pred = pred.And(p => p.IsWaiting == isWaiting); } if (pager.IsAttending != null) { pred = pred.And(p => p.IsAttending == isAttending); } var filteredQuery = query.Where(pred); var pagerCount = await filteredQuery.CountAsync(); var totalPages = Math.Ceiling((double)pagerCount / pager.PageSize ?? PAGE_SIZE); var results = await query.Where(pred) .Order(pager.OrderBy, pager.OrderDirection == "desc" ? SortDirection.Descending : SortDirection.Ascending) .Skip(pager.PageSize * (pager.Page - 1) ?? 0) .Take(pager.PageSize ?? PAGE_SIZE) .ProjectTo <GuestViewModel>().ToListAsync(); pager.TotalCount = totalCount; pager.FilteredCount = pagerCount; pager.TotalPages = totalPages; pager.Results = results; stopwatch.Stop(); pager.ElapsedTime = stopwatch.Elapsed; return(Ok(pager)); }
public void OnGet(GuestSearchModel searchModel) { Guests = _guestApplication.Search(searchModel); }