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)); }
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); }
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 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); }