コード例 #1
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));
        }
コード例 #2
0
        public SolicitadorDeManutencaoTeste()
        {
            _dto = new SolicitacaoDeManutencaoDto
            {
                SubsidiariaId                 = "XPTO-ABC",
                SolicitanteId                 = 1,
                NomeDoSolicitante             = "Ricardo José",
                TipoDeSolicitacaoDeManutencao = TipoDeSolicitacaoDeManutencao.Jardinagem.GetHashCode(),
                Justificativa                 = "Grama Alta",
                NumeroDoContrato              = "2135",
                InicioDesejadoParaManutencao  = DateTime.Now.AddMonths(2)
            };
            _contratoDto = new ContratoDto
            {
                Numero              = _dto.NumeroDoContrato,
                NomeDaTerceirizada  = "Grama SA",
                GestorDoContrato    = "Edivaldo Pereira",
                CnpjDaTerceirizada  = "00000000000000",
                DataFinalDaVigencia = DateTime.Now.AddMonths(1)
            };

            _solicitacaoDeManutencaoRepositorio = Substitute.For <ISolicitacaoDeManutencaoRepositorio>();
            var subsidiariaRepositorio = Substitute.For <ISubsidiariaRepositorio>();

            _subsidiaria = FluentBuilder <Subsidiaria> .New().Build();

            subsidiariaRepositorio.ObterPorId(_dto.SubsidiariaId).Returns(_subsidiaria);
            _canceladorDeSolicitacoesDeManutencaoPendentes = Substitute.For <ICanceladorDeSolicitacoesDeManutencaoPendentes>();
            _buscadorDeContrato = Substitute.For <IBuscadorDeContrato>();
            _buscadorDeContrato.Buscar(_dto.NumeroDoContrato).Returns(_contratoDto);
            _solicitador = new SolicitadorDeManutencao(_solicitacaoDeManutencaoRepositorio, subsidiariaRepositorio, _buscadorDeContrato, _canceladorDeSolicitacoesDeManutencaoPendentes);
        }
コード例 #3
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);
        }
コード例 #4
0
        public void Deve_validar_contrato_quando_nao_encontrado_no_erp()
        {
            const string mensagemEsperada = "Contrato não encontrado no ERP";

            _buscadorDeContrato.Buscar(_dto.NumeroDoContrato).Returns((ContratoDto)null);

            AssertExtensions.ThrowsWithMessage(() => _solicitador.Solicitar(_dto), mensagemEsperada);
        }