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); }
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 { } }