public void Execute(IPluginExecutionContext context) { DateTime inicioExecucao = DateTime.Now; try { this.Context = context; DomainService.Organizacao = new Organizacao(context.OrganizationName); DynamicEntity entity = this.GetDynamicEntity(context); PluginHelper.LogEmArquivo(context, "INICIO;", inicioExecucao.ToString(), ""); // Quem alterou DomainService.RepositoryUsuario.Colunas = new string[] { "fullname", "new_grupo_callcenter" }; Usuario usuario = DomainService.RepositoryUsuario.Retrieve(context.InitiatingUserId); LogOcorrencia log = new LogOcorrencia(DomainService.Organizacao); log.Nome = this.NomeDaAcao(context.MessageName); log.Alteracoes = this.MensageDeAlteracoes(entity); log.Categoria = this.GetCategoria(context); log.DataAlteracao = DateTime.Now; this.RegraEspecificaPorCategoria(ref log); // Usuário log.UsuarioId = usuario.Id; log.Usuario = usuario.NomeCompleto; log.GrupoProprietario = usuario.GrupoCallCenter; if (context.MessageName == MessageName.Create || context.MessageName == MessageName.Update || context.MessageName == MessageName.Assign) { log.OcorrenciaId = PluginHelper.GetEntityId(context); } log.Salvar(); PluginHelper.LogEmArquivo(context, "FIM;", inicioExecucao.ToString(), DateTime.Now.ToString()); } catch (InvalidPluginExecutionException ex) { throw ex; } catch (Exception ex) { LogService.GravaLog(ex, TipoDeLog.PluginIncident, "incident.PostUpdateLog"); PluginHelper.LogEmArquivo(context, "ERRO;", inicioExecucao.ToString(), DateTime.Now.ToString()); } }
public void Execute(IPluginExecutionContext context) { try { DynamicEntity preEntity = context.PreEntityImages["PreIncidentImage"] as DynamicEntity; DynamicEntity postEntity = context.PostEntityImages["PostIncidentImage"] as DynamicEntity; if (!preEntity.Properties.Contains("ownerid") && !postEntity.Properties.Contains("ownerid")) { return; } if (((Owner)preEntity.Properties["ownerid"]).Value == ((Owner)postEntity.Properties["ownerid"]).Value) { return; } DomainService.Organizacao = new Organizacao(context.OrganizationName); DomainService.RepositoryUsuario.Colunas = new string[] { "fullname", "new_grupo_callcenter" }; Usuario proprietarioAntigo = DomainService.RepositoryUsuario.Retrieve(((Owner)preEntity.Properties["ownerid"]).Value); Usuario proprietarioNovo = DomainService.RepositoryUsuario.Retrieve(((Owner)postEntity.Properties["ownerid"]).Value); var log = new LogOcorrencia(); log.Nome = "Atribuir Proprietário"; log.OcorrenciaId = PluginHelper.GetEntityId(context); log.Categoria = Domain.Model.Enum.CategoriaLogOcorrencia.PorProprietario; log.DataAlteracao = DateTime.Now; log.Alteracoes = string.Format("Proprietário Anterior: {0} ({1}) \n Proprietário Novo: {2} (3)", proprietarioAntigo.NomeCompleto, proprietarioAntigo.Id, proprietarioNovo.NomeCompleto, proprietarioNovo.Id); log.Usuario = proprietarioAntigo.NomeCompleto; log.UsuarioId = proprietarioAntigo.Id; log.GrupoProprietario = proprietarioAntigo.GrupoCallCenter; log.GrupoDestino = proprietarioNovo.GrupoCallCenter; log.Salvar(); } catch (Exception ex) { LogService.GravaLog(ex, TipoDeLog.PluginIncident, "incident.PostUpdateLogOwner"); } }
private void CriarLog(Guid usuarioId, DynamicEntity entity, Guid incidentId, string organizacao) { var _organizacao = new Organizacao(organizacao); Ocorrencia incident = new Ocorrencia(_organizacao); Usuario usuario = DomainService.RepositoryUsuario.Retrieve(usuarioId); incident = DomainService.RepositoryOcorrencia.Retrieve(incidentId); var LogOcorrencia = new LogOcorrencia(_organizacao); LogOcorrencia.UsuarioId = usuario.Id; LogOcorrencia.Usuario = string.Format("{0} {1}", usuario.Nome, usuario.Sobrenome); LogOcorrencia.Categoria = CategoriaLogOcorrencia.Diversos; LogOcorrencia.Alteracoes = string.Empty; LogOcorrencia.GrupoProprietario = usuario.GrupoCallCenter; LogOcorrencia.Nome = "Ocorrência criada."; LogOcorrencia.OcorrenciaId = incidentId; LogOcorrencia.Status = string.Empty; LogOcorrencia.DataAlteracao = DateTime.Now; LogOcorrencia.Salvar(); }
private void ValidarAlteracoes(Guid incidentid, DynamicEntity preEntity, DynamicEntity postEntity, Organizacao organizacao, Usuario usuario) { var msgValidacao = new string[] { "Alterações: DE --> PARA", "" }; foreach (Property p in preEntity.Properties) { var preItem = preEntity.Properties[p.Name]; object posItem = null; if (!postEntity.Properties.Contains(p.Name)) { EventLog.WriteEntry("CRM Application PostUpdateLog", "Campo não existe em PostIncidentImage: " + p.Name); } else { posItem = postEntity.Properties[p.Name]; switch (preItem.GetType().ToString()) { case "System.String": { if (preItem.ToString() != posItem.ToString()) { msgValidacao[1] += "\n " + p.Name + ": " + preItem.ToString() + " --> " + posItem.ToString(); } } break; case "Microsoft.Crm.Sdk.Customer": { var _preitem = preItem as Customer; var _positem = posItem as Customer; if (_preitem.Value != _positem.Value) { msgValidacao[1] += "\n " + p.Name + ": " + _preitem.name + " --> " + _positem.name; } } break; case "Microsoft.Crm.Sdk.Picklist": { var _preitem = preItem as Picklist; var _positem = posItem as Picklist; if (_preitem.Value != _positem.Value) { msgValidacao[1] += "\n " + p.Name + ": " + _preitem.name + " --> " + _positem.name; } } break; case "Microsoft.Crm.Sdk.CrmDateTime": { if (p.Name != "modifiedon") { var _preitem = preItem as CrmDateTime; var _positem = posItem as CrmDateTime; if (_preitem.Value != _positem.Value) { msgValidacao[1] += "\n " + p.Name + ": " + Convert.ToDateTime(_preitem.Value).ToString() + " --> " + Convert.ToDateTime(_positem.Value).ToString(); } } } break; case "Microsoft.Crm.Sdk.Lookup": { var _preitem = preItem as Lookup; var _positem = posItem as Lookup; if (_preitem.Value != _positem.Value) { msgValidacao[1] += "\n " + p.Name + ": " + _preitem.name + " --> " + _positem.name; } } break; case "Microsoft.Crm.Sdk.CrmBoolean": { var _preitem = preItem as CrmBoolean; var _positem = posItem as CrmBoolean; if (_preitem.Value != _positem.Value) { msgValidacao[1] += "\n " + p.Name + ": " + _preitem.name + " --> " + _positem.name; } } break; case "Microsoft.Crm.Sdk.CrmNumber": { var _preitem = preItem as CrmNumber; var _positem = posItem as CrmNumber; if (_preitem.Value != _positem.Value) { msgValidacao[1] += "\n " + p.Name + ": " + _preitem.Value + " --> " + _positem.Value; } } break; case "Microsoft.Crm.Sdk.Owner": { if (p.Name == "ownerid") { var _preitem = preItem as Owner; var _positem = posItem as Owner; if (_preitem.Value != _positem.Value) { var usuarioDestino = new Usuario(organizacao); usuarioDestino = usuarioDestino.PesquisaPor(_positem.Value); var log = new LogOcorrencia(organizacao); log.Usuario = string.Format("{0} {1}", usuario.Nome, usuario.Sobrenome); log.UsuarioId = usuario.Id; log.Nome = "Ocorrencia alterada"; log.OcorrenciaId = incidentid; log.Alteracoes = "Proprietário Anterior: " + _preitem.name + " \n Proprietário Novo: " + _positem.name; log.Categoria = Domain.Model.Enum.CategoriaLogOcorrencia.PorProprietario; log.DataAlteracao = DateTime.Now; log.GrupoDestino = usuarioDestino.GrupoCallCenter; log.GrupoProprietario = usuario.GrupoCallCenter; log.Salvar(); } } } break; case "Microsoft.Crm.Sdk.Status": { if (p.Name == "statuscode") { var _preitem = preItem as Status; var _positem = posItem as Status; if (_preitem.Value != _positem.Value) { var log = new LogOcorrencia(organizacao); log.Usuario = string.Format("{0} {1}", usuario.Nome, usuario.Sobrenome); log.UsuarioId = usuario.Id; log.Nome = "Ocorrencia alterada"; log.OcorrenciaId = incidentid; log.Status = _positem.name; log.Alteracoes = "Status Anterior: " + _preitem.name + " \n Status Novo: " + _positem.name; log.Categoria = Domain.Model.Enum.CategoriaLogOcorrencia.PorStatus; log.DataAlteracao = DateTime.Now; log.Salvar(); } } } break; } } } if (msgValidacao[1] != string.Empty) { var log = new LogOcorrencia(organizacao); log.Usuario = string.Format("{0} {1}", usuario.Nome, usuario.Sobrenome); log.Nome = "Ocorrencia alterada"; log.UsuarioId = usuario.Id; log.OcorrenciaId = incidentid; log.Alteracoes = msgValidacao[0] + "\n" + msgValidacao[1]; log.Categoria = Domain.Model.Enum.CategoriaLogOcorrencia.Diversos; log.DataAlteracao = DateTime.Now; log.Salvar(); } }