Exemple #1
0
        private void AddOrRemoveOrderedItems(Order order, SavedOrderDto orderDto)
        {
            try
            {
                var addedOrderItems =
                    orderDto.OrderedItems.Where(oid => order.OrderedItems.All(oi => oi.ProductId != oid.ProductId))
                    .ToList();
                foreach (var orderItemDto in addedOrderItems)
                {
                    order.AddItem(orderItemDto.ProductId, orderItemDto.Quantity);
                }

                var removedOrderedItems =
                    order.OrderedItems.Where(oi => orderDto.OrderedItems.Any(oir => oir.ProductId != oi.ProductId))
                    .ToList();
                foreach (var item in removedOrderedItems)
                {
                    order.RemoveItem(item);
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
Exemple #2
0
        public async Task <IServiceResult> CreateAsync(SavedOrderDto orderDto)
        {
            try
            {
                var order = _mapper.Map <SavedOrderDto, Order>(orderDto);

                await _repository.AddAsync(order);

                foreach (var orderItem in orderDto.OrderedItems)
                {
                    order.AddItem(orderItem.ProductId, orderItem.Quantity);
                    _logger.LogError($"Added product with id {orderItem.ProductId} to order with id {order.Id}.");
                }

                if (!await _unitOfWork.CompleteAsync())
                {
                    throw new SaveFailedException(nameof(order));
                }
                _logger.LogInformation($"Added new {nameof(order)} with id: {order.Id}.");

                var result = await GetSingleAsync(order.Id.ToString());

                return(new ServiceResult(payload: result.Payload));
            }
            catch (Exception e)
            {
                _logger.LogError($"Adding new order failed. {e.Message}");

                return(new ServiceResult(false, e.Message));
            }
        }
Exemple #3
0
        public async Task <IServiceResult> UpdateAsync(string id, SavedOrderDto orderDto)
        {
            try
            {
                var orderId = id.ToGuid();
                var order   = await _repository.GetSingleAsync(orderId);

                _mapper.Map(orderDto, order);

                AddOrRemoveOrderedItems(order, orderDto);

                if (!await _unitOfWork.CompleteAsync())
                {
                    throw new SaveFailedException(nameof(order));
                }
                _logger.LogInformation($"Updated {nameof(order)} with id: {order.Id}");

                var result = await GetSingleAsync(order.Id.ToString());

                return(new ServiceResult(payload: result.Payload));
            }
            catch (Exception e)
            {
                _logger.LogError($"Updating order with id: {id} failed. {e.Message}");

                return(new ServiceResult(false, e.Message));
            }
        }