예제 #1
0
 private void AssertNotConsumed()
 {
     if (_isConsumed)
     {
         throw ErrorExtensions.NewResultConsumedException();
     }
 }
        public void OnFailure(string code, string message)
        {
            LogFailure(code, message);
            var handler = Dequeue();

            _error = new ResponsePipelineError(ErrorExtensions.ParseServerException(code, message));
            handler.OnFailure(_error);
        }
예제 #3
0
            public void ConvertWriteClusterErrorToSessionExpiredError(string code)
            {
                var connMock    = new Mock <IConnection>();
                var handlerMock = new Mock <IClusterErrorHandler>();
                var clusterConn = new ClusterConnection(connMock.Object, Uri, AccessMode.Write, handlerMock.Object);

                var inError  = ErrorExtensions.ParseServerException(code, null);
                var outError = Record.Exception(() => clusterConn.OnError(inError));

                outError.Should().BeOfType <SessionExpiredException>();
                handlerMock.Verify(x => x.OnConnectionError(Uri, inError), Times.Never);
                handlerMock.Verify(x => x.OnWriteError(Uri), Times.Once);
            }
            public async Task ConvertWriteClusterErrorToSessionExpiredError(string code)
            {
                var handlerMock = new Mock <IClusterErrorHandler>();
                var clusterConn =
                    new ClusterConnection(CreateConnectionWithMode(AccessMode.Write), Uri, handlerMock.Object);

                var inError  = ErrorExtensions.ParseServerException(code, null);
                var outError = await Record.ExceptionAsync(() => clusterConn.OnErrorAsync(inError));

                outError.Should().BeOfType <SessionExpiredException>();
                handlerMock.Verify(x => x.OnConnectionErrorAsync(Uri, inError), Times.Never);
                handlerMock.Verify(x => x.OnWriteError(Uri), Times.Once);
            }
        public IResult GetOrder(Guid id)
        {
            var order = _repository.Get(id);

            if (order == null)
            {
                return(ErrorExtensions.CreateNotification("id", "Nenhum pedido encontrado"));
            }

            var output = _mapper.Map <OrderModelOutput>(order);

            return(new Result <OrderModelOutput>(output, "Pedido obtido com sucesso!", true));
        }
예제 #6
0
        public IActionResult CloseOrder([FromRoute] string id)
        {
            if (Guid.TryParse(id, out var idGuid) == false)
            {
                return(GenerateResponse(HttpStatusCode.BadRequest, ErrorExtensions.CreateNotification("id", "Identificador inválido")));
            }

            var response = _service.CloseOrder(idGuid);

            if (response.Success)
            {
                return(GenerateResponse(HttpStatusCode.OK, response));
            }

            return(GenerateResponse(HttpStatusCode.BadRequest, response));
        }
예제 #7
0
        public IActionResult RemoveItem([FromRoute] string orderId, [FromRoute] string id)
        {
            if (Guid.TryParse(orderId, out var orderIdGuid) == false | Guid.TryParse(id, out var idGuid) == false)
            {
                return(GenerateResponse(HttpStatusCode.BadRequest, ErrorExtensions.CreateNotification("id", "Identificador inválido")));
            }

            var response = _service.RemoveItem(new RemoveItemModel(idGuid, orderIdGuid));

            if (response.Success)
            {
                return(GenerateResponse(HttpStatusCode.OK, response));
            }

            return(GenerateResponse(HttpStatusCode.BadRequest, response));
        }
예제 #8
0
		public static string ToHtml(this Error e)
		{
			StringBuilder stringBuilder = new StringBuilder();

			stringBuilder.Append("<h3>Error</h3>");
			stringBuilder.Append("<strong>|Message|</strong> " + e.Message + "<br/>");
			stringBuilder.Append("<strong>|Error Level|</strong> " + e.ErrorLevel + "<br/>");
			stringBuilder.Append("<strong>|Source|</strong> " + e.Source + "<br/>");
			stringBuilder.Append("<strong>|Additional Information|</strong> " + e.AdditionalInformation + "<br/>");
			stringBuilder.AppendLine("<strong>[Stack Trace|</strong><br/>");
			foreach (string item in ErrorExtensions.GetStackStraceStrings(e.StackTrace))
				stringBuilder.AppendLine(
					"&nbsp;&nbsp;&nbsp;" 
					+ item.Replace("<", "").Replace(">", "") 
					+ "<br/>");

			return "<div>" + stringBuilder + "</div>";
		}
        public IResult CloseOrder(Guid id)
        {
            var order = _repository.Get(id);

            if (order == null)
            {
                return(ErrorExtensions.CreateNotification("id", "Nenhum pedido encontrado"));
            }

            order.Close();

            if (order.IsValid())
            {
                _repository.Update(order);
                var output = _mapper.Map <OrderModelOutput>(order);
                return(new Result <OrderModelOutput>(output, "Pedido fechado com sucesso!", true));
            }

            return(order.GetNotifications());
        }
        public IResult RemoveItem(RemoveItemModel model)
        {
            var order = _repository.Get(model.OrderId);

            if (order == null)
            {
                return(ErrorExtensions.CreateNotification("id", "Nenhum pedido encontrado"));
            }

            order.RemoveItem(model.Id);

            if (order.IsValid())
            {
                _repository.Update(order);
                var output = _mapper.Map <OrderModelOutput>(order);
                return(new Result <OrderModelOutput>(output, "Item removido com sucesso!", true));
            }

            return(order.GetNotifications());
        }
        public IResult PaidOrder(PaidOrderModel model)
        {
            var order = _repository.Get(model.Id);

            if (order == null)
            {
                return(ErrorExtensions.CreateNotification("id", "Nenhum pedido encontrado"));
            }

            order.Paid(model.TotalPaidInCents);

            if (order.IsValid())
            {
                _repository.Update(order);
                var output = _mapper.Map <OrderModelOutput>(order);
                return(new Result <OrderModelOutput>(output, "Pedido pago com sucesso!", true));
            }

            return(order.GetNotifications());
        }
        public IResult AddItem(AddItemModel model)
        {
            var order = _repository.Get(model.OrderId);

            if (order == null)
            {
                return(ErrorExtensions.CreateNotification("id", "Nenhum pedido encontrado"));
            }

            var item = _mapper.Map <Item>(model);

            order.AddItem(item);

            if (order.IsValid())
            {
                _repository.Update(order);
                var output = _mapper.Map <ItemModelOutput>(item);
                return(new Result <ItemModelOutput>(output, "Item adicionado com sucesso!", true));
            }

            return(order.GetNotifications());
        }
예제 #13
0
        public IActionResult PaidOrder([FromRoute] string id, [FromBody] PaidOrderModel model)
        {
            if (Guid.TryParse(id, out var idGuid) == false)
            {
                return(GenerateResponse(HttpStatusCode.BadRequest, ErrorExtensions.CreateNotification("id", "Identificador inválido")));
            }

            if (ModelState.IsValid == false)
            {
                return(GenerateBadRequestResponse());
            }

            model.Id = idGuid;
            var response = _service.PaidOrder(model);

            if (response.Success)
            {
                return(GenerateResponse(HttpStatusCode.OK, response));
            }

            return(GenerateResponse(HttpStatusCode.BadRequest, response));
        }