public async Task <Bid> Open(Bid bid) { var project = await _client.GetProjectAsync(bid.ProjectId); if (project == null) { throw new InvalidBid(); } var existingBid = await _bidRepository.GetByProjectAndFreelancer(bid.ProjectId, bid.FreelancerId); if (existingBid != null) { throw new InvalidBid("User already has a bid pending"); } var createdBid = await _bidRepository.Create(bid); return(createdBid ?? throw new InvalidBid()); }