public async Task <ClaimResult> EditPickupBid(PickupBid bid, PublisherGame?conditionalDropPublisherGame, uint bidAmount) { if (bid.Successful != null) { return(new ClaimResult(new List <ClaimError>() { new ClaimError("Bid has already been processed", false) }, null)); } if (bidAmount < bid.LeagueYear.Options.MinimumBidAmount) { return(new ClaimResult(new List <ClaimError>() { new ClaimError("That bid does not meet the league's minimum bid.", false) }, null)); } if (bidAmount > bid.Publisher.Budget) { return(new ClaimResult(new List <ClaimError>() { new ClaimError("You do not have enough budget to make that bid.", false) }, null)); } int?validDropSlot = null; if (conditionalDropPublisherGame is not null) { if (bid.CounterPick) { return(new ClaimResult("Cannot make a counter pick bid with a conditional drop.", null)); } var dropResult = await MakeDropRequest(bid.LeagueYear, bid.Publisher, conditionalDropPublisherGame, true); if (dropResult.Result.IsFailure) { return(new ClaimResult(dropResult.Result.Error, null)); } validDropSlot = conditionalDropPublisherGame.SlotNumber; } await _fantasyCriticRepo.EditPickupBid(bid, conditionalDropPublisherGame, bidAmount); var currentDate = _clock.GetToday(); MasterGameWithEligibilityFactors eligibilityFactors = bid.LeagueYear.GetEligibilityFactorsForMasterGame(bid.MasterGame, currentDate); var slotResult = SlotEligibilityService.GetPublisherSlotAcquisitionResult(bid.Publisher, bid.LeagueYear.Options, eligibilityFactors, bid.CounterPick, validDropSlot, false); if (!slotResult.SlotNumber.HasValue) { return(new ClaimResult(slotResult.ClaimErrors, null)); } return(new ClaimResult(slotResult.SlotNumber.Value)); }