예제 #1
0
        public Manilha(string nome, int peso)
        {
            ExcecaoDeDominio.Quando(string.IsNullOrEmpty(nome), "Nome da manilha é obrigatório");

            Nome = nome;
            Peso = peso;
        }
예제 #2
0
        public virtual SolicitacaoDeManutencao Fabricar(SolicitacaoDeManutencaoDto dto)
        {
            var subsidiaria = _subsidiariaRepositorio.ObterPorId(dto.SubsidiariaId);

            ExcecaoDeDominio.LancarQuando(subsidiaria == null, "Subsidiária não encontrada");

            var contratoDto = _buscadorDeContrato.Buscar(dto.NumeroDoContrato).Result;

            ExcecaoDeDominio.LancarQuando(contratoDto == null, "Contrato não encontrado no ERP");

            var tipoDeSolicitacaoDeManutencao =
                Enum.Parse(typeof(TipoDeSolicitacaoDeManutencao), dto.TipoDeSolicitacaoDeManutencao.ToString());

            return(new SolicitacaoDeManutencao(
                       subsidiaria.Id,
                       dto.SolicitanteId,
                       dto.NomeDoSolicitante,
                       (TipoDeSolicitacaoDeManutencao)tipoDeSolicitacaoDeManutencao,
                       dto.Justificativa,
                       contratoDto.Numero,
                       contratoDto.NomeDaTerceirizada,
                       contratoDto.CnpjDaTerceirizada,
                       contratoDto.GestorDoContrato,
                       contratoDto.DataFinalDaVigencia,
                       dto.InicioDesejadoParaManutencao));
        }
예제 #3
0
        public Autor(int identificador, string nome)
        {
            ExcecaoDeDominio.LancarQuando(string.IsNullOrEmpty(nome), "Nome do solicitante é inválido");

            Identificador = identificador;
            Nome          = nome;
        }
        [InlineData(null)] public void Guincheiro_CriarGuincheiro_DeveriaMostrarMensagemErroAoCriarGuincheiroSemCelular(string celularInvalido)
        {
            string nome         = "GUincheiro da Silvva";
            var    dataCadastro = DateTime.Now;
            var    endereco     = new Endereco
            {
                NomeLogradouro = "Tietê",
                Logradouro     = "Marginal, 2020",
                CEP            = "45645-030",
                Bairro         = "Bairro Teste",
                Cidade         = "São Paulo",
                Estado         = new Estado {
                    Id = 1, UF = "SP"
                }
            };
            var    email   = new Email("*****@*****.**");
            string celular = celularInvalido;
            var    ativo   = true;


            ExcecaoDeDominio ex = Assert.Throws <ExcecaoDeDominio>(() => new Guincheiro(nome, dataCadastro, endereco, email, celular, ativo));


            Assert.Equal(MensagemValidacao.CelularInvalido, ex.Mensagens.Find(p => p.Contains(MensagemValidacao.CelularInvalido)));
        }
예제 #5
0
        public Jogador(string nome, Equipe equipe)
        {
            ExcecaoDeDominio.Quando(string.IsNullOrEmpty(nome), "Nome do jogador é obrigatório");

            Nome   = nome;
            Equipe = equipe;
        }
예제 #6
0
        public void AdicionarJogador(string nomeDoJogador)
        {
            ExcecaoDeDominio.Quando(string.IsNullOrEmpty(nomeDoJogador), "Jogador inicial da partida é obrigatório");
            ExcecaoDeDominio.Quando(Jogadores.Count == 4, "Uma partida não pode ter mais que 4 jogadores");

            Jogadores.Add(new Jogador(nomeDoJogador, SelecionarEquipeDoJogador()));
        }
예제 #7
0
        public void Solicitar(SolicitacaoDeManutencaoDto dto)
        {
            var subsidiaria = _subsidiariaRepositorio.ObterPorId(dto.SubsidiariaId);

            var contratoDto = _buscadorDeContrato.Buscar(dto.NumeroDoContrato).Result;

            ExcecaoDeDominio.LancarQuando(contratoDto == null, "Contrato não encontrado no ERP");

            var tipoDeSolicitacaoDeManutencao =
                Enum.Parse <TipoDeSolicitacaoDeManutencao>(dto.TipoDeSolicitacaoDeManutencao.ToString());
            var solicitacaoDeManutencao =
                new SolicitacaoDeManutencao(
                    subsidiaria,
                    dto.SolicitanteId,
                    dto.NomeDoSolicitante,
                    tipoDeSolicitacaoDeManutencao,
                    dto.Justificativa,
                    contratoDto.Numero,
                    contratoDto.NomeDaTerceirizada,
                    contratoDto.CnpjDaTerceirizada,
                    contratoDto.GestorDoContrato,
                    contratoDto.DataFinalDaVigencia,
                    dto.InicioDesejadoParaManutencao);

            var solicitacoesDeManutencaoPendentes =
                _solicitacaoDeManutencaoRepositorio
                .ObterPendentesDoTipo(tipoDeSolicitacaoDeManutencao, subsidiaria);

            _canceladorDeSolicitacoesDeManutencaoPendentes.Cancelar(solicitacoesDeManutencaoPendentes);

            _solicitacaoDeManutencaoRepositorio.Adicionar(solicitacaoDeManutencao);
        }
        public void Patio_CriarPatio_DeveTerUmCelular(string celularInvalido)
        {
            ExcecaoDeDominio ex = Assert.Throws <ExcecaoDeDominio>(
                () => new Patio(new ValueObjects.Endereco(), celularInvalido));

            Assert.Equal(MensagemValidacao.CelularInvalido
                         , ex.Mensagens.Find(p => p.Contains(MensagemValidacao.CelularInvalido)));
        }
        public void Patio_CriarPatio_DeveTerUmEndereco(ValueObjects.Endereco endereco)
        {
            ExcecaoDeDominio ex = Assert.Throws <ExcecaoDeDominio>(
                () => new Patio(endereco, "1195149529"));

            Assert.Equal(MensagemValidacao.EnderecoInvalido
                         , ex.Mensagens.Find(p => p.Contains(MensagemValidacao.EnderecoInvalido)));
        }
예제 #10
0
        public Carta(string nome, int peso, Manilha manilha)
        {
            ExcecaoDeDominio.Quando(string.IsNullOrEmpty(nome), "Nome da carta é obrigatório");
            ExcecaoDeDominio.Quando(manilha == null, "Manilha da carta é obrigatório");

            Nome    = nome;
            Manilha = manilha;
        }
예제 #11
0
        public CartasDoJogador(Jogador jogador, List <Carta> cartas)
        {
            ExcecaoDeDominio.Quando(jogador == null, "Não deve dar cartas sem jogador");
            ExcecaoDeDominio.Quando(cartas == null || !cartas.Any() || cartas.Count() != 3, "Três cartas devem ser dadas para jogador");

            Jogador = jogador;
            Cartas  = cartas;
        }
예제 #12
0
        public void AdicionarNotaDoAlunoNoCurso(float notaDoAlunoNoCurso, StatusDaAprovacaoDaMatricula status)
        {
            ExcecaoDeDominio.Quando(status == StatusDaAprovacaoDaMatricula.Aprovado && (notaDoAlunoNoCurso < 1 || notaDoAlunoNoCurso > 100),
                                    "Nota do aluno no curso é inválido");
            ExcecaoDeDominio.Quando(status == StatusDaAprovacaoDaMatricula.Nenhum,
                                    "Status da aprovação é inválido");

            NotaDoAlunoNoCurso = status == StatusDaAprovacaoDaMatricula.Aprovado? notaDoAlunoNoCurso : 0;
            StatusDaAprovacao  = status;
        }
예제 #13
0
        public static ExcecaoDeDominio ComMensagem(this ExcecaoDeDominio exception, string message)
        {
            if (!exception.PossuiErroComAMensagemIgualA(message))
            {
                var mensagemDeFalha = MontarMensagemDeFalha(exception, message);
                Assert.False(true, mensagemDeFalha.ToString());
            }

            return(exception);
        }
예제 #14
0
 private static void Validar(string nome, string cpf, string orgaoEmissorDoRg, string rg, DateTime dataDeNascimento, string telefone, Endereco endereco)
 {
     ExcecaoDeDominio.Quando(string.IsNullOrEmpty(nome), "Nome é obrigatório");
     ExcecaoDeDominio.Quando(string.IsNullOrEmpty(cpf), "CPF é obrigatório");
     ExcecaoDeDominio.Quando(string.IsNullOrEmpty(orgaoEmissorDoRg), "Orgão emissor do RG é obrigatório");
     ExcecaoDeDominio.Quando(string.IsNullOrEmpty(rg), "RG é obrigatório");
     ExcecaoDeDominio.Quando(dataDeNascimento == DateTime.MinValue, "Data de nascimento é obrigatório");
     ExcecaoDeDominio.Quando(string.IsNullOrEmpty(telefone), "Telefone é obrigatório");
     ExcecaoDeDominio.Quando(endereco == null, "Endereço é obrigatório");
 }
예제 #15
0
 public static void ComMensagem(this ExcecaoDeDominio exception, string mensagem)
 {
     if (exception.MensagensDeErro.Contains(mensagem))
     {
         Assert.True(true);
     }
     else
     {
         Assert.False(true, $"Esperava a mensagem '{mensagem}'");
     }
 }
예제 #16
0
 public static void ComMensagem(this ExcecaoDeDominio exception, string message)
 {
     if (exception.PossuiErroComAMensagemIgualA(message))
     {
         Assert.Pass("Disparou exceção com a mensagem correta: {0}", message);
     }
     else
     {
         var mensagemDeFalha = MontarMensagemDeFalha(exception, message);
         Assert.Fail(mensagemDeFalha.ToString());
     }
 }
예제 #17
0
        private static StringBuilder MontarMensagemDeFalha(ExcecaoDeDominio exception, string message)
        {
            var mensagens       = exception.Mensagens();
            var mensagemDeFalha = new StringBuilder();

            mensagemDeFalha.AppendLine(string.Format("Não disparou exceção com a mensagem: {0}", message));

            foreach (var mensagem in mensagens)
            {
                mensagemDeFalha.AppendLine(string.Format("E exibiu a seguinte mensagem:        {0}", mensagem));
            }

            return(mensagemDeFalha);
        }
예제 #18
0
        public static void ComMensagem(this ExcecaoDeDominio exception, string mensagem)
        {
            string complementoAssert = $@"
Mensagem Esperada: '{mensagem}'
Mensagem Recebida: '{exception.Message}'";

            if (exception.MensagensDeErro.Contains(mensagem))
            {
                Assert.True(true, complementoAssert);
            }
            else
            {
                Assert.False(true, complementoAssert);
            }
        }
예제 #19
0
        public Contrato(string numero, string nomeDaTerceirizada, string cnpjDaTerceirizada, string gestorDoContrato, DateTime dataFinalDaVigencia)
        {
            ExcecaoDeDominio.LancarQuando(string.IsNullOrEmpty(numero), "Número do contrato é inválido");
            ExcecaoDeDominio.LancarQuando(string.IsNullOrEmpty(nomeDaTerceirizada), "Nome da terceirizada é inválida");
            ExcecaoDeDominio.LancarQuando(
                string.IsNullOrEmpty(cnpjDaTerceirizada) ||
                cnpjDaTerceirizada.Length != 14, "CNPJ da terceirizada é inválida");
            ExcecaoDeDominio.LancarQuando(string.IsNullOrEmpty(gestorDoContrato), "Gestor do contrato é inválido");
            ExcecaoDeDominio.LancarQuando(dataFinalDaVigencia.Date < DateTime.Now.Date, "Vigência do contrato está vencido");

            Numero              = numero;
            NomeDaTerceirizada  = nomeDaTerceirizada;
            CnpjDaTerceirizada  = cnpjDaTerceirizada;
            GestorDoContrato    = gestorDoContrato;
            DataFinalDaVigencia = dataFinalDaVigencia;
        }
예제 #20
0
        public Endereco(string numero, string logradouro, string cep, string bairro, string complemento, string cidade, string estado)
        {
            ExcecaoDeDominio.Quando(string.IsNullOrEmpty(numero), "Número do endereço é obrigatório");
            ExcecaoDeDominio.Quando(string.IsNullOrEmpty(logradouro), "Logradouro do endereço é obrigatório");
            ExcecaoDeDominio.Quando(string.IsNullOrEmpty(cep), "CEP do endereço é obrigatório");
            ExcecaoDeDominio.Quando(string.IsNullOrEmpty(bairro), "Bairro do endereço é obrigatório");
            ExcecaoDeDominio.Quando(string.IsNullOrEmpty(cidade), "Cidade do endereço é obrigatório");
            ExcecaoDeDominio.Quando(string.IsNullOrEmpty(estado), "Estado do endereço é obrigatório");

            Numero      = numero;
            Logradouro  = logradouro.ToUpper();
            Cep         = cep;
            Bairro      = bairro;
            Complemento = complemento;
            Cidade      = cidade.ToUpper();
            Estado      = estado;
        }
예제 #21
0
        public Matricula(CursoAberto cursoAberto, Pessoa pessoa, bool estaPago, decimal valorPago,
                         ComoFicouSabendo comoFicouSabendo)
        {
            ExcecaoDeDominio.Quando(cursoAberto == null, "Curso é obrigatório");
            ExcecaoDeDominio.Quando(pessoa == null, "Aluno é obrigatório");
            ExcecaoDeDominio.Quando(!cursoAberto.ContemPublicoAlvo(pessoa.TipoDePublico), "Tipo de publíco alvo do Curso e do Aluno são diferentes");

            CursoAberto   = cursoAberto;
            Pessoa        = pessoa;
            EstaPago      = estaPago;
            DataDeCriacao = DateTime.Now;
            if (valorPago > 0)
            {
                ValorPago = valorPago;
            }
            ComoFicouSabendo = comoFicouSabendo;
        }
예제 #22
0
        public void Analisar(AnaliseDeAprovacaoDto analiseDeAprovacaoDto)
        {
            var solicitacaoDeManutencao =
                _solicitacaoDeManutencaoRepositorio.ObterPorId(analiseDeAprovacaoDto.IdDaSolicitacao);

            ExcecaoDeDominio.LancarQuando(solicitacaoDeManutencao == null, "Solicitação não encontrada");

            var aprovador = new Autor(analiseDeAprovacaoDto.IdentificadorDoAprovador, analiseDeAprovacaoDto.NomeDoAprovador);

            if (analiseDeAprovacaoDto.Aprovado)
            {
                Aprovar(solicitacaoDeManutencao, aprovador);
            }
            else
            {
                Reprovar(solicitacaoDeManutencao, aprovador);
            }
        }
예제 #23
0
        public SolicitacaoDeManutencao(string identificadorDaSubsidiaria,
                                       int identificadorDoSolicitante, string nomeDoSolicitante,
                                       TipoDeSolicitacaoDeManutencao tipoDeSolicitacaoDeManutencao,
                                       string justificativa, string numeroDoContrato, string nomeDaTerceirizada, string cnpjDaTerceirizada,
                                       string gestorDoContrato, DateTime dataFinalDaVigência,
                                       DateTime inicioDesejadoParaManutencao)
        {
            ExcecaoDeDominio.LancarQuando(string.IsNullOrEmpty(identificadorDaSubsidiaria), "Subsidiária é inválida");
            ExcecaoDeDominio.LancarQuando(string.IsNullOrEmpty(justificativa), "Justificativa inválida");
            ExcecaoDeDominio.LancarQuando(inicioDesejadoParaManutencao.Date < DateTime.Now.Date, "Data do inicio desejado não pode ser inferior a data de hoje");

            Solicitante = new Autor(identificadorDoSolicitante, nomeDoSolicitante);
            IdentificadorDaSubsidiaria    = identificadorDaSubsidiaria;
            TipoDeSolicitacaoDeManutencao = tipoDeSolicitacaoDeManutencao;
            Justificativa = justificativa;
            Contrato      = new Contrato(numeroDoContrato, nomeDaTerceirizada, cnpjDaTerceirizada, gestorDoContrato, dataFinalDaVigência);
            InicioDesejadoParaManutencao = inicioDesejadoParaManutencao;
            DataDaSolicitacao            = DateTime.Now;
            StatusDaSolicitacao          = StatusDaSolicitacao.Pendente;
        }
        public async Task Analisar(AnaliseDeAprovacaoDto analiseDeAprovacaoDto)
        {
            var solicitacaoDeManutencao =
                _solicitacaoDeManutencaoRepositorio.ObterPorId(analiseDeAprovacaoDto.IdDaSolicitacao);

            ExcecaoDeDominio.LancarQuando(solicitacaoDeManutencao == null, "Solicitação não encontrada");
            ExcecaoDeDominio.LancarQuando(solicitacaoDeManutencao.Reprovada(), "Solicitação já analisada e está reprovada");
            ExcecaoDeDominio.LancarQuando(solicitacaoDeManutencao.Aprovada(), "Solicitação já analisada e está aprovada");

            var aprovador = new Autor(analiseDeAprovacaoDto.AprovadorId, analiseDeAprovacaoDto.NomeDoAprovador);

            if (analiseDeAprovacaoDto.Aprovado)
            {
                await Aprovar(solicitacaoDeManutencao, aprovador);
            }
            else
            {
                Reprovar(solicitacaoDeManutencao, aprovador);
            }
        }
예제 #25
0
 private static void Validar(Curso curso,
                             decimal preco,
                             TipoDeCursoAberto tipoDeCursoAberto,
                             string empresa,
                             DateTime?periodoInicialParaMatricula,
                             DateTime?periodoFinalParaMatricula,
                             DateTime inicioDoCurso,
                             DateTime fimDoCurso)
 {
     ExcecaoDeDominio.Quando(curso == null, "Curso é obrigatório");
     ExcecaoDeDominio.Quando(preco <= 0, "Preço do curso inválido");
     ExcecaoDeDominio.Quando(tipoDeCursoAberto == TipoDeCursoAberto.Nenhum, "Tipo de curso aberto é obrigatório");
     ExcecaoDeDominio.Quando(tipoDeCursoAberto == TipoDeCursoAberto.Publico && !periodoInicialParaMatricula.HasValue, "Período inicial para matricula é obrigatório");
     ExcecaoDeDominio.Quando(tipoDeCursoAberto == TipoDeCursoAberto.Publico && !periodoFinalParaMatricula.HasValue, "Período final para matricula é obrigatório");
     ExcecaoDeDominio.Quando(tipoDeCursoAberto == TipoDeCursoAberto.Fechado && string.IsNullOrEmpty(empresa), "Empresa é obrigatório quando tipo é fechado");
     ExcecaoDeDominio.Quando(periodoInicialParaMatricula > periodoFinalParaMatricula, "Período inicial é maior que período final para matricula");
     ExcecaoDeDominio.Quando(inicioDoCurso <= DateTime.MinValue, "Data de inicio do curso é obrigatório");
     ExcecaoDeDominio.Quando(inicioDoCurso < periodoFinalParaMatricula, "Data de inicio do curso menor que período final para matricula");
     ExcecaoDeDominio.Quando(fimDoCurso <= DateTime.MinValue, "Data de fim do curso é obrigatório");
     ExcecaoDeDominio.Quando(inicioDoCurso > fimDoCurso, "Data de inicio do curso maior que data de fim do curso");
 }
        public void Alterar(
            int idMatricula,
            string observacao,
            string notaDoAlunoNoCursoEmString,
            string statusDaAprovacaoEmString,
            bool ip)
        {
            var matricula = _matriculaRepositorio.ObterPorId(idMatricula);

            ExcecaoDeDominio.Quando(matricula == null, "Matricula não encontrada");

            if (!string.IsNullOrEmpty(observacao))
            {
                matricula.AdicionarObservacao(observacao);
            }

            if (!string.IsNullOrEmpty(notaDoAlunoNoCursoEmString) && float.TryParse(notaDoAlunoNoCursoEmString, out float notaDoAluno))
            {
                ExcecaoDeDominio.Quando(!Enum.TryParse(statusDaAprovacaoEmString, out StatusDaAprovacaoDaMatricula status), "Status da aprovação é inválido");
                matricula.AdicionarNotaDoAlunoNoCurso(notaDoAluno, status);
            }

            matricula.EhInstrutorEmPotencial(ip);
        }
        public void Guincheiro_CriarGuincheiro_DeveriaThrowExcecaoDeDominioCriarGuincheiroSemNome(string nomeInvalido)
        {
            string nome         = nomeInvalido;
            var    dataCadastro = DateTime.Now;
            var    endereco     = new Endereco
            {
                NomeLogradouro = "Tietê",
                Logradouro     = "Marginal, 2020",
                CEP            = "45645-030",
                Bairro         = "Bairro Teste",
                Cidade         = "São Paulo",
                Estado         = new Estado {
                    Id = 1, UF = "SP"
                }
            };
            var email   = new Email("*****@*****.**");
            var celular = "11943433094";
            var ativo   = true;

            ExcecaoDeDominio ex = Assert.Throws <ExcecaoDeDominio>(() => new Guincheiro(nome, dataCadastro, endereco, email, celular, ativo));


            Assert.Equal(MensagemValidacao.NomeFantasiaInvalido, ex.Mensagens.Find(p => p.Contains(MensagemValidacao.NomeFantasiaInvalido)));
        }
예제 #28
0
 public void AdicionarObservacao(string observacao)
 {
     ExcecaoDeDominio.Quando(string.IsNullOrEmpty(observacao), "Observação é obrigatório");
     Observacao = observacao;
 }
예제 #29
0
        public void Jogar(string nomeDoJogador, Carta carta)
        {
            ExcecaoDeDominio.Quando(JogadorDaCarta.Nome != nomeDoJogador, "Não é permitido jogar na vez de outro jogador");

            MaiorCartaJogada = carta;
        }
 public void ConfigurarResposta(ExcecaoDeDominio ex)
 {
     this.DefinirSucesso(false);
     this.Erro = new RespostaErro(ex.Message, 400);
 }