Esempio n. 1
0
        public int CompareTo(Search other)
        {
            int i = DefaultSearch.CompareTo(other.DefaultSearch);

            if (i == 0)
            {
                return(Name.CompareTo(other.Name));
            }

            return(i);
        }
        public IActionResult GetAttraction([FromQuery] AttractionSM attractionSM, [FromQuery] DefaultSearch defaultSearch)
        {
            try
            {
                var list = _IAtrractionService.GetAllAtrraction(null, _ => _.City, _ => _.Category);
                if (!String.IsNullOrWhiteSpace(attractionSM.City))
                {
                    list = list.Where(_ => _.City.Name.ToLower() == attractionSM.City.ToLower());
                }
                if (!String.IsNullOrWhiteSpace(attractionSM.Name))
                {
                    list = list.Where(_ => _.Name.ToLower().Contains(attractionSM.Name.ToLower()));
                }
                if (attractionSM.IsTemporarityClosed != null)
                {
                    list = list.Where(_ => _.IsTemporarityClosed == attractionSM.IsTemporarityClosed);
                }
                if (!String.IsNullOrWhiteSpace(attractionSM.Category))
                {
                    list = list.Where(_ => _.Category.Name.ToLower() == attractionSM.Category.ToLower());
                }
                int total = list.ToList().Count();
                switch (defaultSearch.SortBy)
                {
                case "name":
                    list = GenericSorter.Sort(list, _ => _.Name, defaultSearch.SortDir);
                    break;

                case "category":
                    list = GenericSorter.Sort(list, _ => _.Category.Name, defaultSearch.SortDir);
                    break;

                case "city":
                    list = GenericSorter.Sort(list, _ => _.City.Name, defaultSearch.SortDir);
                    break;

                default:
                    list = GenericSorter.Sort(list, _ => _.CreateAt, defaultSearch.SortDir);
                    break;
                }
                var data = list.Skip(defaultSearch.PageIndex)
                           .Take(defaultSearch.PageSize)
                           .Select(_ => _mapper.Map <AttractionVM>(_))
                           .ToList();
                return(Ok(new { data, total }));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
 public IActionResult GetCategory([FromQuery] String Name, [FromQuery] DefaultSearch defaultSearch)
 {
     try
     {
         var list = _ICategoryService.GetAllCategory();
         if (!String.IsNullOrWhiteSpace(Name))
         {
             list = list.Where(_ => _.Name.ToLower().Contains(Name.ToLower()));
         }
         int total = list.Count();
         var data  = list.Skip(defaultSearch.PageIndex)
                     .Take(defaultSearch.PageSize)
                     .ToList();
         return(Ok(new { data, total }));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
Esempio n. 4
0
        public IActionResult GetPass(decimal priceFrom, decimal priceTo, String name, int cityId, Guid?ticketTypeId, [FromQuery] DefaultSearch defaultSearch)
        {
            try
            {
                name = name ?? "";
                var ticketTypeInCollection = _iTicketTypeInCollectionService.GetAllTicketTypeInCollection(null, _ => _.TicketType.Atrraction.City);
                var b = ticketTypeInCollection.ToList();
                if (cityId != 0)
                {
                    // get list collectionId where that collection belong to CityId
                    ticketTypeInCollection = ticketTypeInCollection
                                             .Where(_ => _.TicketType.Atrraction.City.Id == cityId);
                }
                if (ticketTypeId != null)
                {
                    // get list collectionId where that collection belong to CityId
                    ticketTypeInCollection = ticketTypeInCollection
                                             .Where(_ => _.TicketTypeId == ticketTypeId);
                    var a = ticketTypeInCollection.ToList();
                }
                var collectionId = ticketTypeInCollection.GroupBy(_ => _.CollectionId).Select(_ => _.Key).ToList();
                //var list = new List<Pass>();
                //var listCollection = new List<Collection>();
                var listPassId = _iCollectionService.GetAllCollection(_ => collectionId.Contains(_.Id)).Select(_ => _.PassId).Distinct();
                //collectionId.ForEach(id =>
                //{
                //    listCollection.Add(_iCollectionService.GetCollectionById(id));
                //});
                //var listPassId = listCollection.GroupBy(_ => _.PassId).Select(_ => _.Key).ToList();
                //listPassId.ForEach(id =>
                //{
                //    list.Add(_iPassService.GetPassById(id));
                //});
                var list = _iPassService.GetAllPass(_ => listPassId.Contains(_.Id));
                list = list.Where(_ => _.Name.ToLower().Contains(name.ToLower()));

                if (priceFrom != 0 && priceTo != 0)
                {
                    list = list.Where(_ => _.Price >= priceFrom && _.Price <= priceTo);
                }
                int total = list.ToList().Count();
                if (defaultSearch.SortDir > 0)
                {
                    switch (defaultSearch.SortBy)
                    {
                    case "name":
                        list = list.OrderByDescending(_ => _.Name);
                        break;

                    case "price":
                        list = list.OrderByDescending(_ => _.Price);
                        break;

                    default:
                        list = list.OrderByDescending(_ => _.CreateAt);
                        break;
                    }
                }
                else
                {
                    switch (defaultSearch.SortBy)
                    {
                    case "name":
                        list = list.OrderBy(_ => _.Name);
                        break;

                    case "price":
                        list = list.OrderBy(_ => _.Price);
                        break;

                    default:
                        list = list.OrderBy(_ => _.CreateAt);
                        break;
                    }
                }
                list = list.Skip(defaultSearch.PageIndex)
                       .Take(defaultSearch.PageSize);
                var data = new List <PassVM>();
                list.ToList().ForEach(v =>
                {
                    var pass                  = _iPassService.GetAllPass(_ => _.Id == v.Id).Include(_ => _.UserPasses).Include(_ => _.Collections).ThenInclude(_ => _.TicketTypeInCollections).FirstOrDefault();
                    var userPassRate          = pass.UserPasses.Where(_ => _.Rate != 0);
                    var rateSum               = userPassRate.Sum(_ => _.Rate);
                    var totalRate             = userPassRate.Count();
                    var NumberOfTicketType    = pass.Collections.Sum(_ => _.TicketTypeInCollections.Count);
                    var passVM                = _mapper.Map <PassVM>(v);
                    passVM.Rate               = totalRate != 0 ? (double)rateSum / (double)totalRate : 5;
                    passVM.NumberOfTicketType = NumberOfTicketType;
                    data.Add(passVM);
                });
                return(Ok(new { data, total }));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
        public IActionResult GetTicketType([FromQuery] TicketTypeSM ticketType, [FromQuery] DefaultSearch defaultSearch)
        {
            try
            {
                var list = _ITicketTypeService.GetAllTicketType(_ => _.IsDelete == ticketType.IsDelete, _ => _.Atrraction, _ => _.Atrraction.City, _ => _.Atrraction.Category, _ => _.Tickets);
                if (!String.IsNullOrWhiteSpace(ticketType.Name))
                {
                    list = list.Where(_ => _.Name.ToLower().Contains(ticketType.Name.ToLower()));
                }
                if (!String.IsNullOrWhiteSpace(ticketType.Attraction))
                {
                    list = list.Where(_ => _.Atrraction.Name.ToLower().Contains(ticketType.Attraction.ToLower()));
                }
                if (!String.IsNullOrWhiteSpace(ticketType.City))
                {
                    list = list.Where(_ => _.Atrraction.City.Name.ToLower().Contains(ticketType.City.ToLower()));
                }
                if (ticketType.CategoryId != 0)
                {
                    list = list.Where(_ => _.Atrraction.Category.Id == ticketType.CategoryId);
                }
                if (ticketType.PriceFrom != 0 && ticketType.PriceTo != 0)
                {
                    list = list.Where(_ => _.AdultPrice >= ticketType.PriceFrom && _.AdultPrice <= ticketType.PriceTo);
                }
                int total = list.Count();
                switch (defaultSearch.SortBy)
                {
                case "name":
                    list = GenericSorter.Sort(list, _ => _.Name, defaultSearch.SortDir);
                    break;

                case "attraction":
                    list = GenericSorter.Sort(list, _ => _.Atrraction.Name, defaultSearch.SortDir);
                    break;

                case "city":
                    list = GenericSorter.Sort(list, _ => _.Atrraction.City.Name, defaultSearch.SortDir);
                    break;

                case "adultPrice":
                    list = GenericSorter.Sort(list, _ => _.AdultPrice, defaultSearch.SortDir);
                    break;

                case "childrenPrice":
                    list = GenericSorter.Sort(list, _ => _.ChildrenPrice, defaultSearch.SortDir);
                    break;

                default:
                    list = GenericSorter.Sort(list, _ => _.CreateAt, defaultSearch.SortDir);
                    break;
                }
                var data = list.Skip(defaultSearch.PageIndex)
                           .Take(defaultSearch.PageSize)
                           .Select(_ => _mapper.Map <TicketTypeVM>(_))
                           .ToList();
                return(Ok(new { data, total }));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
Esempio n. 6
0
        private IQueryable <DocEntityDefault> _ExecSearch(DefaultSearch request, DocQuery query)
        {
            request = InitSearch <Default, DefaultSearch>(request);
            IQueryable <DocEntityDefault> entities = null;

            query.Run(session =>
            {
                entities = query.SelectAll <DocEntityDefault>();
                if (!DocTools.IsNullOrEmpty(request.FullTextSearch))
                {
                    var fts  = new DefaultFullTextSearch(request);
                    entities = GetFullTextSearch <DocEntityDefault, DefaultFullTextSearch>(fts, entities);
                }

                if (null != request.Ids && request.Ids.Any())
                {
                    entities = entities.Where(en => en.Id.In(request.Ids));
                }

                if (!DocTools.IsNullOrEmpty(request.Updated))
                {
                    entities = entities.Where(e => null != e.Updated && e.Updated.Value.Date == request.Updated.Value.Date);
                }
                if (!DocTools.IsNullOrEmpty(request.UpdatedBefore))
                {
                    entities = entities.Where(e => null != e.Updated && e.Updated <= request.UpdatedBefore);
                }
                if (!DocTools.IsNullOrEmpty(request.UpdatedAfter))
                {
                    entities = entities.Where(e => null != e.Updated && e.Updated >= request.UpdatedAfter);
                }
                if (!DocTools.IsNullOrEmpty(request.Created))
                {
                    entities = entities.Where(e => null != e.Created && e.Created.Value.Date == request.Created.Value.Date);
                }
                if (!DocTools.IsNullOrEmpty(request.CreatedBefore))
                {
                    entities = entities.Where(e => null != e.Created && e.Created <= request.CreatedBefore);
                }
                if (!DocTools.IsNullOrEmpty(request.CreatedAfter))
                {
                    entities = entities.Where(e => null != e.Created && e.Created >= request.CreatedAfter);
                }
                if (true == request.Archived?.Any() && currentUser.HasProperty(DocConstantModelName.DEFAULT, nameof(Reference.Archived), DocConstantPermission.VIEW))
                {
                    entities = entities.Where(en => en.Archived.In(request.Archived));
                }
                else
                {
                    entities = entities.Where(en => !en.Archived);
                }
                if (true == request.Locked?.Any())
                {
                    entities = entities.Where(en => en.Locked.In(request.Locked));
                }
                if (!DocTools.IsNullOrEmpty(request.DiseaseState) && !DocTools.IsNullOrEmpty(request.DiseaseState.Id))
                {
                    entities = entities.Where(en => en.DiseaseState.Id == request.DiseaseState.Id);
                }
                if (true == request.DiseaseStateIds?.Any())
                {
                    entities = entities.Where(en => en.DiseaseState.Id.In(request.DiseaseStateIds));
                }
                if (!DocTools.IsNullOrEmpty(request.Role) && !DocTools.IsNullOrEmpty(request.Role.Id))
                {
                    entities = entities.Where(en => en.Role.Id == request.Role.Id);
                }
                if (true == request.RoleIds?.Any())
                {
                    entities = entities.Where(en => en.Role.Id.In(request.RoleIds));
                }
                if (!DocTools.IsNullOrEmpty(request.Scope) && !DocTools.IsNullOrEmpty(request.Scope.Id))
                {
                    entities = entities.Where(en => en.Scope.Id == request.Scope.Id);
                }
                if (true == request.ScopeIds?.Any())
                {
                    entities = entities.Where(en => en.Scope.Id.In(request.ScopeIds));
                }
                if (!DocTools.IsNullOrEmpty(request.TherapeuticArea) && !DocTools.IsNullOrEmpty(request.TherapeuticArea.Id))
                {
                    entities = entities.Where(en => en.TherapeuticArea.Id == request.TherapeuticArea.Id);
                }
                if (true == request.TherapeuticAreaIds?.Any())
                {
                    entities = entities.Where(en => en.TherapeuticArea.Id.In(request.TherapeuticAreaIds));
                }

                entities = ApplyFilters <DocEntityDefault, DefaultSearch>(request, entities);

                if (request.Skip > 0)
                {
                    entities = entities.Skip(request.Skip.Value);
                }
                if (request.Take > 0)
                {
                    entities = entities.Take(request.Take.Value);
                }
                if (true == request?.OrderBy?.Any())
                {
                    entities = entities.OrderBy(request.OrderBy);
                }
                if (true == request?.OrderByDesc?.Any())
                {
                    entities = entities.OrderByDescending(request.OrderByDesc);
                }
            });
            return(entities);
        }
Esempio n. 7
0
 public object Get(DefaultSearch request) => GetSearchResultWithCache <Default, DocEntityDefault, DefaultSearch>(DocConstantModelName.DEFAULT, request, _ExecSearch);
Esempio n. 8
0
 public object Post(DefaultSearch request) => Get(request);