Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
 public List <GuestViewModel> Search(GuestSearchModel searchModel)
 {
     return(_guestRepository.Search(searchModel));
 }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
 public void OnGet(GuestSearchModel searchModel)
 {
     Guests = _guestApplication.Search(searchModel);
 }