Exemplo n.º 1
0
 public void Operation(User entity, Operation operation)
 {
     if (operation.OperationType == OperationTypeEnum.Buy)
     {
         if (CanBuy(entity, operation.TotalValue))
         {
             //Executa a compra
             //inclui uma nova ação na lista e decrementa valor na conta
             var account = entity.Accounts.FirstOrDefault();
             if (account.TotalBalance >= operation.TotalValue)
             {
                 account.TotalBalance = (account.TotalBalance - operation.TotalValue);
                 _operationRepository.Insert(operation);
                 _operationRepository.Commit();
             }
         }
     }
     else
     {
         if (CanSell(entity, operation.Symbol, operation.Quantity))
         {
             //Executa a venda
             //verifica se existe ação
             //se não houver, lança erro
             //se houver e não tiver quantidade, lança erro
             //se houver, diminuir valor e atualizar.
         }
     }
 }
Exemplo n.º 2
0
        public IActionResult Create([FromBody] OperationViewModel operation)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Operation _operation = Mapper.Map <OperationViewModel, Operation>(operation);

            _operation.CreateDate = DateTime.Now;

            _operationRepository.Add(_operation);
            _operationRepository.Commit();

            operation = Mapper.Map <Operation, OperationViewModel>(_operation);

            CreatedAtRouteResult result = CreatedAtRoute("GetOperation", new { controller = "Operation", id = operation.Id }, operation);

            return(result);
        }
Exemplo n.º 3
0
        public IActionResult CardInitiate([FromBody] CardViewModel cardViewModel)
        {
            long cardNo = Core.Extensions.CardNoDecrypt(cardViewModel.SellerCode);
            var  seller = _sellerRepository.FindBy(x => x.MinRange <= cardNo && x.MaxRange >= cardNo).FirstOrDefault();

            if (seller != null)
            {
                Sale sale = new Sale()
                {
                    CardNo     = cardViewModel.CardNo,
                    IsActive   = true,
                    IsDeleted  = false,
                    Price      = 0,
                    SellerId   = seller.Id,
                    UpdateDate = DateTime.Now,
                    CreateDate = DateTime.Now
                };
                Operation operation = new Operation()
                {
                    IsActive      = true,
                    IsDeleted     = false,
                    Discount      = 0,
                    CreateDate    = DateTime.Now,
                    UpdateDate    = DateTime.Now,
                    SellerId      = seller.Id,
                    OperationType = Model.Enumration.OperationType.CardInitiate
                };
                _saleRepository.Add(sale);
                _saleRepository.Commit();

                _operationRepository.Add(operation);
                _operationRepository.Commit();

                return(new OkObjectResult("Success"));
            }
            else
            {
                return(new NotFoundObjectResult("Fail"));
            }
        }