Exemplo n.º 1
0
        public static PlanoTrabalho Criar(Int64 unidadeId, DateTime dataInicio, DateTime dataFim, int prazoComparecimento, int tempoFaseHabilitacao, int totalServidoresSetor, String usuarioLogado, string termoAceite)
        {
            //Cria o pacto de trabalho para ser ajustado pelo chefe da unidade
            var model = new PlanoTrabalho()
            {
                PlanoTrabalhoId      = Guid.NewGuid(),
                UnidadeId            = unidadeId,
                DataInicio           = dataInicio,
                DataFim              = dataFim,
                PrazoComparecimento  = prazoComparecimento,
                TempoFaseHabilitacao = tempoFaseHabilitacao,
                TotalServidoresSetor = totalServidoresSetor,
                SituacaoId           = (int)SituacaoPlanoTrabalhoEnum.Rascunho,
                Historico            = new List <PlanoTrabalhoHistorico>(),
                TermoAceite          = termoAceite
            };

            model.AlterarSituacao((int)SituacaoPlanoTrabalhoEnum.Rascunho, usuarioLogado, null);

            return(model);
        }
Exemplo n.º 2
0
        private async Task EnviarEmails(Susep.SISRH.Domain.AggregatesModel.PlanoTrabalhoAggregate.PlanoTrabalho item)
        {
            try
            {
                switch (item.SituacaoId)
                {
                case (int)SituacaoPlanoTrabalhoEnum.EnviadoAprovacao:
                    //Obtém o chefe, o CG e o diretor da unidade
                    var destsAprovacao = await ObterChefesUnidade(item.Unidade.SiglaCompleta);

                    EnviarEmailPlanoEnviadoAprovacao(destsAprovacao);
                    break;

                case (int)SituacaoPlanoTrabalhoEnum.Aprovado:
                    //Obtém o chefe, o CG e o diretor da unidade
                    var destsAprovado = await ObterChefesUnidade(item.Unidade.SiglaCompleta);

                    EnviarEmailPlanoAprovado(destsAprovado);
                    break;


                case (int)SituacaoPlanoTrabalhoEnum.Rejeitado:
                    //Obtém o chefe, o CG e o diretor da unidade
                    var destsRejeitado = await ObterChefesUnidade(item.Unidade.SiglaCompleta);

                    EnviarEmailPlanoRejeitado(destsRejeitado);
                    break;

                case (int)SituacaoPlanoTrabalhoEnum.Habilitacao:

                    //Obtém as pessoas da unidade
                    var pessoasUnidade = await UnidadeQuery.ObterPessoasAsync(item.UnidadeId);

                    EnviarEmailHabilitacao(pessoasUnidade.Result.Where(p => !String.IsNullOrEmpty(p.Email)).Select(p => p.Email).ToArray());
                    break;


                //Conclusão da fase de habilitação
                case (int)SituacaoPlanoTrabalhoEnum.ProntoParaExecucao:

                    //Obtém as pessoas que tiveram a candidatura aprovada
                    var aprovados = from a in item.Atividades
                                    from c in a.Candidatos
                                    where c.SituacaoId == (int)SituacaoCandidaturaPlanoTrabalhoEnum.Aprovada
                                    select c.Pessoa;

                    //Obtém as pessoas que não foram aprovadas
                    var rejeitados = from a in item.Atividades
                                     from c in a.Candidatos
                                     where c.SituacaoId != (int)SituacaoCandidaturaPlanoTrabalhoEnum.Aprovada
                                     select c.Pessoa;
                    rejeitados = rejeitados.Where(r => !aprovados.Any(a => a.PessoaId == r.PessoaId));

                    //Envia email aos aprovados e aos rejeitados
                    EnviarEmailCandidaturaAprovada(aprovados.Where(p => !String.IsNullOrEmpty(p.Email)).Select(p => p.Email).ToArray());
                    EnviarEmailCandidaturaRejeitada(rejeitados.Where(p => !String.IsNullOrEmpty(p.Email)).Select(p => p.Email).ToArray());

                    break;
                }
            }
            catch { }
        }
        private async Task EnviarEmails(Susep.SISRH.Domain.AggregatesModel.PlanoTrabalhoAggregate.PlanoTrabalho item)
        {
            try
            {
                if (Configuration.Value.Notificacoes == null ||
                    Configuration.Value.Notificacoes.EnviarEmail)
                {
                    switch (item.SituacaoId)
                    {
                    case (int)SituacaoPlanoTrabalhoEnum.EnviadoAprovacao:
                        //Obtém o chefe, o CG e o diretor da unidade
                        var destsAprovacao = await ObterChefesUnidade(item.Unidade.SiglaCompleta);

                        EnviarEmailPlanoEnviadoAprovacao(item.PlanoTrabalhoId, Configuration.Value.Notificacoes.EmailPlanoParaAprovacao, destsAprovacao);
                        break;

                    case (int)SituacaoPlanoTrabalhoEnum.Aprovado:
                        //Obtém o chefe, o CG e o diretor da unidade
                        var destsAprovado = await ObterChefesUnidade(item.Unidade.SiglaCompleta);

                        EnviarEmailPlanoAprovado(item.PlanoTrabalhoId, Configuration.Value.Notificacoes.EmailPlanoAprovado, destsAprovado);
                        break;


                    case (int)SituacaoPlanoTrabalhoEnum.Rejeitado:
                        //Obtém o chefe, o CG e o diretor da unidade
                        var destsRejeitado = await ObterChefesUnidade(item.Unidade.SiglaCompleta);

                        EnviarEmailPlanoRejeitado(item.PlanoTrabalhoId, Configuration.Value.Notificacoes.EmailPlanoRejeitado, destsRejeitado);
                        break;

                    case (int)SituacaoPlanoTrabalhoEnum.Habilitacao:

                        //Obtém as pessoas da unidade
                        var pessoasUnidade = await UnidadeQuery.ObterPessoasAsync(item.UnidadeId);

                        var pessoasEnviarEmail = pessoasUnidade.Result;
                        //Se o tipo de notificação não incluir as pessoas da subunidade,
                        //  Deve adicionar apenas as pessoas que estão diretamente lotadas na unidade OU
                        //  que tem função em unidades inferiores
                        if (Configuration.Value.Notificacoes == null ||
                            Configuration.Value.Notificacoes.AberturaFaseHabilitacao != "IncluirSubunidades")
                        {
                            pessoasEnviarEmail = pessoasEnviarEmail.Where(p => p.UnidadeId == item.UnidadeId || (p.Chefe.HasValue && p.Chefe.Value)).ToList();
                        }
                        EnviarEmailHabilitacao(item.PlanoTrabalhoId, Configuration.Value.Notificacoes.EmailPlanoEmHabilitacao, pessoasEnviarEmail.Where(p => !String.IsNullOrEmpty(p.Email)).Select(p => p.Email).ToArray());
                        break;


                    //Conclusão da fase de habilitação
                    case (int)SituacaoPlanoTrabalhoEnum.ProntoParaExecucao:

                        //Obtém as pessoas que tiveram a candidatura aprovada
                        var aprovados = from a in item.Atividades
                                        from c in a.Candidatos
                                        where c.SituacaoId == (int)SituacaoCandidaturaPlanoTrabalhoEnum.Aprovada
                                        select c.Pessoa;

                        //Obtém as pessoas que não foram aprovadas
                        var rejeitados = from a in item.Atividades
                                         from c in a.Candidatos
                                         where c.SituacaoId != (int)SituacaoCandidaturaPlanoTrabalhoEnum.Aprovada
                                         select c.Pessoa;
                        rejeitados = rejeitados.Where(r => !aprovados.Any(a => a.PessoaId == r.PessoaId));

                        //Envia email aos aprovados e aos rejeitados
                        EnviarEmailCandidaturaAprovada(item.PlanoTrabalhoId, Configuration.Value.Notificacoes.EmailPlanoCandidaturaAprovada, aprovados.Where(p => !String.IsNullOrEmpty(p.Email)).Select(p => p.Email).ToArray());
                        EnviarEmailCandidaturaRejeitada(item.PlanoTrabalhoId, Configuration.Value.Notificacoes.EmailPlanoCandidaturaRejeitada, rejeitados.Where(p => !String.IsNullOrEmpty(p.Email)).Select(p => p.Email).ToArray());

                        break;
                    }
                }
            }
            catch { }
        }