示例#1
0
        public void AlterarSituacao(Int32 situacaoId, String responsavelOperacaoId, String observacoes)
        {
            if (!PodeAlteracaoSituacao(situacaoId))
            {
                throw new SISRHDomainException("A situação atual do plano não permite mudar para o estado solicitado");
            }

            this.SituacaoId = situacaoId;

            //Quando iniciar ou encerrar a execução
            //  Deve executar alguns procedimentos para permitir que os servidores possam acomparnhar as atividades
            if (SituacaoId == (int)SituacaoPactoTrabalhoEnum.EmExecucao)
            {
                if (DateTime.Now.Date < this.DataInicio)
                {
                    throw new SISRHDomainException("Não é possível iniciar a execução do plano de trabalho antes da data de início");
                }

                this.IniciarExecucao();
            }
            else if (SituacaoId == (int)SituacaoPactoTrabalhoEnum.Aceito)
            {
                this.TermoAceite = this.PlanoTrabalho.TermoAceite;
            }
            else if (SituacaoId == (int)SituacaoPactoTrabalhoEnum.Executado)
            {
                this.EncerrarExecucao();
            }

            this.Historico.Add(PactoTrabalhoHistorico.Criar(this.PlanoTrabalhoId, this.SituacaoId, responsavelOperacaoId, observacoes));
        }
示例#2
0
        public void AlterarSituacao(Int32 situacaoId, String responsavelOperacao, String observacoes)
        {
            if (!PodeAlteracaoSituacao(situacaoId))
            {
                throw new SISRHDomainException("A situação atual do plano não permite mudar para o estado solicitado");
            }

            //Não deve permitir que a própria pessoa encerre um plano seu sem ter concluído todas as atividades
            int responsavelOperacaoId = -1;

            Int32.TryParse(responsavelOperacao, out responsavelOperacaoId);
            if (situacaoId == (int)SituacaoPactoTrabalhoEnum.Executado &&
                this.PessoaId == responsavelOperacaoId &&
                this.Atividades.Any(a => a.ItemCatalogo.FormaCalculoTempoItemCatalogoId == (int)FormaCalculoTempoItemCatalogoEnum.PredefinidoPorTarefa &&
                                    a.SituacaoId != (int)SituacaoAtividadePactoTrabalhoEnum.Done))
            {
                throw new SISRHDomainException("O próprio servidor não pode encerrar um plano de trabalho que ainda tem atividades a serem executadas. Favor solicitar que o chefe faça o encerramento.");
            }

            if (this.SituacaoId == (int)Domain.Enums.SituacaoPactoTrabalhoEnum.Executado &&
                situacaoId == (int)Domain.Enums.SituacaoPactoTrabalhoEnum.EmExecucao &&
                this.PessoaId == responsavelOperacaoId)
            {
                throw new SISRHDomainException("O próprio servidor não pode reabrir seu próprio plano de trabalho. Favor solicitar que o chefe faça a reabertura.");
            }

            this.SituacaoId = situacaoId;

            //Quando iniciar ou encerrar a execução
            //  Deve executar alguns procedimentos para permitir que os servidores possam acomparnhar as atividades
            if (SituacaoId == (int)SituacaoPactoTrabalhoEnum.EmExecucao)
            {
                if (DateTime.Now.Date < this.DataInicio)
                {
                    throw new SISRHDomainException("Não é possível iniciar a execução do plano de trabalho antes da data de início");
                }

                this.IniciarExecucao();
            }
            else if (SituacaoId == (int)SituacaoPactoTrabalhoEnum.Aceito)
            {
                this.TermoAceite = this.PlanoTrabalho.TermoAceite;
            }
            else if (SituacaoId == (int)SituacaoPactoTrabalhoEnum.Executado)
            {
                this.EncerrarExecucao();
            }

            this.Historico.Add(PactoTrabalhoHistorico.Criar(this.PlanoTrabalhoId, this.SituacaoId, responsavelOperacao, observacoes));
        }