Esempio n. 1
0
        public override Validate AfterInsert(ChamadoViewModel value)
        {
            EmpresaSecurity <SecurityContext> empresaSecurity = new EmpresaSecurity <SecurityContext>();

            sessaoCorrente = empresaSecurity.getSessaoCorrente();
            int _fuso_horario = int.Parse(db.Parametros.Find((int)DWM.Models.Enumeracoes.Enumeradores.Param.FUSO_HORARIO).valor);

            #region Alerta 1
            AlertaRepository alerta = new AlertaRepository()
            {
                empresaId      = sessaoCorrente.empresaId,
                usuarioId      = (from al in db.AreaAtendimentos where al.areaAtendimentoId == value.areaAtendimentoId select al.usuario1Id).First(),
                sistemaId      = sessaoCorrente.sistemaId,
                dt_emissao     = DateTime.Now.AddHours(_fuso_horario),
                linkText       = "<span class=\"label label-warning\">Atendimento</span>",
                url            = "../Atendimento/Create?chamadoId=" + value.chamadoId.ToString() + "&fluxo=2",
                mensagemAlerta = "<b>" + DateTime.Now.ToString("dd/MM/yyyy HH:mm") + "h</b><p>" + value.assunto + "</p>"
            };

            alerta.uri = value.uri;

            AlertaRepository r = empresaSecurity.InsertAlerta(alerta);
            if (r.mensagem.Code > 0)
            {
                throw new DbUpdateException(r.mensagem.Message);
            }
            #endregion

            #region Alerta 2
            int?usuario2Id = (from al in db.AreaAtendimentos where al.areaAtendimentoId == value.areaAtendimentoId select al.usuario2Id).FirstOrDefault();

            if (usuario2Id.HasValue)
            {
                AlertaRepository alerta2 = new AlertaRepository()
                {
                    empresaId      = sessaoCorrente.empresaId,
                    usuarioId      = usuario2Id.Value,
                    sistemaId      = sessaoCorrente.sistemaId,
                    dt_emissao     = DateTime.Now.AddHours(_fuso_horario),
                    linkText       = "<span class=\"label label-warning\">Atendimento</span>",
                    url            = "../Atendimento/Create?chamadoId=" + value.chamadoId.ToString() + "&fluxo=2",
                    mensagemAlerta = "<b>" + DateTime.Now.ToString("dd/MM/yyyy HH:mm") + "h</b><p>" + value.assunto + "</p>"
                };

                alerta2.uri = value.uri;

                AlertaRepository r2 = empresaSecurity.InsertAlerta(alerta2);
                if (r2.mensagem.Code > 0)
                {
                    throw new DbUpdateException(r2.mensagem.Message);
                }
            }
            #endregion

            return(new Validate()
            {
                Code = 0, Message = MensagemPadrao.Message(0).ToString(), MessageType = MsgType.SUCCESS
            });
        }
Esempio n. 2
0
        public override ActionResult AfterCreate(ChamadoViewModel value, FormCollection collection)
        {
            try
            {
                FactoryLocalhost <AlertaRepository, ApplicationContext> factory = new FactoryLocalhost <AlertaRepository, ApplicationContext>();
                value.uri = this.ControllerContext.Controller.GetType().Name.Replace("Controller", "") + "/" + this.ControllerContext.RouteData.Values["action"].ToString();
                AlertaRepository a = factory.Execute(new AlertaBI(), value);
                if (a.mensagem.Code > 0)
                {
                    throw new Exception(a.mensagem.Message);
                }
            }
            catch (Exception ex)
            {
                Error(ex.Message);
            }

            return(RedirectToAction("Browse"));
        }
Esempio n. 3
0
        public override Validate AfterInsert(RegisterViewModel value)
        {
            EmpresaSecurity <SecurityContext> empresaSecurity = new EmpresaSecurity <SecurityContext>();

            int _sistemaId         = int.Parse(System.Configuration.ConfigurationManager.AppSettings["sistemaId"]);
            int _areaAtendimentoId = int.Parse(System.Configuration.ConfigurationManager.AppSettings["secretariaId"]);

            // Inserir os alertas para os usuários da secretaria
            int[] _usuarioId = (from aa in db.AreaAtendimentos
                                where aa.areaAtendimentoId == _areaAtendimentoId
                                select aa.usuario1Id).ToArray();

            // obtêm o chamadoId
            int?_chamadoId = (from cham in db.Chamados.AsEnumerable()
                              where cham.associadoId == value.associadoId.Value
                              select cham.chamadoId).LastOrDefault();

            for (int i = 0; i <= _usuarioId.Count() - 1; i++)
            {
                AlertaRepository alerta = new AlertaRepository()
                {
                    usuarioId      = _usuarioId[i],
                    sistemaId      = _sistemaId,
                    dt_emissao     = DateTime.Now,
                    linkText       = "<span class=\"label label-warning\">Novo Usuário</span>",
                    url            = "../Atendimento/Create?chamadoId=" + _chamadoId.ToString() + "&fluxo=2",
                    mensagemAlerta = "<b>" + DateTime.Now.ToString("dd/MM/yyyy HH:mm") + "h</b><p>" + chamadoViewModel.assunto + "</p>"
                };

                alerta.uri = value.uri;

                AlertaRepository r = empresaSecurity.InsertAlerta(alerta);
                if (r.mensagem.Code > 0)
                {
                    throw new DbUpdateException(r.mensagem.Message);
                }
            }

            return(new Validate()
            {
                Code = 0, Message = MensagemPadrao.Message(0).ToString(), MessageType = MsgType.SUCCESS
            });
        }
Esempio n. 4
0
        public IHttpActionResult UltimasAlertasUsuario()
        {
            var alertasUsuario = AlertaRepository.ObtenerAlertasDeUsuario(IdUsuarioExec, 5);
            var alertas        = CopiadoUtil.Copia(alertasUsuario);

            foreach (var alerta in alertas)
            {
                alerta.NombreUsuario = UsuarioRepository.ObtenerUsuarioPorId(alerta.IdUsuario).NombreCompleto();
            }
            var resultado = new ResultadoOperacionDto()
            {
                Mensaje          = "OK",
                Resultado        = true,
                InformacionExtra = alertas
            };

            Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

            return(Ok(resultado));;
        }
        public Auth EditChamado(AnotacaoAPIModel value)
        {
            Auth auth = new Auth()
            {
                Code     = 0,
                Mensagem = "Sucesso!"
            };

            ChamadoViewModel chamadoViewModel = (ChamadoViewModel)ValidarToken(value);

            if (chamadoViewModel.mensagem.Code != 0)
            {
                Auth cvm = new Auth()
                {
                    Mensagem = "Acesso Negado.",
                    Code     = 202
                };
                return(cvm);
            }


            ChamadoViewModel result = null;

            try
            {
                int?FilaAtendimentoID = null;
                if (value.FilaAtendimentoAtualID != value.FilaAtendimentoID.ToString())
                {
                    FilaAtendimentoID = value.FilaAtendimentoID;
                }

                #region Incluir Anotação
                result = new ChamadoViewModel()
                {
                    ChamadoID                = value.ChamadoID,
                    uri                      = this.ControllerContext.Controller.GetType().Name.Replace("Controller", "") + "/" + this.ControllerContext.RouteData.Values["action"].ToString(),
                    ChamadoAnexoViewModel    = new ChamadoAnexoViewModel(),
                    ChamadoFilaViewModel     = new ChamadoFilaViewModel(),
                    ChamadoAnotacaoViewModel = new ChamadoAnotacaoViewModel()
                    {
                        ChamadoID = value.ChamadoID,
                        Mensagem  = value.Anotacoes.FirstOrDefault().Mensagem
                    },
                    ChamadoStatusID          = value.ChamadoStatusID,
                    FilaAtendimentoID        = FilaAtendimentoID,
                    DescricaoFilaAtendimento = value.DescricaoFilaAtendimento,
                    DescricaoChamadoStatus   = value.DescricaoChamadoStatus,
                    DataRedirecionamento     = Funcoes.Brasilia(),
                    Rotas    = new List <ChamadoFilaViewModel>(),
                    Anexos   = new List <ChamadoAnexoViewModel>(),
                    mensagem = new Validate()
                    {
                        Code = 0
                    },
                    sessionId = value.sessionId,
                };
                if (value.FilaAtendimentoAtualID == value.FilaAtendimentoID.ToString())
                {
                    result.IsUsuarioFila = false;
                }
                else
                {
                    result.IsUsuarioFila = true;
                }

                result.ChamadoAnotacaoViewModel.uri = this.ControllerContext.Controller.GetType().Name.Replace("Controller", "") + "/" + this.ControllerContext.RouteData.Values["action"].ToString();
                FactoryLocalhost <ChamadoAnotacaoViewModel, ApplicationContext> factory = new FactoryLocalhost <ChamadoAnotacaoViewModel, ApplicationContext>();
                factory.Execute(new ChamadoAnotacaoBI(), result, value.sessionId);
                if (factory.Mensagem.Code > 0)
                {
                    throw new App_DominioException(factory.Mensagem);
                }

                #endregion

                #region Emitir Alerta e enviar o e-mail para a fila destinatária
                FactoryLocalhost <AlertaRepository, ApplicationContext> factoryAlert = new FactoryLocalhost <AlertaRepository, ApplicationContext>();
                AlertaBI         bi = new AlertaBI();
                AlertaRepository a  = factoryAlert.Execute(new AlertaBI(), result);
                if (a.mensagem.Code > 0)
                {
                    throw new Exception(a.mensagem.Message);
                }
                #endregion

                #region Recupera o ChamadoViewModel
                FactoryLocalhost <ChamadoViewModel, ApplicationContext> factoryChamado = new FactoryLocalhost <ChamadoViewModel, ApplicationContext>();
                result = factoryChamado.Execute(new ChamadoEditBI(), result);
                #endregion
            }
            catch (App_DominioException ex)
            {
                ModelState.AddModelError("", ex.Result.MessageBase); // mensagem amigável ao usuário
            }
            catch (Exception ex)
            {
                App_DominioException.saveError(ex, GetType().FullName);
            }

            return(auth);
        }
Esempio n. 6
0
        public override Validate AfterInsert(AtendimentoViewModel value)
        {
            int _fuso_horario = int.Parse(db.Parametros.Find((int)DWM.Models.Enumeracoes.Enumeradores.Param.FUSO_HORARIO).valor);
            EmpresaSecurity <SecurityContext> empresaSecurity = new EmpresaSecurity <SecurityContext>();
            int?_usuarioId = null;

            sessaoCorrente = empresaSecurity.getSessaoCorrente();

            #region Alerta 1
            if (value.fluxo == "1") // 1-associado/sindmed (o alerta deve ser criado p/ o funcionário)
            {
                if (value.chamado.usuarioId == null)
                {
                    _usuarioId = (from aa in db.AreaAtendimentos where aa.areaAtendimentoId == value.chamado.areaAtendimentoId select aa.usuario1Id).First();
                }
                else
                {
                    _usuarioId = value.chamado.usuarioId;
                }
            }
            else
            {
                _usuarioId = (from ass in db.Associados where ass.associadoId == value.chamado.associadoId select ass.usuarioId).First();
            }

            AlertaRepository alerta = new AlertaRepository()
            {
                empresaId      = sessaoCorrente.empresaId,
                usuarioId      = _usuarioId.Value,
                sistemaId      = sessaoCorrente.sistemaId,
                dt_emissao     = DateTime.Now.AddHours(_fuso_horario),
                linkText       = getLinkTextAlerta(),
                url            = "../Atendimento/Create?chamadoId=" + value.chamadoId.ToString() + "&fluxo=" + (value.fluxo == "2" ? "1" : "2"),
                mensagemAlerta = "<b>" + DateTime.Now.AddHours(_fuso_horario).ToString("dd/MM/yyyy HH:mm") + "h</b><p>" + value.chamado.assunto + "</p>"
            };

            alerta.uri = value.uri;

            AlertaRepository r = empresaSecurity.InsertAlerta(alerta);
            if (r.mensagem.Code > 0)
            {
                throw new DbUpdateException(r.mensagem.Message);
            }
            #endregion

            #region Alerta 2
            if (value.fluxo == "1" && value.chamado.usuarioId == null) // 1-associado/sindmed (o alerta deve ser criado p/ o funcionário)
            {
                _usuarioId = (from aa in db.AreaAtendimentos where aa.areaAtendimentoId == value.chamado.areaAtendimentoId select aa.usuario2Id).FirstOrDefault();

                if (_usuarioId.HasValue)
                {
                    AlertaRepository alerta2 = new AlertaRepository()
                    {
                        empresaId      = sessaoCorrente.empresaId,
                        usuarioId      = _usuarioId.Value,
                        sistemaId      = sessaoCorrente.sistemaId,
                        dt_emissao     = DateTime.Now.AddHours(_fuso_horario),
                        linkText       = "<span class=\"label label-primary\">Resposta</span>",
                        url            = "../Atendimento/Create?chamadoId=" + value.chamadoId.ToString() + "&fluxo=2",
                        mensagemAlerta = "<b>" + DateTime.Now.AddHours(_fuso_horario).ToString("dd/MM/yyyy HH:mm") + "h</b><p>" + value.chamado.assunto + "</p>"
                    };

                    alerta2.uri = value.uri;

                    AlertaRepository r2 = empresaSecurity.InsertAlerta(alerta2);
                    if (r2.mensagem.Code > 0)
                    {
                        throw new DbUpdateException(r2.mensagem.Message);
                    }
                }
            }
            #endregion

            #region Enviar e-mail ao associado
            if (db.Parametros.Find((int)DWM.Models.Enumeracoes.Enumeradores.Param.HABILITA_EMAIL).valor == "S" && value.fluxo == "2")
            {
                int _sistemaId = int.Parse(db.Parametros.Find((int)DWM.Models.Enumeracoes.Enumeradores.Param.SISTEMA).valor);

                SendEmail sendMail = new SendEmail();

                Empresa   empresa   = seguranca_db.Empresas.Find(sessaoCorrente.empresaId);
                Sistema   sistema   = seguranca_db.Sistemas.Find(_sistemaId);
                Associado associado = db.Associados.Find(value.chamado.associadoId);

                MailAddress   sender     = new MailAddress(empresa.nome + " <" + empresa.email + ">");
                List <string> recipients = new List <string>();

                recipients.Add(associado.nome + "<" + associado.email1 + ">");

                string Subject = "Re: Chamado " + value.chamado.chamadoId.ToString() + "-" + value.chamado.assunto + " - " + empresa.nome;
                string Text    = "<p>Atendimento de chamado</p>";
                string Html    = "<p><span style=\"font-family: Verdana; font-size: larger; color: #656464\">" + sistema.descricao + "</span></p>" +
                                 "<p><span style=\"font-family: Verdana; font-size: xx-large; color: #0094ff\">" + associado.nome.ToUpper() + "</span></p>" +
                                 "<p></p>" +
                                 "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Essa é uma mensagem de notificação de atendimento de chamado. Sua solicitação foi respondida. Acesse o sistema para ler o retorno da administração.</span></p>";

                Html += "<p></p>" +
                        "<p>&nbsp;</p>" +
                        "<p>&nbsp;</p>" +
                        "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Obrigado,</span></p>" +
                        "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Administração " + empresa.nome + "</span></p>";

                Validate result = sendMail.Send(sender, recipients, Html, Subject, Text);
                if (result.Code > 0)
                {
                    result.MessageBase = "Resposta de chamado cadastrada com sucesso, mas por falhas de comunicação não foi possível enviar o e-mail de notificação ao usuário. ";
                    throw new App_DominioException(result);
                }
            }
            #endregion

            return(new Validate()
            {
                Code = 0, Message = MensagemPadrao.Message(0).ToString(), MessageType = MsgType.SUCCESS
            });
        }
Esempio n. 7
0
        public ActionResult EditAnotacao(
            int ChamadoID, string Mensagem,
            string FilaAtendimentoAtualID, string _FilaAtendimentoID, string DescricaoFilaAtendimento,
            string IsCondomino, string _ChamadoStatusID, string DescricaoChamadoStatus)
        {
            if (ModelState.IsValid)
            {
                if (ViewBag.ValidateRequest)
                {
                    ChamadoViewModel result = null;
                    try
                    {
                        int?FilaAtendimentoID = null;
                        if (FilaAtendimentoAtualID != _FilaAtendimentoID)
                        {
                            FilaAtendimentoID = int.Parse(_FilaAtendimentoID);
                        }

                        #region Incluir Anotação
                        result = new ChamadoViewModel()
                        {
                            ChamadoID                = ChamadoID,
                            uri                      = this.ControllerContext.Controller.GetType().Name.Replace("Controller", "") + "/" + this.ControllerContext.RouteData.Values["action"].ToString(),
                            ChamadoAnexoViewModel    = new ChamadoAnexoViewModel(),
                            ChamadoFilaViewModel     = new ChamadoFilaViewModel(),
                            ChamadoAnotacaoViewModel = new ChamadoAnotacaoViewModel()
                            {
                                ChamadoID = ChamadoID,
                                Mensagem  = Mensagem
                            },
                            ChamadoStatusID          = _ChamadoStatusID == null || _ChamadoStatusID == "" ? 0 : int.Parse(_ChamadoStatusID),
                            FilaAtendimentoID        = FilaAtendimentoID,
                            DescricaoFilaAtendimento = DescricaoFilaAtendimento,
                            DescricaoChamadoStatus   = DescricaoChamadoStatus,
                            DataRedirecionamento     = Funcoes.Brasilia(),
                            Rotas    = new List <ChamadoFilaViewModel>(),
                            Anexos   = new List <ChamadoAnexoViewModel>(),
                            mensagem = new Validate()
                            {
                                Code = 0
                            }
                        };
                        if (FilaAtendimentoAtualID == _FilaAtendimentoID)
                        {
                            result.IsUsuarioFila = false;
                        }
                        else
                        {
                            result.IsUsuarioFila = true;
                        }

                        result.ChamadoAnotacaoViewModel.uri = this.ControllerContext.Controller.GetType().Name.Replace("Controller", "") + "/" + this.ControllerContext.RouteData.Values["action"].ToString();
                        FactoryLocalhost <ChamadoAnotacaoViewModel, ApplicationContext> factory = new FactoryLocalhost <ChamadoAnotacaoViewModel, ApplicationContext>();
                        result.Anotacoes = factory.Execute(new ChamadoAnotacaoBI(), result, ChamadoID);
                        if (factory.Mensagem.Code > 0)
                        {
                            throw new App_DominioException(factory.Mensagem);
                        }

                        ChamadoAnotacaoModel     model = new ChamadoAnotacaoModel();
                        ChamadoAnotacaoViewModel ChamadoAnotacaoViewModel = model.CreateRepository(Request);
                        result.ChamadoAnotacaoViewModel.ChamadoID = ChamadoID;
                        #endregion

                        #region Emitir Alerta e enviar o e-mail para a fila destinatária
                        FactoryLocalhost <AlertaRepository, ApplicationContext> factoryAlert = new FactoryLocalhost <AlertaRepository, ApplicationContext>();
                        AlertaBI         bi = new AlertaBI();
                        AlertaRepository a  = factoryAlert.Execute(new AlertaBI(), result);
                        if (a.mensagem.Code > 0)
                        {
                            throw new Exception(a.mensagem.Message);
                        }
                        #endregion

                        #region Recupera o ChamadoViewModel
                        FactoryLocalhost <ChamadoViewModel, ApplicationContext> factoryChamado = new FactoryLocalhost <ChamadoViewModel, ApplicationContext>();
                        result = factoryChamado.Execute(new ChamadoEditBI(), result);
                        #endregion

                        //if (FilaAtendimentoAtualID != _FilaAtendimentoID)
                        //    result.IsUsuarioFila = false;
                        //else
                        //    result.IsUsuarioFila = true;

                        //result.IsCondomino = IsCondomino == "True" ? true : false;

                        Success("Registro processado com sucesso");
                    }
                    catch (App_DominioException ex)
                    {
                        ModelState.AddModelError("", ex.Result.MessageBase); // mensagem amigável ao usuário
                        Error(ex.Result.Message);                            // Mensagem em inglês com a descrição detalhada do erro e fica no topo da tela
                    }
                    catch (Exception ex)
                    {
                        App_DominioException.saveError(ex, GetType().FullName);
                        ModelState.AddModelError("", MensagemPadrao.Message(17).ToString()); // mensagem amigável ao usuário
                        Error(ex.Message);                                                   // Mensagem em inglês com a descrição detalhada do erro e fica no topo da tela
                    }

                    return(View("_Anotacao", result));
                }
                else
                {
                    return(View());
                }
            }
            else
            {
                //CondominoEditViewModel result = new CondominoEditViewModel()
                //{
                //    UnidadeViewModel = new UnidadeViewModel()
                //    {
                //        EdificacaoID = VeiculoViewModel.EdificacaoID,
                //        UnidadeID = VeiculoViewModel.UnidadeID,
                //        CondominioID = VeiculoViewModel.CondominioID
                //    },
                //    CondominoPFViewModel = new CondominoPFViewModel()
                //    {
                //        CondominoID = VeiculoViewModel.CondominoID
                //    },
                //    VeiculoViewModel = VeiculoViewModel
                //};

                //Factory<CondominoEditViewModel, ApplicationContext> factory = new Factory<CondominoEditViewModel, ApplicationContext>();
                //CondominoEditViewModel obj = factory.Execute(new EditarCondominoBI(), result);
                //result.Veiculos = obj.Veiculos;

                //Error("Erro de preenhcimento em campos");

                return(View("_Anotacao", result));
            }
        }
Esempio n. 8
0
        public override EnviarEmailViewModel ExecProcess(EnviarEmailViewModel value, Crud operation)
        {
            Validate result = new Validate()
            {
                Code = 0, Message = MensagemPadrao.Message(0).ToString(), MessageType = MsgType.SUCCESS
            };
            EmpresaSecurity <SecurityContext> empresaSecurity = new EmpresaSecurity <SecurityContext>();

            #region Enviar e-mail ao usuário
            Empresa   empresa  = seguranca_db.Empresas.Find(value.empresaId);
            SendEmail sendMail = new SendEmail();

            MailAddress   sender     = new MailAddress(empresa.nome + " <" + empresa.email + ">");
            List <string> recipients = new List <string>();
            List <string> carbon     = new List <string>();

            recipients.Add(empresa.nome + " <" + empresa.email + ">");

            foreach (AssociadoViewModel a in value.Destinatarios)
            {
                if (a.email1 != null && a.email1.Trim() != "")
                {
                    carbon.Add(a.nome + "<" + a.email1 + ">");
                }
            }

            string Subject = value.assunto;
            string Text    = "<p>Enviar e-mail ao associado</p>";
            string Html    = value.mensagemEmail;

            result = sendMail.Send(sender, recipients, Html, Subject, Text, carbon);
            if (result.Code > 0)
            {
                throw new ArgumentException(result.MessageBase);
            }
            #endregion

            #region Enviar alerta
            foreach (AssociadoViewModel a in value.Destinatarios.Where(info => info.usuarioId.HasValue))
            {
                AlertaRepository alerta = new AlertaRepository()
                {
                    usuarioId      = a.usuarioId.Value,
                    sistemaId      = sessaoCorrente.sistemaId,
                    dt_emissao     = DateTime.Now,
                    linkText       = "<span class=\"label label-primary\">E-mail</span>",
                    url            = "#",
                    mensagemAlerta = "<b>" + DateTime.Now.ToString("dd/MM/yyyy HH:mm") + "h</b><p>" + value.assunto + "</p>"
                };

                alerta.uri = value.uri;

                AlertaRepository r = empresaSecurity.InsertAlerta(alerta);
                if (r.mensagem.Code > 0)
                {
                    throw new DbUpdateException(r.mensagem.Message);
                }
            }

            return(value);

            #endregion
        }