示例#1
0
        public async Task WhenAsync(CreateMovementDto c)
        {
            var idObj         = (c as ICreateMovement).DocumentNumber;
            var uriParameters = new MovementUriParameters();

            uriParameters.Id = idObj;

            var req = new MovementPutRequest(uriParameters, (CreateMovementDto)c);

            var resp = await _ramlClient.Movement.Put(req);

            MovementProxyUtils.ThrowOnHttpResponseError(resp);
        }
示例#2
0
        public HttpResponseMessage Post([FromBody] CreateMovementDto value)
        {
            try {
                if (value.DocumentNumber == default(string))
                {
                    throw DomainError.Named("nullId", "Aggregate Id in cmd is null, aggregate name: {0}.", "Movement");
                }
                _movementApplicationService.When(value as ICreateMovement);
                var idObj = value.DocumentNumber;

                return(Request.CreateResponse <string>(HttpStatusCode.Created, idObj));
            } catch (Exception ex) { var response = HttpServiceExceptionUtils.GetErrorHttpResponseMessage(ex); throw new HttpResponseException(response); }
        }
示例#3
0
        public async Task Create(CreateMovementDto input)
        {
            var userId = 1;

            if (AbpSession.UserId != null)
            {
                userId = unchecked ((int)AbpSession.UserId);
            }

            User user = await _userManager.FindByIdAsync(userId);

            Product product = _productManager.GetProductByID(input.Product);

            input.PreviousQtd = product.Stock;
            input.CurrentQtd  = input.Quantity;

            if (input.CurrentQtd < 0)
            {
                throw new UserFriendlyException("A quantidade a ser retirada deve ser menor ou igual ao estoque deste produto!");
            }

            product.Stock = input.CurrentQtd;
            _productManager.Update(product);

            var saveInput = new Movement();

            saveInput.Product     = product;
            saveInput.User        = user;
            saveInput.PreviousQtd = input.PreviousQtd;
            saveInput.CurrentQtd  = input.CurrentQtd;

            if (saveInput.PreviousQtd < saveInput.CurrentQtd)
            {
                saveInput.Signal = "+";
            }

            else if (saveInput.PreviousQtd > saveInput.CurrentQtd)
            {
                saveInput.Signal = "-";
            }

            else
            {
                saveInput.Signal = "=";
            }

            await _movementManager.Create(saveInput);
        }
示例#4
0
        public IActionResult AddMovement([FromRoute] string id, [FromBody] CreateMovementDto input)
        {
            try
            {
                if (Guid.TryParse(id, out var guid) && _database.TryGetValue(guid, out var game))
                {
                    // Se o jogo ja tiver finalizado antes da jogada
                    // pela doc, não da ideia que um erro deveria ser retornado
                    // mas sim o resultado do jogo
                    if (game.IsFinish)
                    {
                        return(ReturnGameResult(game));
                    }

                    // fazemos o movimento
                    var move = game.MakeAMove(input.Player, input.Position.X, input.Position.Y);

                    // Se o jogo terminar após jogada
                    if (game.IsFinish)
                    {
                        return(ReturnGameResult(game));
                    }

                    return(Ok(new
                    {
                        msg = "Movimento realizado"
                    }));
                }

                return(NotFound(new
                {
                    msg = "Partida não encontrada"
                }));
            }
            catch (InvalidOperationException ex)
            {
                return(BadRequest(new
                {
                    msg = ex.Message
                }));
            }
        }
示例#5
0
 public void When(CreateMovementDto c)
 {
     WhenAsync(c).GetAwaiter().GetResult();
 }