public void AtualizarUsuarioTela(UsuarioTela usuarioTela)
        {
            var query = "UPDATE UsuarioTelas SET Incluir = :Incluir, Atualizar = :Atualizar, Excluir = :Excluir, Consultar = :Consultar WHERE Id = :Id AND IdUsuario = :IdUsuario AND IdTela = :IdTela";

            var param = new DynamicParameters();

            param.Add(name: "Id", value: usuarioTela.Id, direction: ParameterDirection.Input);
            param.Add(name: "IdUsuario", value: usuarioTela.UsuarioBase.Id, direction: ParameterDirection.Input);
            param.Add(name: "IdTela", value: usuarioTela.Tela.Id, direction: ParameterDirection.Input);
            param.Add(name: "Incluir", value: (int)usuarioTela.Incluir, direction: ParameterDirection.Input);
            param.Add(name: "Atualizar", value: (int)usuarioTela.Atualizar, direction: ParameterDirection.Input);
            param.Add(name: "Excluir", value: (int)usuarioTela.Excluir, direction: ParameterDirection.Input);
            param.Add(name: "Consultar", value: (int)usuarioTela.Consultar, direction: ParameterDirection.Input);

            _context.Connection.Execute(query, param);
        }
        public ICommandResult Handle(CriarUsuarioTelaCommand command)
        {
            if (!command.IsValidCommand())
            {
                return(new CommandResult(false, "Por favor, corrigir os campos abaixo", command.Notifications));
            }

            var usuario = _repository.UsuarioBase(command.IdUsuario);

            if (usuario == null)
            {
                return(new CommandResult(false, "O usuario não existe na base de dados", new { }));
            }

            var tela = _repository.Tela(command.IdTela);

            if (tela == null)
            {
                return(new CommandResult(false, "A tela não existe na base de dados", new { }));
            }

            if (_repository.UsuarioTelaExistente(command.IdUsuario, command.IdTela))
            {
                return(new CommandResult(false, $"O usuário { usuario.Id } - { usuario.Login.Usuario } já está relacionado com a tela { tela.Id } - { tela.Titulo }", new { }));
            }

            var usuarioTela = new UsuarioTela(usuario, tela);

            AddNotifications(usuarioTela);

            if (Invalid)
            {
                return(new CommandResult(false, "Por favor, corrigir os campos abaixo", Notifications));
            }

            _repository.SalvarUsuarioTela(usuarioTela);

            return(new CommandResult(true, "Pemissão cadastrada com sucesso", new
            {
                Usuario = usuario.Login.Usuario,
                Tela = $"{ tela.Id } - { tela.Titulo }"
            }));
        }
        public void SalvarUsuarioTela(UsuarioTela usuarioTela)
        {
            var query = @"INSERT INTO UsuarioTelas (IdUsuario, IdTela, Incluir, Atualizar, Excluir, Consultar, DataCadastro) VALUES (:IdUsuario, :IdTela, :Incluir, :Atualizar, :Excluir, :Consultar, :DataCadastro) returning Id into :Id";

            var param = new DynamicParameters();

            param.Add(name: "Id", dbType: DbType.Int32, direction: ParameterDirection.Output);
            param.Add(name: "IdUsuario", value: usuarioTela.UsuarioBase.Id, direction: ParameterDirection.Input);
            param.Add(name: "IdTela", value: usuarioTela.Tela.Id, direction: ParameterDirection.Input);
            param.Add(name: "Incluir", value: (int)usuarioTela.Incluir, direction: ParameterDirection.Input);
            param.Add(name: "Atualizar", value: (int)usuarioTela.Atualizar, direction: ParameterDirection.Input);
            param.Add(name: "Excluir", value: (int)usuarioTela.Excluir, direction: ParameterDirection.Input);
            param.Add(name: "Consultar", value: (int)usuarioTela.Consultar, direction: ParameterDirection.Input);
            param.Add(name: "DataCadastro", value: usuarioTela.DataCadatro, direction: ParameterDirection.Input);

            _context.Connection.Execute(query, param);

            // Retorno do id gerado na base
            //var Id = param.Get<int>("Id");
        }