public AuctionListResponseModel GetActiveAuctions(AuctionListRequestModel request) { ValidateAuctionList(request); // note: kke: if the user is not logged in, cant use search functionality! if (m_permissionService.GetUserId().IsNotSpecified()) { request.SearchValue = null; } (int startFrom, int endAt) = Pagination.GetOffsetAndSize(request); // Note: kke: load only active auctions. DateTime fromDate = DateTime.UtcNow; AuctionListResponseModel auctionsResponse = new AuctionListResponseModel() { Auctions = m_auctionsRepository.GetActiveAuctions(request, startFrom, endAt, fromDate).ToList(), ItemCount = m_auctionsRepository.ActiveAuctionCount().Count() }; Pagination.PaginateResponse(ref auctionsResponse, TableItem.DefaultSize, request.CurrentPage); return(auctionsResponse); }
/// <summary> /// Validate auction list permissions and input values /// </summary> /// <param name="request"></param> private void ValidateAuctionList(AuctionListRequestModel request) { if (request.IsNotSpecified()) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation); } if (request.SortingDirection.IsNotSpecified()) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation); } if (request.OffsetStart < 0) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation); } if (request.OffsetEnd.IsNotSpecified()) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation); } if (request.CurrentPage < 0) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation); } if (request.SortingDirection != "asc" && request.SortingDirection != "desc") { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation); } // todo: kke: validate sort by columns list! // todo: kke: validate if smth else is not missing here! if (request.SortByColumn.IsNotSpecified()) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation); } List <string> allowedSortByColumns = new List <string> { "AuctionName", "AuctionStartingPrice", "AuctionStartDate", "AuctionEndDate" }; if (allowedSortByColumns.Contains(request.SortByColumn) == false) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation); } }
public AuctionListResponseModel GetAllAuctions(AuctionListRequestModel request) { ValidateAuctionList(request); // TODO: kke: validate request.SearchValue to be valid value! (int startFrom, int endAt) = Pagination.GetOffsetAndSize(request); // Note: kke: load all possible auctions. DateTime fromDate = new DateTime(1900, 1, 1); AuctionListResponseModel auctionsResponse = new AuctionListResponseModel() { Auctions = m_auctionsRepository.GetActiveAuctions(request, startFrom, endAt, fromDate).ToList(), ItemCount = m_auctionsRepository.AllAuctionCount().Count() }; Pagination.PaginateResponse(ref auctionsResponse, TableItem.DefaultSize, request.CurrentPage); return(auctionsResponse); }
public IEnumerable <AuctionListItemModel> GetActiveAuctions(AuctionListRequestModel request, int startFrom, int endAt, DateTime auctionsFromDate) { try { string convertedCategoryIds = request.TopCategoryIds.IsNotSpecified() ? null : string.Join(',', request.TopCategoryIds.Select(t => t.ToString())); string convertedTypeIds = request.TypeIds.IsNotSpecified() ? null : string.Join(',', request.TypeIds.Select(t => t.ToString())); SqlParameter categoryIds = new SqlParameter { ParameterName = "selectedCategories", Direction = ParameterDirection.Input, Value = HandleNull(convertedCategoryIds), SqlDbType = SqlDbType.Text }; SqlParameter typeIds = new SqlParameter { ParameterName = "selectedTypes", Direction = ParameterDirection.Input, Value = HandleNull(convertedTypeIds), SqlDbType = SqlDbType.Text }; SqlParameter startPaginationFrom = new SqlParameter { ParameterName = "start", Direction = ParameterDirection.Input, Value = startFrom, SqlDbType = SqlDbType.Int }; SqlParameter endPaginationAt = new SqlParameter { ParameterName = "end", Direction = ParameterDirection.Input, Value = endAt, SqlDbType = SqlDbType.Int }; SqlParameter searchBy = new SqlParameter { ParameterName = "searchValue", Direction = ParameterDirection.Input, Value = HandleNull(request.SearchValue), SqlDbType = SqlDbType.Text }; SqlParameter loadFromDate = new SqlParameter { ParameterName = "fromDate", Direction = ParameterDirection.Input, Value = auctionsFromDate, SqlDbType = SqlDbType.DateTime }; return(m_context.Query <AuctionListItemModel>() .FromSql("[dbo].[BID_GetAuctions] @selectedCategories, @selectedTypes, @start, @end, @searchValue, @fromDate", categoryIds, typeIds, startPaginationFrom, endPaginationAt, searchBy, loadFromDate)); } catch (Exception ex) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.CouldNotFetchAuctionList, ex); } }
public IActionResult GetAllAuctions([FromQuery] AuctionListRequestModel request) { return(Ok(m_auctionsService.GetAllAuctions(request))); }