Esempio n. 1
0
        private async Task <BaseViewModel <PagingResult <StoreViewModel> > > GetAll(GetStoreWithGPSRequestViewmovel request, string defaultCondition = null)
        {
            var pageSize  = request.PageSize;
            var pageIndex = request.PageIndex;
            var result    = new BaseViewModel <PagingResult <StoreViewModel> >();

            string filter = SearchHelper <Store> .GenerateStringExpression(request.Filter, defaultCondition);

            Expression <Func <Store, bool> > FilterExpression = await LinqHelper <Store> .StringToExpression(filter);

            var includeList = IncludeLinqHelper <Store> .StringToListInclude(request?.Include);

            QueryArgs <Store> queryArgs = new QueryArgs <Store>
            {
                Offset  = pageSize * (pageIndex - 1),
                Limit   = pageSize,
                Filter  = FilterExpression,
                Sort    = request.SortBy,
                Include = includeList
            };


            var data = _repository.Get(queryArgs.Filter, queryArgs.Sort, queryArgs.Offset, queryArgs.Limit, queryArgs.Include).ToList();

            //var sql = data.ToSql();

            if (data == null || data.Count == 0)
            {
                result.Description = MessageHandler.CustomMessage(MessageConstants.NO_RECORD);
                result.Code        = MessageConstants.NO_RECORD;
            }
            else
            {
                var pageSizeReturn = pageSize;
                if (data.Count < pageSize)
                {
                    pageSizeReturn = data.Count;
                }
                result.Data = new PagingResult <StoreViewModel>
                {
                    Results      = _mapper.Map <IEnumerable <StoreViewModel> >(data),
                    PageIndex    = pageIndex,
                    PageSize     = pageSizeReturn,
                    TotalRecords = _repository.Count(queryArgs.Filter)
                };
                foreach (var item in result.Data.Results)
                {
                    var listPromo = _promotionRepository.GetMany(_ => _.BrandId == item.BrandId && _.IsActive == true);
                    item.Promotions = _mapper.Map <ICollection <PromotionViewModel> >(listPromo);
                }
            }
            if (request.Longitude != null && request.Latitude != null)
            {
                foreach (var item in result?.Data?.Results)
                {
                    var sCoord = new GeoCoordinate(item.Latitude, item.Longitude);
                    var eCoord = new GeoCoordinate(request.Latitude.Value, request.Longitude.Value);

                    item.Distance = (sCoord.GetDistanceTo(eCoord) / 1000.0);
                }
            }

            return(result);
        }
Esempio n. 2
0
 public async Task <BaseViewModel <PagingResult <StoreViewModel> > > GetAllStoresNoPaging(GetStoreWithGPSRequestViewmovel request)
 {
     return(await GetAll(new GetStoreWithGPSRequestViewmovel
     {
         PageIndex = null,
         PageSize = null,
         Filter = request.Filter,
         Include = request.Include,
         SortBy = request.SortBy,
         Latitude = request.Latitude,
         Longitude = request.Longitude
     }, Constants.DEAFAULT_DELETE_STATUS_EXPRESSION));
 }
Esempio n. 3
0
 public async Task <BaseViewModel <PagingResult <StoreViewModel> > > GetAllStores(GetStoreWithGPSRequestViewmovel request)
 {
     return(await GetAll(request, Constants.DEAFAULT_DELETE_STATUS_EXPRESSION));
 }
Esempio n. 4
0
        public async Task <BaseViewModel <PagingResult <StoreViewModel> > > GetTopStore(GetStoreWithGPSRequestViewmovel request)
        {
            var pageSize  = request.PageSize;
            var pageIndex = request.PageIndex;
            var result    = new BaseViewModel <PagingResult <StoreViewModel> >();



            var data = await _repository.GetTopStore(pageSize *(pageIndex - 1), pageSize);


            //var sql = data.ToSql();

            if (data == null || data.Count == 0)
            {
                result.Description = MessageHandler.CustomMessage(MessageConstants.NO_RECORD);
                result.Code        = MessageConstants.NO_RECORD;
            }
            else
            {
                var pageSizeReturn = pageSize;
                if (data.Count < pageSize)
                {
                    pageSizeReturn = data.Count;
                }
                result.Data = new PagingResult <StoreViewModel>
                {
                    Results   = _mapper.Map <IEnumerable <StoreViewModel> >(data),
                    PageIndex = pageIndex,
                    PageSize  = pageSizeReturn,
                };

                foreach (var item in result.Data.Results)
                {
                    var listPromo = _promotionRepository.GetMany(_ => _.BrandId == item.BrandId && _.IsActive == true);
                    item.Promotions = _mapper.Map <ICollection <PromotionViewModel> >(listPromo);
                }
            }
            foreach (var item in result?.Data?.Results)
            {
                var sCoord = new GeoCoordinate(item.Latitude, item.Longitude);
                var eCoord = new GeoCoordinate(request.Latitude.Value, request.Longitude.Value);

                item.Distance = (sCoord.GetDistanceTo(eCoord) / 1000.0);
            }

            return(result);
        }
Esempio n. 5
0
        public async Task <BaseViewModel <PagingResult <StoreViewModel> > > GetStoreByCategoryID(Guid cateId, GetStoreWithGPSRequestViewmovel request)
        {
            var cate      = _StoreCategoryRepository.GetById(cateId);
            var listStore = _repository.GetMany(_ => _.IsDelete == false && _.Cate_Id == cateId);

            return(await GetAll(request, $"{Constants.DEAFAULT_DELETE_STATUS_EXPRESSION} && _.CateId == new System.Guid(\"{cateId}\")"));
        }
Esempio n. 6
0
        public async Task <ActionResult <BaseViewModel <PagingResult <StoreViewModel> > > > GetTopStore([FromQuery] GetStoreWithGPSRequestViewmovel request)
        {
            request.SetDefaultPage();
            //var a = request.Filters[0];

            var result = await _storeService.GetTopStore(request);

            this.HttpContext.Response.StatusCode = (int)result.StatusCode;

            return(result);
        }