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_solicitacao_de_manutencao_quando_ja_aprovada() { const string mensagemEsperada = "Solicitação já analisada e está aprovada"; _solicitacaoDeManutencao = FluentBuilder <SolicitacaoDeManutencao> .New().With(solicitacao => solicitacao.StatusDaSolicitacao, StatusDaSolicitacao.Aprovada).Build(); _solicitacaoDeManutencaoRepositorio.ObterPorId(_dto.IdDaSolicitacao).Returns(_solicitacaoDeManutencao); AssertExtensions.ThrowsWithMessageAsync(() => _analiseDeAprovacaoDaSolicitacao.Analisar(_dto), mensagemEsperada); }
public AnaliseDeAprovacaoDaSolicitacaoDeManutencaoTeste() { _dto = new AnaliseDeAprovacaoDto { IdDaSolicitacao = "XPTO", AprovadorId = 1, NomeDoAprovador = "Mario" }; _solicitacaoDeManutencao = FluentBuilder <SolicitacaoDeManutencao> .New().Build(); _solicitacaoDeManutencaoRepositorio = Substitute.For <ISolicitacaoDeManutencaoRepositorio>(); _notificaReprovacaoParaSolicitante = Substitute.For <INotificaReprovacaoParaSolicitante>(); _notificaContextoDeServico = Substitute.For <INotificaContextoDeServico>(); _solicitacaoDeManutencaoRepositorio.ObterPorId(_dto.IdDaSolicitacao).Returns(_solicitacaoDeManutencao); _analiseDeAprovacaoDaSolicitacao = new AnaliseDeAprovacaoDaSolicitacaoDeManutencao( _solicitacaoDeManutencaoRepositorio, _notificaReprovacaoParaSolicitante, _notificaContextoDeServico); }
public async Task Notificar(SolicitacaoDeManutencao solicitacaoDeManutencao) { using (var cliente = new HttpClient()) { var conteudoDoJson = JsonConvert.SerializeObject(new { solicitacaoDeManutencao.Id, solicitacaoDeManutencao.Justificativa, solicitacaoDeManutencao.DataDaSolicitacao, solicitacaoDeManutencao.IdentificadorDaSubsidiaria, NumeroDoContrato = solicitacaoDeManutencao.Contrato.Numero }); var conteudo = new StringContent(conteudoDoJson, Encoding.UTF8, "application/json"); var respostaDoServidor = await cliente.PostAsync($"{_endereco}/servico", conteudo); if (!respostaDoServidor.IsSuccessStatusCode) { throw new Exception("Comunicação com contexto de serviço não disponível"); } } }
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) }; _solicitacaoDeManutencaoRepositorio = Substitute.For <ISolicitacaoDeManutencaoRepositorio>(); _canceladorDeSolicitacoesDeManutencaoPendentes = Substitute.For <ICanceladorDeSolicitacoesDeManutencaoPendentes>(); _solicitacaoDeManutencao = FluentBuilder <SolicitacaoDeManutencao> .New().With(s => s.IdentificadorDaSubsidiaria, _dto.SubsidiariaId).Build(); var fabricaDeSolicitacaoDeManutencao = Substitute.For <FabricaDeSolicitacaoDeManutencao>(); fabricaDeSolicitacaoDeManutencao.Fabricar(_dto).Returns(_solicitacaoDeManutencao); _solicitador = new SolicitadorDeManutencao( _solicitacaoDeManutencaoRepositorio, fabricaDeSolicitacaoDeManutencao, _canceladorDeSolicitacoesDeManutencaoPendentes); }
private void Reprovar(SolicitacaoDeManutencao solicitacaoDeManutencao, Autor aprovador) { solicitacaoDeManutencao.Reprovar(aprovador); _notificaReprovacaoParaSolicitante.Notificar(solicitacaoDeManutencao); }
private void Aprovar(SolicitacaoDeManutencao solicitacaoDeManutencao, Autor aprovador) { solicitacaoDeManutencao.Aprovar(aprovador); _notificaContextoDeServico.Notificar(solicitacaoDeManutencao); }
public void Notificar(SolicitacaoDeManutencao solicitacaoDeManutencao) { }
private async Task Aprovar(SolicitacaoDeManutencao solicitacaoDeManutencao, Autor aprovador) { solicitacaoDeManutencao.Aprovar(aprovador); await _notificaContextoDeServico.Notificar(solicitacaoDeManutencao); }
public void Notificar(SolicitacaoDeManutencao solicitacaoDeManutencao) { //TODO: Implementar envio de e-mail. Como este código tem fins educativo não será implementado }