예제 #1
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);
        }
예제 #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;
        }
예제 #4
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;
        }
예제 #5
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);
            }
        }
        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);
            }
        }
예제 #7
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;
        }
예제 #8
0
        public Subsidiaria(string nome)
        {
            ExcecaoDeDominio.LancarQuando(string.IsNullOrEmpty(nome), "Nome da subsidiária é inválido");

            Nome = nome;
        }