Ejemplo n.º 1
0
        public DTO.Messages.Wrapper GetAll([FromBody] DTO.Messages.SearchPage Search = null)
        {
            var Result = AuthorizeResponse(new HashSet <string> {
                "Administrator"
            });

            if (Search == null)
            {
                Search = new DTO.Messages.SearchPage();
            }
            else
            {
                var Max = (Search.MaxPrice > Search.MinPrice) ? Search.MaxPrice : Search.MinPrice;
                var Min = (Search.MaxPrice < Search.MinPrice) ? Search.MaxPrice : Search.MinPrice;

                Search.MaxPrice = Max;
                Search.MinPrice = Min;
            }
            IQueryable <DTO.Databases.Product> Query = null;

            if (string.IsNullOrWhiteSpace(Search.SearchTerm))
            {
                Query = MongoItems.QueryableCollection;
            }
            else
            {
                var SearchKey = new DTO.Projection.Search
                {
                    SearchTerm    = Search.SearchTerm,
                    Categories    = Search.Categories,
                    SubCategories = Search.SubCategories
                };

                var Cached = RedisItems.GetList(SearchKey);
                if (Cached == null || Cached.Count() == 0)
                {
                    Cached = MongoItems.SearchThru(Search, false);
                    RedisItems.SaveList(Cached, SearchKey);
                    Query = Cached.AsQueryable();
                }
                else
                {
                    Query = Cached.AsQueryable();
                }

                var Offset = Query.Count() < (Search.Page + 1) * Search.PageLimit ? Query.Count() : (Search.Page + 1) * Search.PageLimit;
                Offset = (Offset - Search.PageLimit < 0) ? 0 : Offset - Search.PageLimit;
                var Taken = Query.Count() - Offset;

                Query       = Query.Skip(Offset).Take(Taken);
                Result.Data = Query;

                if (Query.Count() == 0)
                {
                    Result.Code   = 404;
                    Result.Status = "Not Found";
                }
            }
            return(Result);
        }
Ejemplo n.º 2
0
        public DTO.Messages.Wrapper CreateItem([FromBody] DTO.Messages.Product Product)
        {
            var Result = AuthorizeResponse(new HashSet <string> {
                "Administrator"
            });

            Result.Data = Product;

            if (Product == null)
            {
                Result.Messages.Add("PostBody", "can't be empty");
            }
            else
            {
                if (string.IsNullOrWhiteSpace(Product.Name) || Product.Name.Length < 8)
                {
                    Result.Messages.Add("Name", "can't be empty or shorter than 8 characters");
                }
                if (string.IsNullOrWhiteSpace(Product.Description) || Product.Description.Length < 25)
                {
                    Result.Messages.Add("Description", "can't be empty or shorter than 25 characters");
                }
                if (Product.Price < 0)
                {
                    Result.Messages.Add("Price", "must be not negative number");
                }
                if (Product.Images.Count < 1)
                {
                    Result.Messages.Add("Images", "please specify at least 1 image for this product");
                }
            }

            if (Result.Messages.Count > 0)
            {
                Result.Code   = 400;
                Result.Status = "Bad Request";
                return(Result);
            }

            var NewProduct = new DTO.Databases.Product
            {
                Name          = Product.Name,
                Description   = Product.Description,
                Price         = Product.Price,
                Images        = Product.Images,
                Categories    = Product.Categories,
                SubCategories = Product.SubCategories,
                Owner         = Token.sub
            };
            var Inserted = MongoItems.Save(NewProduct);

            Result.Data = NewProduct;
            Result.Messages.Add("Save", Inserted ? "Ok" : "Failed");
            return(Result);
        }