Exemple #1
0
        public IEnumerable <ClaimedVoucher> GetAll(string query, int userId, int voucherId, string ids,
                                                   int startId, DateTime claimedDate, DateTime expiredDate)
        {
            //initialize a list
            IEnumerable <ClaimedVoucher> list = _claimedRepo.GetAll();

            //case has query
            if (query.Length > 0)
            {
                //validate

                if (query.Contains("user-id="))
                {
                    if (!util.ValidIntParam(query, "user-id=", userId))
                    {
                        return(null);
                    }
                }

                if (query.Contains("voucher-id="))
                {
                    if (!util.ValidIntParam(query, "voucher-id=", voucherId))
                    {
                        return(null);
                    }
                }

                if (query.Contains("start-id="))
                {
                    if (!util.ValidIntParam(query, "id=", startId))
                    {
                        return(null);
                    }
                }

                if (query.Contains("ids="))
                {
                    if (!util.ValidIntParams(query, "ids=", ids))
                    {
                        return(null);
                    }
                }

                if (query.Contains("claimed-date="))
                {
                    if (!util.ValidDateTimeParam(query, "claimed-date=", claimedDate))
                    {
                        return(null);
                    }
                }

                if (query.Contains("expired-date="))
                {
                    if (!util.ValidDateTimeParam(query, "expired-date=", expiredDate))
                    {
                        return(null);
                    }
                }

                //id, ids must not in a uri
                if (query.Contains("user-id=") && query.Contains("ids="))
                {
                    return(null);
                }

                //page only involve with limit and fields
                //not filter changing list item
                if (query.Contains("page=") && (query.Contains("user-id=") ||
                                                query.Contains("ids=") ||
                                                query.Contains("start-id=")))
                {
                    return(null);
                }

                //query must have both begin-date and expired-date
                if (query.Contains("claimed-date=") && !query.Contains("expired-date=") ||
                    !query.Contains("claimed-date=") && query.Contains("expired-date="))
                {
                    return(null);
                }

                //begin-date must less than expired-date
                if (claimedDate.CompareTo(expiredDate) == 1)
                {
                    return(null);
                }

                //case param
                if (!query.Contains("&"))
                {
                    //user-id
                    if (query.Contains("user-id="))
                    {
                        return(list.Where(e => e.UserId == userId));
                    }

                    //voucher-id
                    if (query.Contains("voucher-id="))
                    {
                        return(list.Where(e => e.VoucherId == voucherId));
                    }

                    //ids
                    if (query.Contains("ids="))
                    {
                        return(list.Where(e => ids.Contains(e.Id.ToString())));
                    }

                    //startId
                    if (query.Contains("start-id="))
                    {
                        return(list.Where(e => e.Id >= startId));
                    }
                }

                //case params
                if (query.Contains("&"))
                {
                    //case params: name, address
                    if (query.Contains("claimed-date=") & query.Contains("expired-date="))
                    {
                        return(list.Where(e => e.ClaimedDate.CompareTo(claimedDate) == 1 &&
                                          e.ExpiredDate.CompareTo(expiredDate) == -1));
                    }
                }
                return(null);
            } // end if uri has query

            //case uri has no query
            return(list);
        }
        public IEnumerable <Promotion> GetAll(string query, int brandId, string ids,
                                              int startId, DateTime beginDate, DateTime expiredDate)
        {
            //initialize a list
            IEnumerable <Promotion> list = _proRepo.GetAll();

            //case has query
            if (query.Length > 0)
            {
                //validate

                if (query.Contains("brand-id="))
                {
                    if (!util.ValidIntParam(query, "brand-id=", brandId))
                    {
                        return(null);
                    }
                }

                if (query.Contains("start-id="))
                {
                    if (!util.ValidIntParam(query, "id=", startId))
                    {
                        return(null);
                    }
                }

                if (query.Contains("ids="))
                {
                    if (!util.ValidIntParams(query, "ids=", ids))
                    {
                        return(null);
                    }
                }

                if (query.Contains("begin-date="))
                {
                    if (!util.ValidDateTimeParam(query, "begin-date=", beginDate))
                    {
                        return(null);
                    }
                }

                if (query.Contains("expired-date="))
                {
                    if (!util.ValidDateTimeParam(query, "expired-date=", expiredDate))
                    {
                        return(null);
                    }
                }

                //id, ids must not in a uri
                if (query.Contains("brand-id=") && query.Contains("ids="))
                {
                    return(null);
                }

                //page only involve with limit and fields
                //not filter changing list item
                if (query.Contains("page=") && (query.Contains("brand-id=") ||
                                                query.Contains("ids=") ||
                                                query.Contains("start-id=")))
                {
                    return(null);
                }

                //query must have both begin-date and expired-date
                if (query.Contains("begin-date=") && !query.Contains("expired-date=") ||
                    !query.Contains("begin-date=") && query.Contains("expired-date="))
                {
                    return(null);
                }

                //begin-date must less than expired-date
                if (beginDate.CompareTo(expiredDate) == 1)
                {
                    return(null);
                }

                //case param
                if (!query.Contains("&"))
                {
                    //id
                    if (query.Contains("brand-id="))
                    {
                        return(list.Where(e => e.BrandId == brandId));
                    }

                    //ids
                    if (query.Contains("ids="))
                    {
                        return(list.Where(e => ids.Contains(e.Id.ToString())));
                    }

                    //startId
                    if (query.Contains("start-id="))
                    {
                        return(list.Where(e => e.Id >= startId));
                    }

                    //limit must be last
                    if (query.Contains("limit="))
                    {
                        return(list);
                    }
                }

                //case params
                if (query.Contains("&"))
                {
                    //case params: name, address
                    if (query.Contains("begin-date=") & query.Contains("expired-date="))
                    {
                        return(list.Where(e => e.BeginDate.CompareTo(beginDate) == 1 &&
                                          e.ExpiredDate.CompareTo(expiredDate) == -1));
                    }
                }
                return(null);
            } // end if uri has query

            //case uri has no query
            return(list);
        }