using Microsoft.AspNetCore.Mvc; using Nop.Core; using Nop.Core.Domain.Customers; using Nop.Core.Domain.Orders; using Nop.Plugin.Misc.AuctionPlugin.Domains; using Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos; using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; using Nop.Services.Orders; namespace Nop.Plugin.Misc.AuctionPlugin.Services; /// /// Store pickup point service interface /// public interface IAuctionService { //decimal GetStepAmount(decimal currentPrice); Task UpdateProductToAuctionStatusIfValidAsync(AuctionStatus newProductToAuctionStatus, Auction auction, ProductToAuctionMapping productToAuction, Customer customer, bool updateInDatabase = true); Task<(Auction auction, ProductToAuctionMapping productToAuction, ResponseType responseType)> GetAndUpdateProductToAuctionStatusIfValidAsync(int productToAuctionId, AuctionStatus newProductToAuctionStatus, Customer customer); Task ResetProductToAuction(ProductToAuctionMapping productToAuction, int? categoryId = null); Task UpdateProductCategoryIsFeaturedAsync(int productId, int? categoryId, bool isFeatured); bool IsValidRequestAuctionStatus(AuctionStatus newStatus, AuctionStatus oldStatus); /// /// Gets all bids /// /// The store identifier; pass 0 to load all records /// Page index /// Page size /// /// A task that represents the asynchronous operation /// The task result contains the bids /// Task> GetAllBidsAsync(int customerId = 0, int pageIndex = 0, int pageSize = int.MaxValue); Task GetBidsCountByProductToAuctionIdAsync(int productToAuctionId); Task> GetAllLastBidByAuctionIdAsync(int auctionId); Task> GetAllLastBidDictionaryByAuctionIdAsync(int auctionId); Task HasBidByProductToAuctionIdAsync(int productToAuctionId); Task GetBidByIdAsync(int bidId); Task InsertBidAsync(AuctionBid auctionBid); Task UpdateBidAsync(AuctionBid auctionBid); Task DeleteBidAsync(AuctionBid pickupPoint); Task InsertAuctionAsync(Auction auction); Task UpdateAuctionAsync(Auction auction); Task> GetAllAuctionsAsync(); Task> GetAllCurrentAutoOpenAndClosedAuctionsAsync(); Task GetAuctionDtoWithAuctionBids(int auctionId, bool activeProductOnly, int maxBidsCount); Task> GetProductToAuctionsByAuctionIdAsync(int auctionId, bool onlyActiveItems); Task GetNextProductToAuctionByAuctionIdAsync(int auctionId); Task> GetNotClosedProductToAuctionsByAuctionId(int auctionId); Task GetAuctionByIdAsync(int auctionId); Task GetAuctionDtoByIdAsync(int auctionId, bool widthProducts, bool activeProductOnly); Task> GetProductToAuctionDtosByAuctionId(int auctionId, bool activeProductOnly); Task> GetProductToAuctionDtosByProductIdAsync(int productId); Task GetAuctionDtoWithProductByIdAsync(int auctionId, int productId, bool activeProductOnly); Task GetProductToAuctionDtoByIdAsync(int productToAuctionId); Task GetAuctionBidDtoByIdAsync(int auctionBidId); Task AssignProductToAuctionAsync(int productId, decimal startingPrice, decimal bidPrice, int auctionId, int sortIndex); Task> GetProductToAuctionsByProductIdAsync(int productId); Task> GetProductToAuctionByAuctionIdAndProductIdAsync(int auctionId, int productId, bool activeProductOnly); Task GetProductToAuctionMappingByIdAsync(int productToAuctionMappingId); Task UpdateProductToAuctionAsync(ProductToAuctionMapping productToAuctionMapping); Task UpdateProductToAuctionAsync(IList productToAuctionMappings); Task CreateOrderForWinnerAsync(ProductToAuctionMapping productToAuctionMapping); }