public override async Task <DataTablesResult <ProductType> > SearchAsync(SearchRequest searchRequest, bool activeOnly = false)
        {
            //Get searchable properties
            List <string> stringProperties = new List <string> ()
            {
                "Name", "ProductTypeCode"
            };
            Expression <Func <ProductType, bool> > predicate = DataTableHelper.ConstructFilter <ProductType> (searchRequest.Query, stringProperties, activeOnly);

            if (string.IsNullOrEmpty(searchRequest.Query))
            {
                predicate = null;
            }
            //submodule type and submodule filter
            if (searchRequest.SubmoduleTypeCode != null)
            {
                Expression <Func <ProductType, bool> > submoduleTypeExpression = x => x.SubmoduleType.SubmoduleTypeCode == searchRequest.SubmoduleTypeCode;
                predicate = predicate != null?submoduleTypeExpression.AndAlso(predicate) : submoduleTypeExpression;
            }
            ;
            if (searchRequest.SubmoduleCode != null)
            {
                Expression <Func <ProductType, bool> > submoduleExpression = x => x.Submodule.SubmoduleCode == searchRequest.SubmoduleCode;
                predicate = predicate != null?submoduleExpression.AndAlso(predicate) : submoduleExpression;
            }
            OrderBy <ProductType> orderBy = new OrderBy <ProductType> (qry => qry.OrderBy(e => e.ID));

            var response = await SearchAsync(searchRequest, predicate, orderBy.Expression);

            return(response);
        }
Example #2
0
        /// <summary>
        /// Suppliers page
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <DataTablesResult <vwSupplier> > GetSupplierPage(IDataTablesRequest request)
        {
            Expression <Func <vwSupplier, bool> > predicate = DataTableHelper.ConstructFilter <vwSupplier>(request.Search.Value, columns);
            OrderBy <vwSupplier> orderBy = new OrderBy <vwSupplier>(qry => qry.OrderBy(e => e.Name));
            var response = await _vwSupplierService.GetPageAsync(request, predicate, orderBy.Expression);

            return(response);
        }
Example #3
0
        /// <summary>
        /// Users page
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <DataTablesResult <vwUser> > GetUserPage(IDataTablesRequest request)
        {
            Expression <Func <vwUser, bool> > predicate = DataTableHelper.ConstructFilter <vwUser> (request.Search.Value, columns);

            var response = await _vwUserService.GetPageAsync(request, predicate, null);

            return(response);
        }
Example #4
0
        /// <summary>
        /// Search product
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public async Task <List <vwProduct> > SearchProduct(string query)
        {
            if (query.Length < 3)
            {
                return(null);
            }

            Expression <Func <vwProduct, bool> > predicate = DataTableHelper.ConstructFilter <vwProduct> (query, new List <string> {
                "FullItemName", "BrandName"
            });
            OrderBy <vwProduct> orderBy = new OrderBy <vwProduct> (qry => qry.OrderBy(e => e.FullItemName));
            var response = (await _vwProductService.FindByAsync(predicate, orderBy.Expression)).Take(MAX_PRODUCTS).ToList();

            return(response.Where(p => p.IsExpired == null || !(bool)p.IsExpired).ToList());
        }
Example #5
0
        public async Task <DataTablesResult <MedicalDeviceMigration> > GetPageAsync(IDataTablesRequest request)
        {
            Expression <Func <MedicalDeviceHeader, bool> > predicate = DataTableHelper.ConstructFilter <MedicalDeviceHeader> (request.Search.Value, columns);
            OrderBy <MedicalDeviceHeader> orderBy = new OrderBy <MedicalDeviceHeader> (qry => qry.OrderBy(e => e.RegistrationDate));

            var sortableColumns = request.Columns.Where(c => c.Sort != null);
            var result          = await base.GetPageAsync(request.Start, request.Length, sortableColumns, predicate, orderBy.Expression);

            var pageData = MapMedicalDeviceMigration(result);

            var totalRecords = await base.CountAsync(predicate);

            var response = new DataTablesResult <MedicalDeviceMigration> (request.Draw, totalRecords, totalRecords, pageData);

            return(response);
        }
Example #6
0
        public async Task <DataTablesResult <vwShipment> > GetShipmentPageAsync(IDataTablesRequest request, int?userID = null)
        {
            Expression <Func <vwShipment, bool> > predicate = DataTableHelper.ConstructFilter <vwShipment> (request.Search.Value,
                                                                                                            new List <string> {
                "ImportPermitNumber", "ReleaseNumber", "ShipmentStatus", "PerformaInvoiceNumber", "AgentName", "SupplierName"
            });
            OrderBy <vwShipment> orderBy = new OrderBy <vwShipment> (qry => qry.OrderBy(e => e.ReleaseNumber));

            if (string.IsNullOrEmpty(request.Search.Value))
            {
                predicate = null;
            }

            var response = await _vwShipmentService.GetPageAsync(request, predicate, orderBy.Expression);

            return(response);
        }
Example #7
0
        /// <summary>
        /// Search Manufacturer Address
        /// </summary>
        /// <param name="query"></param>
        /// <param name="pageNumber"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public async Task <DataTablesResult <vwManufacturerAddress> > SearchManufacturerAddress(string query, int pageNumber, int?pageSize = null)
        {
            Expression <Func <vwManufacturerAddress, bool> > predicate = DataTableHelper.ConstructFilter <vwManufacturerAddress>(query, new List <string> {
                "Name", "Country"
            });
            OrderBy <vwManufacturerAddress> orderBy = new OrderBy <vwManufacturerAddress>(qry => qry.OrderBy(e => e.Name));

            if (string.IsNullOrEmpty(query))
            {
                predicate = null;
            }

            var totalRecords = await _vwManufacturerAddressService.CountAsync(predicate);

            var pageData = await _vwManufacturerAddressService.GetPageAsync(pageNumber *(pageSize.HasValue ? (int)pageSize : PAGE_SIZE), pageSize.HasValue?(int)pageSize : PAGE_SIZE, null, predicate, orderBy.Expression);

            var response = new DataTablesResult <vwManufacturerAddress>(pageNumber, totalRecords, totalRecords, pageData);

            return(response);
        }
Example #8
0
        /// <summary>
        /// Pagination enabled search
        /// </summary>
        /// <param name="searchRequest"></param>
        /// <returns></returns>
        public virtual async Task <DataTablesResult <T> > SearchAsync(SearchRequest searchRequest, bool activeOnly = false)
        {
            //Get searchable properties
            List <string> stringProperties = typeof(T).GetProperties(
                BindingFlags.FlattenHierarchy |
                BindingFlags.Public |
                BindingFlags.Instance).Where(p => !p.IsDefined(typeof(NotMappedAttribute), true) && p.PropertyType == typeof(string)).Select(p => p.Name).ToList();

            Expression <Func <T, bool> > predicate = DataTableHelper.ConstructFilter <T> (searchRequest.Query, stringProperties, activeOnly);

            //submodule type filter
            if (typeof(T).GetProperty("SubmoduleType") != null)
            {
                ParameterExpression argument = Expression.Parameter(typeof(T), "t");
                Expression          left     = Expression.Property(argument, typeof(T).GetProperty("SubmoduleType"));
                left = Expression.Property(left, typeof(SubmoduleType).GetProperty("SubmoduleTypeCode"));
                Expression right = Expression.Constant(searchRequest.SubmoduleTypeCode, typeof(string));

                Expression predicateSubmodule = Expression.Equal(left, right);

                Expression <Func <T, bool> > expression = predicateSubmodule != null?Expression.Lambda <Func <T, bool> > (predicateSubmodule, new [] { argument }) : null;

                predicate = predicate != null?expression.AndAlso(predicate) : expression;
            }
            ;

            OrderBy <T> orderBy = new OrderBy <T> (qry => qry.OrderBy(e => e.ID));

            if (string.IsNullOrEmpty(searchRequest.Query))
            {
                predicate = null;
            }

            var response = await SearchAsync(searchRequest, predicate, orderBy.Expression);

            return(response);
        }