Exemple #1
0
        public void Execute(NewTenantArgs args)
        {
            using (var conn = this.connectionFactory())
                using (var session = SqlSession.Open(conn))
                {
                    var repo = new SqlRepository(session);
                    var cmd  = new NewTenantCommand(repo);
                    var req  = Mapper.Map <NewTenantRequest>(args);
                    var res  = cmd.Execute(req);

                    res.MatchSome(x =>
                    {
                        session.Commit();
                        Log.Information(
                            "Created tenant {TenantName} with id {TenantId}",
                            x.Tenant.Name,
                            x.Tenant.Id);
                    });

                    res.MatchNone(x =>
                    {
                        session.Rollback();
                        Log.Error(x, "Failed to create tenant");
                    });
                }
        }
 public static Tenant Build(Guid id, NewTenantCommand command)
 {
     return(new Tenant
     {
         Id = id,
         Name = command.Name,
         Cnpj = command.Cnpj
     });
 }
Exemple #3
0
        public List <IEvent> Register(Guid id, NewTenantCommand command)
        {
            var tenant = Tenant.Factory.Build(id, command);

            if (!tenant.IsValid())
            {
                this.Notify(tenant.Notifications);
                return(null);
            }

            var user = tenant.RegisterUser(command.Username, command.Password);

            //TODO : Criar mecanismo de transação
            _tenantRepository.Create(tenant);
            _userRepository.Create(user);

            return(new List <IEvent>
            {
                new TenantRegistered(tenant)
            });
        }
        public static void Main(string[] args)
        {
            var newTenant = new NewTenantCommand
            {
                Name     = "Yan Justino",
                Username = "******",
                Password = "******",
                Cnpj     = "12345678901234"
            };

            var id     = _tentantQueryRepoisotry.NextId();
            var events = _service.Register(id, newTenant);

            if (!_service.IsValid())
            {
                Console.WriteLine(_service.StringfyNotifications());
            }
            else
            {
                ApiService.Publishers.EventPublisher.Publish(events);
            }

            Console.Read();
        }