示例#1
0
        public async Task <IActionResult> Create([FromBody] SavedOrderResource resource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var order = _mapper.Map <SavedOrderResource, Order>(resource);

            await _unitOfWork.OrderRepository.AddAsync(order);

            if (!await _unitOfWork.CompleteAsync())
            {
                _logger.LogMessage(LoggingEvents.SavedFail, ApplicationConstants.ControllerName.Order, order.Id);

                return(FailedToSave(order.Id));
            }

            order = await _unitOfWork.OrderRepository.GetOrder(order.Id, false);


            _logger.LogMessage(LoggingEvents.Created, ApplicationConstants.ControllerName.Order, order.Id);

            return(Ok(order.Id));
        }
示例#2
0
        public async Task <IActionResult> Update(string id, [FromBody] SavedOrderResource savedOrderResource)
        {
            bool isValid = Guid.TryParse(id, out var orderId);

            if (!isValid)
            {
                return(InvalidId(id));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var order = await _unitOfWork.OrderRepository.GetOrder(orderId);

            if (order == null)
            {
                return(NotFound(orderId));
            }

            if (order.UserId != User.GetUserId())
            {
                return(UnAuthorized());
            }

            _mapper.Map(savedOrderResource, order);

            if (!await _unitOfWork.CompleteAsync())
            {
                _logger.LogMessage(LoggingEvents.SavedFail, ApplicationConstants.ControllerName.Order, order.Id);

                return(FailedToSave(order.Id));
            }

            order = await _unitOfWork.OrderRepository.GetOrder(order.Id);

            var result = _mapper.Map <Order, SavedOrderResource>(order);

            _logger.LogMessage(LoggingEvents.Updated, ApplicationConstants.ControllerName.Order, order.Id);

            return(Ok(result));
        }