//Realização do tratamento do chamado.
        public ChamadoEntity ColocarEmAtendimento(Guid codigoChamado, int codigoAnalista)
        {
            //Recupera o chamado:
            var chamado = _chamadoRepository.GetByCodigo(codigoChamado);

            //Valida se o mesmo existe:
            GarantirChamadoEncontrado(chamado);

            //Recupera o analista:
            var analista = _analistaRepository.GetByCodigo(codigoAnalista);

            //Valida se o mesmo existe:
            ValidatorHelper.GarantirNaoNulo(analista, Mensagens.AnalistaNaoEncontrado);

            //Valida se é do mesmo time do chamado:
            ValidatorHelper.GarantirIgual(chamado.Sistema.CodigoTimeSuporte, analista.CodigoTimeSuporte, Mensagens.ChamadoAnalistaNaoPertenceAoTimeSuporteResponsavel);

            //Chama a funcionalidade de colocar em atendimento do objeto:
            chamado.ColocarEmAtendimento(analista);

            //Salva as alterações do chamado:
            _chamadoRepository.Update(chamado);

            //Retorna o chamado tratado:
            return(chamado);
        }
        //Funcionalidade de realizar a troca de um time de suporte.
        public void AlterarTimeSuporte(TimeSuporteEntity timeSuporte)
        {
            //Validação de negócio com o framework BM.Validations.
            ValidatorHelper.GarantirNaoNulo(timeSuporte, Mensagens.AnalistaTimeSuporteInvalido);

            //Set das propriedades:
            TimeSuporte       = timeSuporte;
            CodigoTimeSuporte = timeSuporte.Codigo;
        }
        //Construtor informando o que é obrigatório para o chamado existir.
        public ChamadoEntity(SistemaEntity sistema, ChamadoPrioridadeValueObject prioridade)
        {
            //Validação de negócio com o framework BM.Validations.
            ValidatorHelper.GarantirNaoNulo(sistema, Mensagens.ChamadoSistemaInvalido);

            //Set das propriedades:
            Codigo        = new Guid();
            Sistema       = sistema;
            CodigoSistema = sistema.Codigo;
            Prioridade    = prioridade;
            //Status inicial
            Status = ChamadoStatusValueObject.Aberto;
        }
        //Funcionalidade do chamado para ser tratado por um analista
        public void ColocarEmAtendimento(AnalistaEntity analista)
        {
            //Validação de negócio com o framework BM.Validations.
            //Apenas chamados Em Aberto que podem ser atendidos:
            ValidatorHelper.GarantirVerdadeiro(Status == ChamadoStatusValueObject.Aberto, Mensagens.ChamadoJaFinalizadoOuEmAtendimentoPorUmAnalista);
            ValidatorHelper.GarantirNaoNulo(analista, Mensagens.ChamadoAnalistaEmAtendimentoInvalido);

            //Set das propriedades:
            AnalistaEmAtendimento       = analista;
            CodigoAnalistaEmAtendimento = analista.Codigo;
            //Alteração do status (regra de negócio)
            Status = ChamadoStatusValueObject.EmAtendimento;
            //Definição da data (regra de negócio)
            DataInicioAtendimento = DateTime.Now;
        }
        //Realização da abertura do chamado.
        public ChamadoEntity Abrir(int codigoSistema, ChamadoPrioridadeValueObject prioridade)
        {
            //Recupera o sitema:
            var sistema = _sistemaRepository.GetByCodigo(codigoSistema);

            //Valida se o mesmo existe:
            ValidatorHelper.GarantirNaoNulo(sistema, Mensagens.SistemaNaoEncontrado);

            //Cria o chamado:
            var chamado = new ChamadoEntity(sistema, prioridade);

            //Salva o chamado:
            _chamadoRepository.Add(chamado);

            //Retorna o chamado criado:
            return(chamado);
        }
示例#6
0
        //Cadastra um novo analista no sistema.
        public Entities.AnalistaEntity Cadastrar(string nome, int codigoTimeSuporte)
        {
            //Consulta o time de suporte.
            var timeSuporte =
                _timeSuporteRepository.GetByCodigo(codigoTimeSuporte);

            //Valida se foi encontrado.
            ValidatorHelper.GarantirNaoNulo(timeSuporte, Mensagens.TimeSuporteNaoEncontrado);

            //Cria a entidade.
            var entity =
                new Entities.AnalistaEntity(nome, timeSuporte);

            //Adiciona a entidade no banco.
            _analistaRepository.Add(entity);

            //Retorna a entidade já com o Codigo preenchido.
            return(entity);
        }
示例#7
0
        //Realiza a troca de time de um analista.
        public Entities.AnalistaEntity TrocarTimeSuporte(int codigo, int codigoTimeSuporte)
        {
            //Recupera o analista.
            var analista = _analistaRepository.GetByCodigo(codigo);

            //Valida se foi encontrado.
            ValidatorHelper.GarantirNaoNulo(analista, Mensagens.AnalistaNaoEncontrado);

            //Recupera o time de suporte.
            var timeSuporte = _timeSuporteRepository.GetByCodigo(codigo);

            //Valida se foi encontrado.
            ValidatorHelper.GarantirNaoNulo(timeSuporte, Mensagens.TimeSuporteNaoEncontrado);

            //Realiza a troca do time.
            analista.AlterarTimeSuporte(timeSuporte);

            //Atualiza na base de dados.
            _analistaRepository.Update(analista);

            return(analista);
        }
 //Valida se o chamado não é nulo.
 //Método comum de validação de um chamado, evitando a replicação de código.
 private void GarantirChamadoEncontrado(ChamadoEntity chamado)
 {
     //Validação de negócio com o framework BM.Validations.
     ValidatorHelper.GarantirNaoNulo(chamado, Mensagens.ChamadoNaoEncontrado);
 }
示例#9
0
 //Método comum de validação de um analista, evitando a replicação de código.
 private void ValidarAnalista(Entities.AnalistaEntity analista)
 {
     //Validação de negócio com BM.Validations.
     ValidatorHelper.GarantirNaoNulo(analista, Mensagens.AnalistaInvalido);
 }
 //Método comum de validação de um sistema, evitando a replicação de código.
 private void GarantirSistemaValido(Entities.SistemaEntity sistema)
 {
     //Validação de negócio com o framework BM.Validations.
     ValidatorHelper.GarantirNaoNulo(sistema, Mensagens.SistemaInvalido);
 }
示例#11
0
 //Método comum de validação de um sistema, evitando a replicação de código.
 private void GarantirTimeSuporteValido(Entities.TimeSuporteEntity timeSuporte)
 {
     //Validação de negócio com o framework BM.Validations.
     ValidatorHelper.GarantirNaoNulo(timeSuporte, Mensagens.TimeSuporteInvalido);
 }