using LCU.API.Internal.RepoApi.Repos.Extensions; using LCU.API.Internal.RepoApi.Repos.Models; using LCU.API.Internal.RepoApi.Repos.Models.Results; using LCU.API.Internal.RepoApi.Repos.Persistence; using Microsoft.EntityFrameworkCore; namespace LCU.API.Internal.RepoApi.Repos.Repositories { public class AuctionAssignmentRepository : BaseRepository, IAuctionAssignmentRepository { public AuctionAssignmentRepository(AppDbContext context) : base(context) { } public async Task> ListAllAsync(int filterPage, int filterLimit) { var results = new PagedResult(); var skip = (filterPage - 1) * filterLimit; var temp = (from x in _context.AuctionAssignments select x).OrderByDescending(x => x.ID); results.Total = temp.Count(); results.Items = await temp.Skip(skip).Take(filterLimit).IncludeAll().ToListAsync(); return results; } public async Task> ListReadyForFloorPriceAsync() { var results = new PagedResult(); var temp = (from x in _context.AuctionAssignments where (x.FloorPrice ?? 0) == 0 && x.AutoIMS != null && x.AutoIMS.SoldDate == null && (x.AutoIMS.StatedMileage ?? -1) > 1 && x.AutoIMS.ScheduledSaleDate != null && x.AutoIMS.ScheduledSaleDate > DateTime.Now.Date && x.RedeemedDate == null && ( (x.AutoIMS.ApprovedVehicleGrade ?? 0) > 0 || (x.AutoIMS.VehicleGrade ?? 0) > 0) select x).OrderByDescending(x => x.ID); results.Items = await temp.IncludeAll().ToListAsync(); results.Total = temp.Count(); return results; } public async Task FindByIdAsync(int id) { return await Queryable.Where(_context.AuctionAssignments, c => c.ID == id).IncludeAll().FirstOrDefaultAsync(); } public async Task> FindListByIdsAsync(IReadOnlyCollection idSet) { return await Queryable.Where(_context.AuctionAssignments, c => idSet.Contains(c.ID)).ToListAsync(); } public async Task> FindByRepoIdAsync(int repoId) { return await _context.AuctionAssignments.Where(auctionAssignment => auctionAssignment.RepoId == repoId).IncludeAll().ToListAsync(); } public async Task FindByByAuctionCustomerNoAndVin(string auctionCustomerNo, string vin) { return await Queryable .Where(_context.AuctionAssignments, auctionAssignment => auctionAssignment.AuctionCustomerNo == auctionCustomerNo && auctionAssignment.CollateralVIN == vin && auctionAssignment.IsActive == true).IncludeAll().FirstOrDefaultAsync(); } public async Task AddAsync(AuctionAssignment auctionAssignment) { var result = await _context.AuctionAssignments.AddAsync(auctionAssignment); result.Entity.Auction = Queryable.Where(_context.Auctions, a => a.AuctionID == result.Entity.AuctionId) .FirstOrDefault(); return result.Entity; } public void Update(AuctionAssignment auctionAssignment) { _context.AuctionAssignments.Update(auctionAssignment); } public void Remove(AuctionAssignment auctionAssignment) { _context.AuctionAssignments.Remove(auctionAssignment); } } }