Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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."));