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); }