private async Task <Unit> AssignOrderToBaristaIfAny(Option <Guid> baristaIdOption, ToGoOrder order) { await baristaIdOption.MapAsync( async baristaId => { var barista = (await _baristaRepository .Get(baristaId)) .ValueOr(() => throw new InvalidOperationException( $"Tried to assign an order to an unexisting barista. (id: {baristaId}) " + $"It is very likely that the claim assigning logic is broken.")); barista.CompletedOrders.Add(order); await _baristaRepository.Update(barista); return(Unit.Value); }); return(Unit.Value); }
private async Task <Option <Unit, Error> > BaristaShouldNotExist(Guid id) => (await _baristaRepository.Get(id)) .SomeWhen(b => !b.HasValue, Error.Conflict($"Barista {id} already exists.")) .Map(_ => Unit.Value);
private Task <Option <Barista, Error> > BaristaShouldExist(Guid baristaId) => _baristaRepository .Get(baristaId) .WithException(Error.NotFound($"No barista with id {baristaId} was found."));