Example #1
0
        public async Task <BasePageList <UserStatusResult> > GetAsync(UserStatusFilter filter)
        {
            var search = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var query = _statusRepository.Table
                        .Select(x => new UserStatusResult()
            {
                Id          = x.Id,
                Name        = x.Name,
                Description = x.Description
            });

            if (!string.IsNullOrEmpty(search))
            {
                query = query.Where(x => x.Name.ToLower().Contains(search) || x.Description.ToLower().Contains(search));
            }

            var filteredNumber = query.Select(x => x.Id).Count();

            var statuses = await query.OrderBy(x => x.Id)
                           .Skip(filter.PageSize * (filter.Page - 1))
                           .Take(filter.PageSize)
                           .ToListAsync();

            var result = new BasePageList <UserStatusResult>(statuses)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
Example #2
0
        public async Task <BasePageList <CountryResult> > GetAsync(CountryFilter filter)
        {
            var keyword = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var query = _countryRepository.Table
                        .Select(x => new CountryResult()
            {
                Code = x.Code,
                Id   = x.Id,
                Name = x.Name
            });

            if (!string.IsNullOrEmpty(keyword))
            {
                query = query.Where(x => x.Code.ToLower().Contains(keyword) || x.Name.ToLower().Contains(keyword));
            }

            var filteredNumber = query.Select(x => x.Id).Count();

            var countries = await query.OrderBy(x => x.Code).Skip(filter.PageSize * (filter.Page - 1))
                            .Take(filter.PageSize)
                            .ToListAsync();

            var result = new BasePageList <CountryResult>(countries)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
Example #3
0
        public async Task <BasePageList <ShortcutResult> > GetAsync(ShortcutFilter filter)
        {
            var inactivedStatus = ShortcutStatus.Inactived.GetCode();
            var search          = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var shortcutQuery = _shortcutRepository.Get(x => filter.CanGetInactived || x.StatusId != inactivedStatus);

            if (!string.IsNullOrEmpty(search))
            {
                shortcutQuery = shortcutQuery.Where(user => user.Name.ToLower().Contains(search) ||
                                                    user.Description.ToLower().Contains(search));
            }

            var query = shortcutQuery.Select(x => new ShortcutResult
            {
                Description = x.Description,
                Id          = x.Id,
                Name        = x.Name,
                Icon        = x.Icon,
                TypeId      = x.TypeId,
                Url         = x.Url,
                Order       = x.Order,
                StatusId    = x.StatusId,
                CreatedDate = x.CreatedDate,
                CreatedById = x.CreatedById,
                UpdatedDate = x.UpdatedDate,
                UpdatedById = x.UpdatedById
            });

            if (filter.StatusId.HasValue)
            {
                query = query.Where(x => x.StatusId == filter.StatusId);
            }

            if (filter.TypeId.HasValue && filter.TypeId != 0)
            {
                query = query.Where(x => x.TypeId == filter.TypeId);
            }

            var filteredNumber = query.Select(x => x.Id).Count();

            var categories = await query
                             .OrderBy(x => x.Order)
                             .Skip(filter.PageSize * (filter.Page - 1))
                             .Take(filter.PageSize).ToListAsync();

            var result = new BasePageList <ShortcutResult>(categories)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
        public async Task <BasePageList <ProductAttributeResult> > GetAsync(ProductAttributeFilter filter)
        {
            var inactivedStatus = ProductAttributeStatus.Inactived.GetCode();
            var search          = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var productAttributeQuery = _productAttributeRepository.Get(x => filter.CanGetInactived || x.StatusId != inactivedStatus);

            if (!string.IsNullOrEmpty(search))
            {
                productAttributeQuery = productAttributeQuery.Where(user => user.Name.ToLower().Contains(search) ||
                                                                    user.Description.ToLower().Contains(search));
            }

            var query = productAttributeQuery.Select(x => new ProductAttributeResult
            {
                Description = x.Description,
                Id          = x.Id,
                Name        = x.Name,
                StatusId    = x.StatusId,
                CreatedById = x.CreatedById,
                UpdatedById = x.UpdatedById,
                CreatedDate = x.CreatedDate,
                UpdatedDate = x.UpdatedDate
            });

            if (filter.StatusId.HasValue)
            {
                query = query.Where(x => x.StatusId == filter.StatusId);
            }

            var filteredNumber = query.Select(x => x.Id).Count();

            var productAttributes = await query.Skip(filter.PageSize *(filter.Page - 1))
                                    .Take(filter.PageSize).ToListAsync();

            var result = new BasePageList <ProductAttributeResult>(productAttributes)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
Example #5
0
        public async Task <BasePageList <RoleResult> > GetAsync(RoleFilter filter)
        {
            var search = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var query = (from role in _roleRepository.Table
                         join createdBy in _userRepository.Table
                         on role.CreatedById equals createdBy.Id
                         join updatedBy in _userRepository.Table
                         on role.UpdatedById equals updatedBy.Id
                         where string.IsNullOrEmpty(search) || role.Name.ToLower().Contains(search) ||
                         (role.Description != null && role.Description.ToLower().Contains(search))
                         select new RoleResult
            {
                Id = role.Id,
                Name = role.Name,
                CreatedById = role.CreatedById,
                CreatedByName = createdBy.Lastname + " " + createdBy.Firstname,
                CreatedDate = role.CreatedDate,
                Description = role.Description,
                UpdatedById = role.UpdatedById,
                UpdatedByName = updatedBy.Lastname + " " + updatedBy.Firstname,
                UpdatedDate = role.UpdatedDate
            });

            var filteredNumber = query.Select(x => x.Id).Count();

            var roles = await query.Skip(filter.PageSize *(filter.Page - 1))
                        .Take(filter.PageSize)
                        .ToListAsync();

            var result = new BasePageList <RoleResult>(roles)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
Example #6
0
        public BasePageList <AuthorizationPolicyResult> Get(AuthorizationPolicyFilter filter)
        {
            var search = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var query = (from policy in _authorizationPolicyRepository.Table
                         join createdBy in _userRepository.Table
                         on policy.CreatedById equals createdBy.Id
                         join updatedBy in _userRepository.Table
                         on policy.UpdatedById equals updatedBy.Id
                         where string.IsNullOrEmpty(search) || policy.Name.ToLower().Contains(search) ||
                         (policy.Description != null && policy.Description.ToLower().Contains(search))
                         select new AuthorizationPolicyResult()
            {
                CreatedById = policy.CreatedById,
                CreatedByName = createdBy.Lastname + " " + createdBy.Firstname,
                CreatedDate = policy.CreatedDate,
                UpdatedById = policy.UpdatedById,
                UpdatedByName = updatedBy.Lastname + " " + updatedBy.Firstname,
                UpdatedDate = policy.UpdatedDate,
                Description = policy.Description,
                Id = policy.Id,
                Name = policy.Name
            });

            var filteredNumber = query.Select(x => x.Id).Count();

            var authorizationPolicies = query.Skip(filter.PageSize * (filter.Page - 1))
                                        .Take(filter.PageSize)
                                        .ToList();

            var result = new BasePageList <AuthorizationPolicyResult>(authorizationPolicies)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
Example #7
0
        public async Task <BasePageList <dynamic> > PageList()
        {
            var querymodel = new PagingModel
            {
                PageSize    = 10,
                CurrentPage = 1,
                Table       = "System_UserInfo",
                Column      = "*",
                Condition   = "",
                OrderColumn = "EID desc",
            };
            var outParam = new DynamicParameters();

            outParam.Add("TotalCount", dbType: DbType.Int32, direction: ParameterDirection.Output);
            outParam.Add("TotalPage", dbType: DbType.Int32, direction: ParameterDirection.Output);
            var mainval = new BasePageList <dynamic>
            {
                aaData     = await MSSQL.QuerySPAsync <dynamic>("Com_Pagination", querymodel, outParam),
                Totalcount = outParam.Get <int>("TotalCount"),
                TotalPage  = outParam.Get <int>("TotalPage")
            };

            return(mainval);
        }
        public async Task <BasePageList <FarmTypeResult> > GetAsync(FarmTypeFilter filter)
        {
            var search = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var farmTypeQuery = _farmTypeRepository.Table;

            if (!string.IsNullOrEmpty(search))
            {
                farmTypeQuery = farmTypeQuery.Where(user => user.Name.ToLower().Contains(search) ||
                                                    user.Description.ToLower().Contains(search));
            }

            if (filter.StatusId.HasValue)
            {
                farmTypeQuery = farmTypeQuery.Where(x => x.StatusId == filter.StatusId);
            }

            if (filter.CreatedById.HasValue)
            {
                farmTypeQuery = farmTypeQuery.Where(x => x.CreatedById == filter.CreatedById);
            }

            if (filter.UpdatedById.HasValue)
            {
                farmTypeQuery = farmTypeQuery.Where(x => x.UpdatedById == filter.UpdatedById);
            }

            // Filter by register date/ created date
            if (filter.CreatedDateFrom.HasValue && filter.CreatedDateTo.HasValue)
            {
                farmTypeQuery = farmTypeQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateTo.HasValue)
            {
                farmTypeQuery = farmTypeQuery.Where(x => x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateFrom.HasValue)
            {
                farmTypeQuery = farmTypeQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= DateTime.UtcNow);
            }

            var query = farmTypeQuery.Select(a => new FarmTypeResult
            {
                CreatedById = a.CreatedById,
                CreatedDate = a.CreatedDate,
                Description = a.Description,
                Id          = a.Id,
                Name        = a.Name,
                UpdatedById = a.UpdatedById,
                UpdatedDate = a.UpdatedDate,
                StatusId    = a.StatusId
            });

            var filteredNumber = query.Select(x => x.Id).Count();

            var farmTypes = await query.Skip(filter.PageSize *(filter.Page - 1))
                            .Take(filter.PageSize).ToListAsync();

            var result = new BasePageList <FarmTypeResult>(farmTypes)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
Example #9
0
        public async Task <BasePageList <UserFullResult> > GetAsync(UserFilter filter)
        {
            var search = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var userQuery = _userRepository.Get(x => (x.StatusId == _userDeletedStatus && filter.CanGetDeleted) ||
                                                (x.StatusId == _userInactivedStatus && filter.CanGetInactived) ||
                                                (x.StatusId != _userDeletedStatus && x.StatusId != _userInactivedStatus));

            if (!string.IsNullOrEmpty(search))
            {
                userQuery = userQuery.Where(user => user.Lastname.ToLower().Contains(search) ||
                                            user.Firstname.ToLower().Contains(search) ||
                                            (user.Lastname + " " + user.Firstname).ToLower().Contains(search) ||
                                            user.Email.Contains(search) ||
                                            user.DisplayName.ToLower().Contains(search));
            }

            if (filter.CreatedById.HasValue)
            {
                userQuery = userQuery.Where(x => x.CreatedById == filter.CreatedById);
            }

            if (filter.UpdatedById.HasValue)
            {
                userQuery = userQuery.Where(x => x.UpdatedById == filter.UpdatedById);
            }

            if (filter.StatusId.HasValue)
            {
                userQuery = userQuery.Where(x => x.StatusId == filter.StatusId);
            }

            if (filter.ExclusiveUserById.HasValue)
            {
                userQuery = userQuery.Where(x => x.Id != filter.ExclusiveUserById);
            }

            if (filter.IsEmailConfirmed.HasValue)
            {
                userQuery = userQuery.Where(x => x.IsEmailConfirmed == filter.IsEmailConfirmed);
            }

            // Filter by register date/ created date
            if (filter.CreatedDateFrom.HasValue && filter.CreatedDateTo.HasValue)
            {
                userQuery = userQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateTo.HasValue)
            {
                userQuery = userQuery.Where(x => x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateFrom.HasValue)
            {
                userQuery = userQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= DateTime.UtcNow);
            }

            // Filter in UserInfo
            var userInfoQuery = _userInfoRepository.Table;

            if (filter.GenderId.HasValue)
            {
                userInfoQuery = userInfoQuery.Where(x => x.GenderId == filter.GenderId);
            }

            if (filter.CountryId.HasValue)
            {
                userInfoQuery = userInfoQuery.Where(x => x.CountryId == filter.CountryId);
            }

            if (!string.IsNullOrEmpty(filter.PhoneNumber))
            {
                userInfoQuery = userInfoQuery.Where(x => x.PhoneNumber.Contains(filter.PhoneNumber));
            }

            if (!string.IsNullOrEmpty(filter.Address))
            {
                userInfoQuery = userInfoQuery.Where(x => x.Address.Contains(filter.Address));
            }

            // Filter by birthdate
            if (filter.BirthDateFrom.HasValue && filter.BirthDateTo.HasValue)
            {
                userInfoQuery = userInfoQuery.Where(x => x.BirthDate >= filter.BirthDateFrom && x.BirthDate <= filter.BirthDateTo);
            }
            else if (filter.BirthDateTo.HasValue)
            {
                userInfoQuery = userInfoQuery.Where(x => x.BirthDate <= filter.BirthDateTo);
            }
            else if (filter.BirthDateFrom.HasValue)
            {
                userInfoQuery = userInfoQuery.Where(x => x.BirthDate >= filter.BirthDateFrom && x.BirthDate <= DateTime.UtcNow);
            }

            var query = (from user in userQuery
                         join userInfo in userInfoQuery
                         on user.Id equals userInfo.Id
                         select new UserFullResult()
            {
                Id = user.Id,
                Email = user.Email,
                Address = user.UserInfo.Address,
                Lastname = user.Lastname,
                Firstname = user.Firstname,
                DisplayName = user.DisplayName,
                CreatedDate = user.CreatedDate,
                UpdatedDate = user.UpdatedDate,
                BirthDate = user.UserInfo.BirthDate,
                IsEmailConfirmed = user.IsEmailConfirmed,
                PhoneNumber = user.UserInfo.PhoneNumber,
                GenderLabel = user.UserInfo.Gender.Name,
                StatusLabel = user.Status.Name,
                StatusId = user.StatusId,
                CountryName = user.UserInfo.Country.Name
            });

            var filteredNumber = query.Select(x => x.Id).Count();

            var users = await query.Skip(filter.PageSize *(filter.Page - 1))
                        .Take(filter.PageSize)
                        .ToListAsync();

            var result = new BasePageList <UserFullResult>(users)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
Example #10
0
        public async Task <BasePageList <FeedResult> > GetAsync(FeedFilter filter)
        {
            var articleQuery = _articleRepository.Get(x => (x.StatusId == _articleDeletedStatus && filter.CanGetDeleted) ||
                                                      (x.StatusId == _articleInactivedStatus && filter.CanGetInactived) ||
                                                      (x.StatusId != _articleDeletedStatus && x.StatusId != _articleInactivedStatus));

            var productQuery = _productRepository.Get(x => (x.StatusId == _productDeletedStatus && filter.CanGetDeleted) ||
                                                      (x.StatusId == _productInactivedStatus && filter.CanGetInactived) ||
                                                      (x.StatusId != _productDeletedStatus && x.StatusId != _productInactivedStatus));

            var farmQuery = _farmRepository.Get(x => (x.StatusId == _farmDeletedStatus && filter.CanGetDeleted) ||
                                                (x.StatusId == _farmInactivedStatus && filter.CanGetInactived) ||
                                                (x.StatusId != _farmDeletedStatus && x.StatusId != _farmInactivedStatus));

            if (!string.IsNullOrEmpty(filter.Keyword))
            {
                filter.Keyword = filter.Keyword.ToLower();

                articleQuery = articleQuery.Where(x => x.Name.ToLower().Contains(filter.Keyword) || x.Description.Contains(filter.Keyword));
                productQuery = productQuery.Where(x => x.Name.ToLower().Contains(filter.Keyword) || x.Description.Contains(filter.Keyword));
                farmQuery    = farmQuery.Where(x => x.Name.ToLower().Contains(filter.Keyword) || x.Description.Contains(filter.Keyword));
            }

            if (filter.CreatedById.HasValue)
            {
                articleQuery = articleQuery.Where(x => x.CreatedById == filter.CreatedById);
                productQuery = productQuery.Where(x => x.CreatedById == filter.CreatedById);
                farmQuery    = farmQuery.Where(x => x.CreatedById == filter.CreatedById);
            }

            if (filter.CreatedDateFrom.HasValue && filter.CreatedDateTo.HasValue)
            {
                articleQuery = articleQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= filter.CreatedDateTo);
                productQuery = productQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= filter.CreatedDateTo);
                farmQuery    = farmQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateTo.HasValue)
            {
                articleQuery = articleQuery.Where(x => x.CreatedDate <= filter.CreatedDateTo);
                productQuery = productQuery.Where(x => x.CreatedDate <= filter.CreatedDateTo);
                farmQuery    = farmQuery.Where(x => x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateFrom.HasValue)
            {
                articleQuery = articleQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom);
                productQuery = productQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom);
                farmQuery    = farmQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom);
            }

            var articleFeeds = (from article in articleQuery
                                select new FeedResult()
            {
                CreatedById = article.CreatedById,
                CreatedDate = article.CreatedDate,
                Description = string.IsNullOrEmpty(article.Description) ? article.Content : article.Description,
                Id = article.Id.ToString(),
                Name = article.Name,
                FeedType = FeedType.Article,
            });

            var productFeeds = (from product in productQuery
                                join pr in _productPriceRepository.Get(x => x.IsCurrent)
                                on product.Id equals pr.ProductId into prices
                                from price in prices.DefaultIfEmpty()
                                select new FeedResult
            {
                CreatedById = product.CreatedById,
                CreatedDate = product.CreatedDate,
                Description = product.Description,
                Id = product.Id.ToString(),
                Name = product.Name,
                FeedType = FeedType.Product,
                Price = price != null ? price.Price : 0,
            });

            var farmFeeds = (from farm in farmQuery
                             select new FeedResult()
            {
                CreatedById = farm.CreatedById,
                CreatedDate = farm.CreatedDate,
                Description = farm.Description,
                Id = farm.Id.ToString(),
                Name = farm.Name,
                FeedType = FeedType.Farm,
                Address = farm.Address,
            });

            var feedQuery = articleFeeds
                            .UnionAll(productFeeds)
                            .UnionAll(farmFeeds);

            var filteredNumber = await feedQuery.CountAsync();

            articleFeeds = articleFeeds.Take(filter.PageSize);
            productFeeds = productFeeds.Take(filter.PageSize);
            farmFeeds    = farmFeeds.Take(filter.PageSize);

            feedQuery = articleFeeds
                        .UnionAll(productFeeds)
                        .UnionAll(farmFeeds)
                        .OrderByDescending(x => x.CreatedDate)
                        .Skip(filter.PageSize * (filter.Page - 1))
                        .Take(filter.PageSize);

            var feeds = await feedQuery.ToListAsync();

            var result = new BasePageList <FeedResult>(feeds)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
Example #11
0
        public async Task <BasePageList <ProductResult> > GetAsync(ProductFilter filter)
        {
            var deletedStatus   = ProductStatus.Deleted.GetCode();
            var inactivedStatus = ProductStatus.Inactived.GetCode();
            var search          = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var productQuery = _productRepository.Get(x => (x.StatusId == deletedStatus && filter.CanGetDeleted) ||
                                                      (x.StatusId == inactivedStatus && filter.CanGetInactived) ||
                                                      (x.StatusId != deletedStatus && x.StatusId != inactivedStatus));

            if (!string.IsNullOrEmpty(search))
            {
                productQuery = productQuery.Where(user => user.Name.ToLower().Contains(search) ||
                                                  user.Description.ToLower().Contains(search));
            }

            if (filter.CreatedById.HasValue)
            {
                productQuery = productQuery.Where(x => x.CreatedById == filter.CreatedById);
            }

            if (filter.StatusId.HasValue)
            {
                productQuery = productQuery.Where(x => x.StatusId == filter.StatusId);
            }

            if (filter.UpdatedById.HasValue)
            {
                productQuery = productQuery.Where(x => x.UpdatedById == filter.UpdatedById);
            }

            if (filter.CategoryId.HasValue)
            {
                productQuery = productQuery.Where(x => x.ProductCategories.Any(c => c.ProductCategoryId == filter.CategoryId));
            }

            if (filter.FarmId.HasValue)
            {
                productQuery = productQuery.Where(x => x.ProductFarms.Any(c => c.FarmId == filter.FarmId));
            }

            // Filter by register date/ created date
            if (filter.CreatedDateFrom.HasValue && filter.CreatedDateTo.HasValue)
            {
                productQuery = productQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateTo.HasValue)
            {
                productQuery = productQuery.Where(x => x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateFrom.HasValue)
            {
                productQuery = productQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= DateTimeOffset.UtcNow);
            }

            var filteredNumber = productQuery.Select(x => x.Id).Count();

            var farmQuery = from farm in _farmRepository.Get(x => x.StatusId != ProductStatus.Deleted.GetCode())
                            join farmProduct in _farmProductRepository.Table
                            on farm.Id equals farmProduct.FarmId
                            select new
            {
                Id        = farmProduct.Id,
                FarmId    = farm.Id,
                ProductId = farmProduct.ProductId,
                Name      = farm.Name
            };

            var query = from product in productQuery
                        join pr in _productPriceRepository.Get(x => x.IsCurrent)
                        on product.Id equals pr.ProductId into prices
                        from price in prices.DefaultIfEmpty()
                        join fp in farmQuery
                        on product.Id equals fp.ProductId into farmProducts
                        select new ProductResult
            {
                Id          = product.Id,
                Name        = product.Name,
                Price       = price != null ? price.Price : 0,
                CreatedById = product.CreatedById,
                CreatedDate = product.CreatedDate,
                Description = product.Description,
                UpdatedById = product.UpdatedById,
                UpdatedDate = product.UpdatedDate,
                StatusId    = product.StatusId,
                Farms       = farmProducts.Select(x => new ProductFarmResult
                {
                    Id     = x.Id,
                    FarmId = x.FarmId,
                    Name   = x.Name
                })
            };

            var products = await query
                           .OrderByDescending(x => x.CreatedDate)
                           .Skip(filter.PageSize * (filter.Page - 1))
                           .Take(filter.PageSize).ToListAsync();

            var result = new BasePageList <ProductResult>(products)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
        public async Task <BasePageList <ArticlePictureResult> > GetAsync(ArticlePictureFilter filter)
        {
            var pictureQuery = _pictureRepository.Get(x => x.StatusId != PictureStatus.Pending.GetCode());

            if (!string.IsNullOrEmpty(filter.Keyword))
            {
                var search = filter.Keyword.ToLower();
                pictureQuery = pictureQuery.Where(pic => pic.Title.ToLower().Contains(search));
            }

            if (filter.CreatedById.HasValue)
            {
                pictureQuery = pictureQuery.Where(x => x.CreatedById == filter.CreatedById);
            }

            if (!string.IsNullOrEmpty(filter.MimeType))
            {
                var mimeType = filter.MimeType.ToLower();
                pictureQuery = pictureQuery.Where(x => x.MimeType.Contains(mimeType));
            }

            // Filter by register date/ created date
            if (filter.CreatedDateFrom.HasValue && filter.CreatedDateTo.HasValue)
            {
                pictureQuery = pictureQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateTo.HasValue)
            {
                pictureQuery = pictureQuery.Where(x => x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateFrom.HasValue)
            {
                pictureQuery = pictureQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= DateTimeOffset.UtcNow);
            }

            var query = from ap in _articlePictureRepository.Table
                        join p in pictureQuery
                        on ap.PictureId equals p.Id
                        join a in _articleRepository.Table
                        on ap.ArticleId equals a.Id
                        select new ArticlePictureResult()
            {
                ArticleId            = a.Id,
                ArticleName          = a.Name,
                PictureId            = p.Id,
                PictureName          = p.FileName,
                ArticlePictureTypeId = ap.PictureTypeId,
                PictureCreatedById   = p.CreatedById,
                PictureCreatedDate   = p.CreatedDate,
                ContentType          = p.MimeType
            };

            var filteredNumber = query.Select(x => x.PictureId).Count();

            var articlePictures = await query.Skip(filter.PageSize *(filter.Page - 1))
                                  .Take(filter.PageSize).ToListAsync();

            var result = new BasePageList <ArticlePictureResult>(articlePictures)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
        public async Task <BasePageList <ArticleResult> > GetAsync(ArticleFilter filter)
        {
            var deletedStatus   = ArticleStatus.Deleted.GetCode();
            var inactivedStatus = ArticleStatus.Inactived.GetCode();
            var search          = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var articleQuery = _articleRepository.Get(x => (x.StatusId == deletedStatus && filter.CanGetDeleted) ||
                                                      (x.StatusId == inactivedStatus && filter.CanGetInactived) ||
                                                      (x.StatusId != deletedStatus && x.StatusId != inactivedStatus));

            if (!string.IsNullOrEmpty(search))
            {
                articleQuery = articleQuery.Where(user => user.Name.ToLower().Contains(search) ||
                                                  user.Description.ToLower().Contains(search));
            }

            var content = filter.Content != null?filter.Content.ToLower() : "";

            if (!string.IsNullOrEmpty(content))
            {
                articleQuery = articleQuery.Where(user => user.Content.ToLower().Contains(content));
            }

            if (filter.StatusId.HasValue)
            {
                articleQuery = articleQuery.Where(x => x.StatusId == filter.StatusId);
            }

            if (filter.CreatedById.HasValue)
            {
                articleQuery = articleQuery.Where(x => x.CreatedById == filter.CreatedById);
            }

            if (filter.UpdatedById.HasValue)
            {
                articleQuery = articleQuery.Where(x => x.UpdatedById == filter.UpdatedById);
            }

            if (filter.CategoryId.HasValue)
            {
                articleQuery = articleQuery.Where(x => x.ArticleCategoryId == filter.CategoryId);
            }

            // Filter by register date/ created date
            if (filter.CreatedDateFrom.HasValue && filter.CreatedDateTo.HasValue)
            {
                articleQuery = articleQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateTo.HasValue)
            {
                articleQuery = articleQuery.Where(x => x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateFrom.HasValue)
            {
                articleQuery = articleQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= DateTimeOffset.UtcNow);
            }

            var filteredNumber = articleQuery.Select(x => x.Id).Count();

            var query = from ar in articleQuery
                        select new ArticleResult
            {
                Id          = ar.Id,
                Name        = ar.Name,
                CreatedById = ar.CreatedById,
                CreatedDate = ar.CreatedDate,
                Description = ar.Description,
                UpdatedById = ar.UpdatedById,
                UpdatedDate = ar.UpdatedDate,
                Content     = ar.Content,
                StatusId    = ar.StatusId
            };

            var articles = await query
                           .OrderByDescending(x => x.CreatedDate)
                           .Skip(filter.PageSize * (filter.Page - 1))
                           .Take(filter.PageSize).ToListAsync();

            var result = new BasePageList <ArticleResult>(articles)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }
Example #14
0
        public async Task <BasePageList <FarmResult> > GetAsync(FarmFilter filter)
        {
            var deletedStatus   = FarmStatus.Deleted.GetCode();
            var inactivedStatus = FarmStatus.Inactived.GetCode();
            var search          = filter.Keyword != null?filter.Keyword.ToLower() : "";

            var farmQuery = _farmRepository.Get(x => (x.StatusId == deletedStatus && filter.CanGetDeleted) ||
                                                (x.StatusId == inactivedStatus && filter.CanGetInactived) ||
                                                (x.StatusId != deletedStatus && x.StatusId != inactivedStatus));

            if (!string.IsNullOrEmpty(search))
            {
                farmQuery = farmQuery.Where(user => user.Name.ToLower().Contains(search) ||
                                            user.Description.ToLower().Contains(search));
            }

            if (filter.ExclusiveUserId.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.CreatedById != filter.ExclusiveUserId);
            }

            if (filter.StatusId.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.StatusId == filter.StatusId);
            }

            if (filter.CreatedById.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.CreatedById == filter.CreatedById);
            }

            if (filter.UpdatedById.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.UpdatedById == filter.UpdatedById);
            }

            if (filter.FarmTypeId.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.FarmTypeId == filter.FarmTypeId);
            }

            // Filter by register date/ created date
            if (filter.CreatedDateFrom.HasValue && filter.CreatedDateTo.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateTo.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.CreatedDate <= filter.CreatedDateTo);
            }
            else if (filter.CreatedDateFrom.HasValue)
            {
                farmQuery = farmQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= DateTimeOffset.UtcNow);
            }

            var filteredNumber = farmQuery.Select(x => x.Id).Count();

            var query = from farm in farmQuery
                        select new FarmResult
            {
                Id          = farm.Id,
                Name        = farm.Name,
                Address     = farm.Address,
                CreatedById = farm.CreatedById,
                CreatedDate = farm.CreatedDate,
                Description = farm.Description,
                UpdatedById = farm.UpdatedById,
                UpdatedDate = farm.UpdatedDate,
                StatusId    = farm.StatusId
            };

            var farms = await query
                        .OrderByDescending(x => x.CreatedDate)
                        .Skip(filter.PageSize * (filter.Page - 1))
                        .Take(filter.PageSize).ToListAsync();

            var result = new BasePageList <FarmResult>(farms)
            {
                TotalResult = filteredNumber,
                TotalPage   = (int)Math.Ceiling((double)filteredNumber / filter.PageSize)
            };

            return(result);
        }