コード例 #1
0
        public async Task <ActionResult> Post([FromBody] CreateCustomerCommand command)
        {
            var commandResult = await _customerHandler.Handle(command);

            if (!commandResult.Success)
            {
                return(BadRequest(commandResult.Data));
            }

            return(Ok(commandResult.Data));
        }
コード例 #2
0
        public async Task GiveGetCustomerQueryWhenHandleThenCustomerDetails()
        {
            // Arrange
            var expect = new Customer
            {
                Age        = 35,
                City       = "Chennai",
                Country    = "India",
                Name       = "Mark",
                State      = "Tamil Nadu",
                CustomerId = Guid.NewGuid(),
            };
            var mockMapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new CustomerProfile());
            });
            var mapper = mockMapper.CreateMapper();
            var redis  = A.Fake <ICustomerRedisContext>();

            A.CallTo(() => redis.GetCustomer(expect.CustomerId)).Returns(expect);
            var handle = new CustomerHandler(mapper, redis);

            // Act
            var response = await handle.Handle(new GetCustomerRequest(expect.CustomerId), A.Dummy <CancellationToken>()).ConfigureAwait(false);

            // Assert
            Assert.Equal(35, response.Age);
        }
コード例 #3
0
        public async Task <ActionResult <GenericCommandResult> > AddCreditCard(
            [FromBody] CreateCustomerCreditCardCommand command,
            [FromServices] CustomerHandler handler
            )
        {
            var role       = User.Claims.FirstOrDefault(x => x.Type.Equals(ClaimTypes.Role))?.Value;
            var customerId = int.Parse(User.Claims.FirstOrDefault(x => x.Type.Equals(ClaimTypes.NameIdentifier))?.Value);

            if (command.CustomerId == 0)
            {
                command.CustomerId = customerId;
            }

            if (customerId != command.CustomerId && role != "manager")
            {
                return(Unauthorized());
            }

            var validationResult = command.Validate();

            if (!validationResult.Success)
            {
                return(BadRequest(validationResult));
            }

            var result = (GenericCommandResult)handler.Handle(command);

            if (result.Data == null)
            {
                return(NotFound(result));
            }

            return(Ok(result));
        }
コード例 #4
0
        public async Task <ActionResult <GenericCommandResult> > removeAddress(
            [FromBody] RemoveCustomerAddresCommand command,
            [FromServices] CustomerHandler handler
            )
        {
            var role       = User.Claims.FirstOrDefault(x => x.Type.Equals(ClaimTypes.Role))?.Value;
            var customerId = int.Parse(User.Claims.FirstOrDefault(x => x.Type.Equals(ClaimTypes.NameIdentifier))?.Value);

            if (command.CustomerId == 0)
            {
                command.CustomerId = customerId;
            }

            if (customerId != command.CustomerId && role != "manager")
            {
                return(Unauthorized());
            }

            var result = (GenericCommandResult)handler.Handle(command);

            if (result.Data == null)
            {
                return(NotFound(result));
            }

            return(Ok(result));
        }
コード例 #5
0
        public async Task <ActionResult <GenericCommandResult> > UpdatePersonData(
            [FromBody] UpdateCustomerPersonDataCommand command,
            [FromServices] CustomerHandler handler,
            [FromServices] ICustomerRepository repository
            )
        {
            var email = User.Claims.FirstOrDefault(x => x.Type.Equals(ClaimTypes.Email))?.Value;
            var role  = User.Claims.FirstOrDefault(x => x.Type.Equals(ClaimTypes.Role))?.Value;

            var customer = repository.GetByEmail(command.Email);

            command.MergeEntity(customer);

            if (email != command.Email && role != "manager")
            {
                return(Unauthorized());
            }

            var validationResult = command.Validate();

            if (!validationResult.Success)
            {
                return(BadRequest(validationResult));
            }

            var result = handler.Handle(command);

            return(Ok(result));
        }
コード例 #6
0
        public async Task <ActionResult <GenericCommandResult> > Create(
            [FromBody] CreateCustomerCommand command,
            [FromServices] CustomerHandler handler,
            [FromServices] UserHandler userHandler
            )
        {
            var validationResult = command.Validate();

            if (!validationResult.Success)
            {
                return(BadRequest(validationResult));
            }

            var userResult = (GenericCommandResult)userHandler.Handle(new CreateUserCommand(command.Email, command.Password, "customer"));

            if (userResult.Success)
            {
                var user = (User)userResult.Data;
                command.SetUserId(user.Id);


                var result = handler.Handle(command);
                return(Ok(result));
            }

            return(BadRequest(userResult));
        }
コード例 #7
0
        public void ShouldNotRegisterCustomerWhenDocumentExists()
        {
            _command.Document = "22328792910";
            _command.Username = "******";
            var handler = new CustomerHandler(new MockCustomerRepository());
            var result  = handler.Handle(_command);

            Assert.AreEqual(null, result);
            Assert.AreNotEqual(true, handler.Valid);
        }
コード例 #8
0
        public void ShouldNotRegisterCustomerWhenUsernameExistis()
        {
            _command.Document = "46718115533";
            _command.Username = "******";
            var handler = new CustomerHandler(new MockCustomerRepository());
            var result  = handler.Handle(_command);

            Assert.AreEqual(null, result);
            Assert.AreNotEqual(true, handler.Valid);
        }
コード例 #9
0
        public ICommandResult Post([FromBody] CreateCustomerCommand command)
        {
            var result = (CreateCustomerCommandResult)_handler.Handle(command);

            return(result);
            // var name = new Name(command.FirstName, command.LastName);
            // var document = new Document(command.Document);
            // var email = new Email(command.Email);
            // var customer = new Customer(name, document, email, command.Phone);
            // return customer;
        }
コード例 #10
0
        public object Post([FromBody] CreateCustomerCommand customerCommand)
        {
            var result = (CreatCustomerCommandResult)_customerHandler.Handle(customerCommand);

            if (_customerHandler.Invalid)
            {
                return(BadRequest(_customerHandler.Notifications));
            }

            return(result);
        }
コード例 #11
0
        public async void ShouldValidFalseWhenEmailIsNotAvailable()
        {
            var customerRepository = new MockCustomerRepository();

            var customerHandler = new CustomerHandler(customerRepository);

            var createCustomerCommand = new CreateCustomerCommand("Steve", "Rogers", "61946855065", "*****@*****.**", "016999999999");

            await customerHandler.Handle(createCustomerCommand, CancellationToken.None);

            Assert.False(customerHandler.Valid);
        }
コード例 #12
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Edvilson";
            command.LastName  = "Almeida";
            command.Document  = "12345678910";
            command.Email     = "*****@*****.**";
            command.Phone     = "519999999997";
            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreEqual(null, result);
            Assert.AreEqual(0, handler.Invalid);
        }
コード例 #13
0
        public void ShouldReturnNullWhenCommandIsInvalid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Felipe";
            command.LastName  = "Bossolani";
            command.Document  = "26124258618";
            command.Email     = "felipegmail.com";
            command.Phone     = "11999999999";

            var handler       = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var commandResult = handler.Handle(command);

            Assert.IsNull(commandResult);
        }
コード例 #14
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();
            command.FirstName = "Marcio";
            command.LastName = "Costa Rodrigues";
            command.Document = "12345678909";
            command.Email = "*****@*****.**";
            command.Phone = "14999999999";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.IsValid);
        }
コード例 #15
0
        public async ValueTask <IActionResult> GetCustomers([FromBody] GetCustomerByCPFCommandInput command, [FromServices] CustomerHandler handler)
        {
            try
            {
                var result = await handler.Handle(command);

                return(GetResult(result));
            }
            catch (Exception exception)
            {
                _logger.LogError("An exception has occurred at {dateTime}. " +
                                 "Exception message: {message}." +
                                 "Exception Trace: {trace}", DateTime.UtcNow, exception.Message, exception.StackTrace);
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
コード例 #16
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Michael";
            command.LastName  = "Muniz";
            command.Document  = "27728919415";
            command.Email     = "*****@*****.**";
            command.Phone     = "11999999999";

            var handle = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result = handle.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handle.IsValid);
        }
コード例 #17
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Juca";
            command.LastName  = "Bala";
            command.Document  = "28659170377";
            command.Email     = "*****@*****.**";
            command.Phone     = "44454556654";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.IsValid);
        }
コード例 #18
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Daniel";
            command.LastName  = "Rodrigues";
            command.Document  = "16165093760";
            command.Email     = "*****@*****.**";
            command.Phone     = "21988808420";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.IsValid);
        }
コード例 #19
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Otavio";
            command.LastName  = "Araujo";
            command.Document  = "467181155";
            command.Email     = "*****@*****.**";
            command.Phone     = "551999876542";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.Valid);
        }
コード例 #20
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Raphael";
            command.LastName  = "França";
            command.Document  = "28659170377";
            command.Email     = "*****@*****.**";
            command.Phone     = "11999999997";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.IsValid);
        }
コード例 #21
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Gabriel";
            command.LastName  = "Petrovick";
            command.Document  = "10180179683";
            command.Email     = "*****@*****.**";
            command.Phone     = "34998387096";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.Valid);
        }
コード例 #22
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Rhuan";
            command.LastName  = "Carvalho";
            command.Document  = "28659170377";
            command.Email     = "*****@*****.**";
            command.Phone     = "21999999991";

            var handler = new CustomerHandler(new MockCustomerRepository(), new MockEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.IsValid);
        }
コード例 #23
0
        public void ShouldRegisterCustomerCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Matheus";
            command.LastName  = "Cruz";
            command.Document  = "05360671718";
            command.Email     = "*****@*****.**";
            command.Phone     = "21999999999";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.IsValid);
        }
コード例 #24
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "George";
            command.LastName  = "Wurthmann";
            command.Document  = "28659170377";
            command.Email     = "*****@*****.**";
            command.Phone     = "11999999997";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.NotNull(result);
            Assert.True(handler.Valid);
        }
コード例 #25
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "João";
            command.LastName  = "Faustino";
            command.Document  = "12345678910";
            command.Email     = "*****@*****.**";
            command.Phone     = "11987654321";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.IsValid);
        }
コード例 #26
0
        public void Deve_registrar_um_cliente_quando_comando_valido()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "André";
            command.LastName  = "Ferreira";
            command.Document  = "11252529015";
            command.Email     = "*****@*****.**";
            command.Phone     = "17999999999";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.IsValid);
        }
コード例 #27
0
        public void DeveRegistrarOClienteQuandoOCommandForValido()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Cristiano";
            command.LastName  = "Cunha";
            command.Document  = "03552114599";
            command.Email     = "*****@*****.**";
            command.Phone     = "199389798";

            var customerHandler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result          = customerHandler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, customerHandler.Valid);
        }
コード例 #28
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Guilherme";
            command.LastName  = "Filenga";
            command.Document  = "44169225821";
            command.Email     = "*****@*****.**";
            command.Phone     = "5511998924722";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.IsValid);
        }
コード例 #29
0
        public void ShouldRegisterCustomerWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Ricardo";
            command.LastName  = "Silva";
            command.Document  = "13230609018";
            command.Email     = "*****@*****.**";
            command.Phone     = "5521999999999";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.IsValid);
        }
コード例 #30
0
        public void ShouldRegisterWhenCommandIsValid()
        {
            var command = new CreateCustomerCommand();

            command.FirstName = "Thiago";
            command.LastName  = "Cruz";
            command.Document  = "14220929762";
            command.Email     = "*****@*****.**";
            command.Phone     = "21969716652";

            var handler = new CustomerHandler(new FakeCustomerRepository(), new FakeEmailService());
            var result  = handler.Handle(command);

            Assert.AreNotEqual(null, result);
            Assert.AreEqual(true, handler.IsValid);
        }