public async Task CriarAsync(Guid aggregateId, string nome, string cnpj, int cidadeId, string cep, string logradouro, int numero, string bairro, string complemento, List <Tuple <int, string> > telefones, List <Tuple <int, string> > emails)
        {
            if (nome.IsNullOrWhiteSpace())
            {
                throw new InstituicaoDeEnsino.NomeObrigatorioException();
            }
            if (cnpj.IsNullOrWhiteSpace())
            {
                throw new InstituicaoDeEnsino.CnpjObrigatorioException();
            }

            var endereco            = new Endereco(cidadeId, cep, logradouro, numero, bairro, complemento);
            var pessoa              = new Pessoa(aggregateId, nome, EPessoaTipo.PessoaJuridica, endereco);
            var instituicaoDeEnsino = new InstituicaoDeEnsino(cnpj, pessoa);

            foreach (var(tipoId, telefone) in telefones)
            {
                pessoa.Telefones.Add(new Telefone((ETelefoneTipo)tipoId, telefone));
            }

            foreach (var(tipoId, email) in emails)
            {
                pessoa.Emails.Add(new Email((EEmailTipo)tipoId, email));
            }

            await _repository.CriarAsync(instituicaoDeEnsino);
        }