Exemplo n.º 1
0
        public PurchaseOrderServiceTest()
        {
            _calculatorRuleService = new CalculatorRuleService(new NullLoggerFactory());
            _resellerRepository    = new Mock <IResellerRepository>();
            _repository            = new Mock <IPurchaseOrderRepository>();
            _service = new PurchaseOrderService(_resellerRepository.Object, _repository.Object, _calculatorRuleService, new NullLoggerFactory());

            _validReseller = new Reseller()
            {
                Id           = Guid.NewGuid(),
                CPF          = "153.509.460-56",
                AutoApproved = true,
                Name         = "Usuário [153.509.460-56]",
                Email        = "*****@*****.**",
                Password     = "******"
            };

            _validNewNewPurchaseOrderModel = new NewPurchaseOrderModel()
            {
                CPF   = _validReseller.CPF,
                Date  = DateTime.Now.Date,
                Value = 600
            };

            TinyMapperConfiguration.AddTinyMapperConfiguration(null);
        }
Exemplo n.º 2
0
        public PurchaseOrderIntegrationTest(TestFixtures <Startup> fixture)
        {
            _fixture    = fixture;
            _httpClient = fixture.Client;

            _validNewNewPurchaseOrderModel = new NewPurchaseOrderModel()
            {
                CPF   = "153.509.460-56",
                Date  = DateTime.Now.Date,
                Value = 600
            };
        }
Exemplo n.º 3
0
        public async Task <PurchaseOrder> Add(NewPurchaseOrderModel model)
        {
            Validate(model);
            var reseller = GetReseller(model.CPF);
            var status   = reseller.AutoApproved ? Constants.PURCHASE_STATUS_APPROVED : Constants.PURCHASE_STATUS_WAITING_APPROVAL;
            var purchase = TinyMapper.Map <PurchaseOrder>(model);

            purchase.Id         = Guid.NewGuid();
            purchase.Status     = status;
            purchase.ResellerId = reseller.Id;
            await _purchaseRepository.Add(purchase);

            _logger.LogInformation($"[PurchaseOrderService/Add] Compra {purchase.Id} adicionada");
            return(purchase);
        }
        public async Task <IActionResult> Post(NewPurchaseOrderModel model)
        {
            try
            {
                _logger.LogInformation("New Purchase");
                var item = await _purchaseOrderService.Add(model);

                return(StatusCode(StatusCodes.Status201Created, TinyMapper.Map <PurchaseOrderModel>(item)));
            }
            catch (CashbackServiceException ex)
            {
                _logger.LogWarning($"BadRequest - {ex.Message}");
                return(BadRequest(new { message = ex.Message }));
            }
            catch (Exception ex)
            {
                _logger.LogError($"Error - {ex.Message}");
                return(StatusCode(StatusCodes.Status500InternalServerError, new { message = ex.Message }));
            }
        }
Exemplo n.º 5
0
        private void Validate(NewPurchaseOrderModel model)
        {
            if (model == null)
            {
                throw new CashbackServiceException(Messages.NullObject);
            }

            if (!Validators.CPFIsValid(model.CPF))
            {
                throw new CashbackServiceException(Messages.ResellerCPFInvalid);
            }

            if (GetReseller(model.CPF) == null)
            {
                throw new CashbackServiceException(Messages.ResellerNotFoundByCPF);
            }

            if (model.Value <= 0)
            {
                throw new CashbackServiceException(Messages.PurchaseValueMustBeGreaterThanZero);
            }
        }