public ActionResult Assumir(ItemInbox item)
        {
            try
            {
                List <Incidente> lista = IncidenteBusiness.Consulta.Where(a =>
                                                                          string.IsNullOrEmpty(a.UsuarioExclusao) && a.UniqueKey.Equals(item.UniqueKey)).ToList();

                if (lista == null || lista.Count == 0)
                {
                    throw new Exception("Não foi possível recuperar o incidente através da identificação recebida.");
                }
                else
                {
                    ReiniciarCache(CustomAuthorizationProvider.UsuarioAutenticado.Login);

                    bool first = true;
                    foreach (Incidente obj in lista)
                    {
                        obj.StatusWF        = "SO";
                        obj.DataExclusao    = DateTime.Now;
                        obj.UsuarioExclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login;
                        IncidenteBusiness.Alterar(obj);

                        if (first)
                        {
                            first = false;
                            Incidente obj2 = new Incidente();
                            PropertyCopy.Copy(obj, obj2);

                            obj2.ID       = Guid.NewGuid().ToString();
                            obj2.StatusWF = "RS";

                            if (!string.IsNullOrEmpty(item.Comentarios))
                            {
                                obj2.MensagemPasso = item.Comentarios;
                            }

                            obj2.Responsavel     = CustomAuthorizationProvider.UsuarioAutenticado.Login;
                            obj2.UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login;
                            obj2.UsuarioExclusao = null;
                            obj2.DataExclusao    = DateTime.MaxValue;

                            IncidenteBusiness.Inserir(obj2);

                            Severino.GravaCookie("MensagemSucesso", "O incidente " + obj2.Codigo + " foi redirecionado para a sua caixa pessoal.", 10);
                        }
                    }
                }

                return(Json(new { sucesso = "O passo do workflow associado ao documento foi aprovado com sucesso." }));
            }
            catch (Exception ex)
            {
                return(Json(new { erro = ex.Message }));
            }
        }
        public ActionResult RejeitarIncidente(ItemInbox item)
        {
            try
            {
                Incidente obj = IncidenteBusiness.Consulta.FirstOrDefault(a =>
                                                                          string.IsNullOrEmpty(a.UsuarioExclusao) &&
                                                                          a.UniqueKey.Equals(item.UniqueKey) &&
                                                                          a.Responsavel.ToUpper().Equals(CustomAuthorizationProvider.UsuarioAutenticado.Login.ToUpper()));

                if (obj == null)
                {
                    throw new Exception("Não foi possível recuperar o incidente através da identificação recebida.");
                }
                else
                {
                    ReiniciarCache(CustomAuthorizationProvider.UsuarioAutenticado.Login);

                    obj.StatusWF        = "RJ";
                    obj.DataExclusao    = DateTime.Now;
                    obj.UsuarioExclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login;
                    IncidenteBusiness.Alterar(obj);

                    string novoStatus = OperacaoBusiness.RecuperarStatusAnterior(obj.Status);

                    string sql         = "select top 1 Responsavel from objincidente where uniquekey = '" + item.UniqueKey + "' and UsuarioExclusao is not null and Status = '" + novoStatus + "' order by DataExclusao desc";
                    string Responsavel = IncidenteBusiness.ExecuteQuery(sql);
                    if (string.IsNullOrEmpty(Responsavel))
                    {
                        List <string> Responsaveis = OperacaoBusiness.RecuperarResponsavelPorStatus(novoStatus);
                        foreach (string resp in Responsaveis)
                        {
                            Incidente obj2 = new Incidente();
                            PropertyCopy.Copy(obj, obj2);

                            obj2.ID            = Guid.NewGuid().ToString();
                            obj2.StatusWF      = "RS";
                            obj2.MensagemPasso = item.Comentarios;
                            obj2.Status        = novoStatus;

                            if (resp.Equals("Submitter"))
                            {
                                string sql2      = "select top 1 UsuarioInclusao from OBJIncidente where Codigo = '" + obj2.Codigo + "' order by DataInclusao";
                                string submitter = IncidenteBusiness.ExecuteQuery(sql2);
                                if (string.IsNullOrEmpty(submitter))
                                {
                                    throw new Exception("Não foi possível recuperar o usuário que criou o incidente.");
                                }

                                obj2.Responsavel = submitter;
                            }
                            else
                            {
                                obj2.Responsavel = resp;
                            }

                            obj2.UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login;
                            obj2.UsuarioExclusao = null;
                            obj2.DataExclusao    = DateTime.MaxValue;
                            obj2.DataAtualizacao = DateTime.Now;

                            IncidenteBusiness.Inserir(obj2);

                            Severino.GravaCookie("MensagemSucesso", "O incidente " + obj2.Codigo + " foi rejeitado com sucesso.", 10);
                        }
                    }
                    else
                    {
                        Incidente obj2 = new Incidente();
                        PropertyCopy.Copy(obj, obj2);

                        obj2.ID              = Guid.NewGuid().ToString();
                        obj2.StatusWF        = "RS";
                        obj2.MensagemPasso   = item.Comentarios;
                        obj2.Status          = novoStatus;
                        obj2.Responsavel     = Responsavel;
                        obj2.UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login;
                        obj2.UsuarioExclusao = null;
                        obj2.DataExclusao    = DateTime.MaxValue;
                        obj2.DataAtualizacao = DateTime.Now;

                        IncidenteBusiness.Inserir(obj2);

                        Severino.GravaCookie("MensagemSucesso", "O incidente " + obj2.Codigo + " foi rejeitado com sucesso.", 10);
                    }
                }

                return(Json(new { sucesso = "O passo do workflow associado ao documento foi aprovado com sucesso." }));
            }
            catch (Exception ex)
            {
                return(Json(new { erro = ex.Message }));
            }
        }
        public ActionResult AprovarIncidente(ItemInbox item)
        {
            try
            {
                Incidente obj = IncidenteBusiness.Consulta.FirstOrDefault(a =>
                                                                          string.IsNullOrEmpty(a.UsuarioExclusao) &&
                                                                          a.UniqueKey.Equals(item.UniqueKey) &&
                                                                          a.Responsavel.ToUpper().Equals(CustomAuthorizationProvider.UsuarioAutenticado.Login.ToUpper()));

                if (obj == null)
                {
                    throw new Exception("Não foi possível recuperar o incidente através da identificação recebida.");
                }
                else
                {
                    ReiniciarCache(CustomAuthorizationProvider.UsuarioAutenticado.Login);

                    obj.StatusWF        = "SO";
                    obj.DataExclusao    = DateTime.Now;
                    obj.UsuarioExclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login;
                    IncidenteBusiness.Alterar(obj);

                    string        novoStatus   = OperacaoBusiness.RecuperarProximoStatus(obj.Status);
                    List <string> Responsaveis = OperacaoBusiness.RecuperarResponsavelPorStatus(novoStatus);

                    foreach (string resp in Responsaveis)
                    {
                        Incidente obj2 = new Incidente();
                        PropertyCopy.Copy(obj, obj2);

                        obj2.ID        = Guid.NewGuid().ToString();
                        obj2.UniqueKey = item.UniqueKey;

                        if (novoStatus.Equals("Concluído"))
                        {
                            obj2.StatusWF = "SO";
                        }
                        else
                        {
                            obj2.StatusWF = "RS";
                        }

                        obj2.MensagemPasso   = item.Comentarios;
                        obj2.Status          = novoStatus;
                        obj2.Responsavel     = resp;
                        obj2.UsuarioInclusao = CustomAuthorizationProvider.UsuarioAutenticado.Login;
                        obj2.UsuarioExclusao = null;
                        obj2.DataExclusao    = DateTime.MaxValue;
                        obj2.DataAtualizacao = DateTime.Now;

                        IncidenteBusiness.Inserir(obj2);

                        Severino.GravaCookie("MensagemSucesso", "O incidente " + obj2.Codigo + " foi aprovado com sucesso.", 10);
                    }
                }

                return(Json(new { sucesso = "O passo do workflow associado ao documento foi aprovado com sucesso." }));
            }
            catch (Exception ex)
            {
                return(Json(new { erro = ex.Message }));
            }
        }