public void CriarEmail(Lookup referenteA, ParticipantesDoProcesso PartProcesso) { Guid fromUserId; if (!Guid.TryParse(SDKore.Configuration.ConfigurationManager.GetSettingValue("Intelbras.Usuario.EnvioEmail", true), out fromUserId)) { throw new ApplicationException("O parâmetro 'Intelbras.Usuario.EnvioEmail' não foi possível converte em GUID."); } SolicitacaoBeneficio Solicitacao = RepositoryService.SolicitacaoBeneficio.Retrieve(referenteA.Id); String msg = string.Empty; var email = new Domain.Model.Email(NomeDaOrganizacao, _isOffline); email.Assunto = Solicitacao.Canal.Name + " - " + Solicitacao.Nome + " - " + Solicitacao.TipoSolicitacao.Name + " - " + Solicitacao.DataCriacao.Value; msg = "Canal: " + Solicitacao.Canal.Name; msg += "</br>Nome da Solicitação: " + Solicitacao.Nome; msg += "</brTipo da Solicitação: " + Solicitacao.TipoSolicitacao.Name; msg += "</brValor: " + Solicitacao.ValorSolicitado.Value; msg += "</brDescrição: " + Solicitacao.Descricao; msg += "</brStatus da Solicitação : " + Solicitacao.StatusSolicitacao.Value; email.Mensagem = msg; email.De = new Lookup[1]; email.De[0] = new Lookup { Id = fromUserId, Type = SDKore.Crm.Util.Utility.GetEntityName <Domain.Model.Usuario>() }; email.ReferenteA = new Lookup { Id = referenteA.Id, Type = referenteA.Type }; if (PartProcesso.Equipe != null) { List <TeamMembership> lstTeam = RepositoryService.TeamMembership.ListarPor(PartProcesso.Equipe.Id); email.Para = new Lookup[lstTeam.Count()]; int i = 0; foreach (TeamMembership team in lstTeam) { email.Para[i] = new Lookup { Id = team.Usuario, Type = SDKore.Crm.Util.Utility.GetEntityName <Domain.Model.Usuario>() }; i++; } } if (PartProcesso.Usuario != null) { email.Para = new Lookup[1]; email.Para[0] = new Lookup { Id = PartProcesso.Usuario.Id, Type = PartProcesso.Usuario.Type }; } if (PartProcesso.Contato != null) { email.Para = new Lookup[1]; email.Para[0] = new Lookup { Id = PartProcesso.Contato.Id, Type = PartProcesso.Contato.Type }; } email.Direcao = false; email.ID = RepositoryService.Email.Create(email); RepositoryService.Email.EnviarEmail(email.ID.Value); }
public bool CriarTarefa(Lookup referenteA, string tiposolicitacaonome, string descricao, string ParecerAnterior, ParticipantesDoProcesso PartProcesso) { Guid idProprietario = Guid.Empty; string tipoProprietario = ""; Model.Tarefa task = new Model.Tarefa(NomeDaOrganizacao, _isOffline); Model.SolicitacaoBeneficio tmpSolBen = new SolicitacaoBeneficio(NomeDaOrganizacao, _isOffline); Model.SolicitacaoCadastro tmpSolCad = new SolicitacaoCadastro(NomeDaOrganizacao, _isOffline); List <RelacionamentoCanal> lstRelacionamento = new List <RelacionamentoCanal>(); task.Assunto = "Plugin - " + referenteA.Name; task.ReferenteA = new Lookup(referenteA.Id, referenteA.Type); task.Assunto = PartProcesso.Papel.Name + " - " + tiposolicitacaonome; task.Ordem = PartProcesso.Ordem; task.PareceresAnteriores = ParecerAnterior; task.DescricaoSolicitacao = descricao; task.Conclusao = DateTime.Now.AddDays(1).AddHours(3); TipoDeAtividade tmpTipoDeAtividade = RepositoryService.TipoDeAtividade.ObterPorPapel(PartProcesso.Papel.Id); if (tmpTipoDeAtividade == null) { throw new ArgumentException("Tipo de Atividade do Participante Não Encontrado! : " + PartProcesso.Papel.Name + " : " + PartProcesso.Papel.Id.ToString()); } if (tmpTipoDeAtividade.ID.HasValue) { task.TipoDeAtividade = new Lookup(tmpTipoDeAtividade.ID.Value, "itbc_tipoatividade"); } if (PartProcesso.Equipe != null) { idProprietario = PartProcesso.Equipe.Id; tipoProprietario = PartProcesso.Equipe.Type; } if (PartProcesso.Usuario != null) { idProprietario = PartProcesso.Usuario.Id; tipoProprietario = PartProcesso.Usuario.Type; } if (PartProcesso.Contato != null) { idProprietario = PartProcesso.Contato.Id; tipoProprietario = PartProcesso.Contato.Type; } if (PartProcesso.PapelNoCanal.HasValue) { if (referenteA.Type.ToLower().Equals(SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoCadastro>().ToLower())) { tmpSolCad = RepositoryService.SolicitacaoCadastro.Retrieve(referenteA.Id); lstRelacionamento = RepositoryService.RelacionamentoDoCanal.ListarPor(tmpSolCad.Canal.Id); } if (referenteA.Type.ToLower().Equals(SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoBeneficio>().ToLower())) { tmpSolBen = RepositoryService.SolicitacaoBeneficio.Retrieve(referenteA.Id); lstRelacionamento = RepositoryService.RelacionamentoDoCanal.ListarPor(tmpSolBen.Canal.Id); } if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.DiretorDeUnidade) { if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor == null) { throw new ArgumentException("Diretor da Unidade Não encontrado. Não é possivel criar o próximo passo de Tarefa!"); } Usuario _usuario = new Intelbras.CRM2013.Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).ObterPor(lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id); if (_usuario == null) { throw new ArgumentException("Não foi encontrado o usuário."); } if (_usuario.Gerente == null) { throw new ArgumentException("Gerente do Supervisor não confiurado.Operação cancelada."); } //Descemos mais um nivel para pegar o gerente do gerente _usuario = new Intelbras.CRM2013.Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).ObterPor(_usuario.Gerente.Id); if (_usuario == null) { throw new ArgumentException("Não foi encontrado o usuário."); } if (_usuario.Gerente == null) { throw new ArgumentException("Gerente do Supervisor não confiurado.Operação cancelada."); } idProprietario = _usuario.Gerente.Id; tipoProprietario = _usuario.Gerente.Type; } if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.GerenteNacionalGerenteDeDistribuicao) { if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor == null) { throw new ArgumentException("Gerente Nacional Gerente De Distribuicao Não encontrado. Não é possivel criar o próximo passo de Tarefa!"); } Usuario _usuario = new Intelbras.CRM2013.Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).ObterPor(lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id); if (_usuario == null) { throw new ArgumentException("Não foi encontrado o usuário."); } if (_usuario.Gerente == null) { throw new ArgumentException("Gerente do Supervisor não confiurado.Operação cancelada."); } idProprietario = _usuario.Gerente.Id; tipoProprietario = _usuario.Gerente.Type; } if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.KeyAccountRepresentante) { if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor != null) { idProprietario = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id; tipoProprietario = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Type; } else { throw new ArgumentException("Key Account Representante Não encontrado. Não é possivel criar o próximo passo de Tarefa!"); } } if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.SupervisorDeVendas) { if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor != null) { idProprietario = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id; tipoProprietario = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Type; } else { throw new ArgumentException("Supervisor De Vendas Não encontrado. Não é possivel criar o próximo passo de Tarefa!"); } } } Guid idTask = RepositoryService.Tarefa.Create(task); if (idTask != Guid.Empty) { new Domain.Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).MudarProprietarioRegistro(tipoProprietario, idProprietario, "task", idTask); } return(true); }