public ActionResult Usuario(string id) { if (!string.IsNullOrEmpty(id)) { var arquivoCaminho = Conversa.ObterCaminhoArquivo(id); var conversa = new Conversa(arquivoCaminho); conversa.AdicionarMensagemUsuarioOnline(true); } ViewBag.Id = id; return View(); }
public ActionResult Admin(string id) { if (!string.IsNullOrEmpty(id)) { var arquivoCaminho = Conversa.ObterCaminhoArquivo(id); var conversa = new Conversa(arquivoCaminho); ViewBag.Id = id; ViewBag.Nome = conversa.Usuario; } return View(); }
/// <summary> /// Verifica se a chamada não está mais no status de aguardando /// </summary> /// <param name="id">identificador da conversa</param> /// <returns></returns> public bool ChamadaIniciada(string id) { try { FileSystemWatcher watcher = new FileSystemWatcher(MvcApplication.FolderLog); watcher.Filter = id + ".xml"; watcher.EnableRaisingEvents = true; if (watcher.WaitForChanged(WatcherChangeTypes.Changed, 60000).ChangeType == WatcherChangeTypes.Changed) { var conversa = new Conversa(Conversa.ObterCaminhoArquivo(id)); if (conversa.Estado != EstadoConversa.EmEspera) return true; } return false; } catch (Exception ex) { throw ex; } }
public ActionResult Visualizar(string id) { if (id != string.Empty) { int idChat = 0; if (Int32.TryParse(id, out idChat)) { var conversa = new Conversa().ObterConversaFinalizada(idChat); return View(conversa); } else { var caminhoArquivo = Conversa.ObterCaminhoArquivo(id); var conversa = new Conversa(caminhoArquivo); return View(conversa); } } else { return null; } }
/// <summary> /// Busca por chamadas pelos parâmetros e retorna uma lista /// </summary> /// <param name="inicio"></param> /// <param name="fim"></param> /// <param name="estado"></param> /// <returns></returns> public ActionResult PesquisarChamadas(int estado, int pagina) { var qtdPagina = 10; DateTime inicio = DateTime.MinValue; DateTime fim = DateTime.MaxValue; if (string.IsNullOrEmpty(Request.QueryString["inicio"]) == false) inicio = Convert.ToDateTime(Request.QueryString["inicio"]); if (string.IsNullOrEmpty(Request.QueryString["fim"]) == false) fim = Convert.ToDateTime(Request.QueryString["fim"]).AddDays(1); if ((EstadoConversa)estado == EstadoConversa.Finalizado) { //obtém uma lista de conversas var conversas = new Conversa().ObterConversasFinalizadas(inicio, fim); ViewBag.Paginas = Math.Ceiling(conversas.Count() / Convert.ToDecimal(qtdPagina)); return PartialView("Chamadas", conversas.Skip((pagina * qtdPagina) - qtdPagina).Take(qtdPagina).OrderByDescending(x => x.Inicio).ToList()); } else { //obtém uma lista de conversas var ids = Directory.GetFiles(MvcApplication.FolderLog); var conversas = new List<Conversa>(); foreach (var id in ids) conversas.Add(new Conversa(id)); conversas = conversas.Where(x => x.Estado == (EstadoConversa)estado).ToList(); conversas = conversas.Where(x => x.Inicio >= inicio).ToList(); conversas = conversas.Where(x => x.Fim <= fim || x.Fim.HasValue == false).ToList(); ViewBag.Paginas = Math.Ceiling(conversas.Count() / Convert.ToDecimal(qtdPagina)); return PartialView("Chamadas", conversas.Skip((pagina * qtdPagina) - qtdPagina).Take(qtdPagina).OrderByDescending(x => x.Inicio).ToList()); } }
public ActionResult Mensagens(string id) { if (!string.IsNullOrEmpty(id)) { int idChat = 0; if (Int32.TryParse(id, out idChat)) { var conversa = new Conversa().ObterConversaFinalizada(idChat); return PartialView(conversa.Mensagens.ToList()); } else { var arquivoCaminho = Conversa.ObterCaminhoArquivo(id); var conversa = new Conversa(arquivoCaminho); return PartialView("~/Views/Conversa/Mensagens.cshtml", conversa.Mensagens); } } else { return null; } }
/// <summary> /// Define o usuário administrador responsável pela chamada quando chamada é iniciada em sessão /// </summary> /// <param name="conversa"></param> /// <param name="administrador"></param> protected void DefinirAdminParaConversa(Conversa conversa, Administrador administrador) { conversa.Administrador = new Administrador(administrador.Usuario) { Id = administrador.Id, Nome = administrador.Nome }; conversa.Estado = EstadoConversa.EmSessao; conversa.AdicionarMensagemAdminOnline(true); }
/// <summary> /// Inicia uma nova conversa /// </summary> /// <param name="name"></param> /// <param name="question"></param> /// <param name="id"></param> private void NovaConversa(string nomeCliente, string pergunta, string id) { var arquivoCaminho = Conversa.ObterCaminhoArquivo(id); var conversa = new Conversa(arquivoCaminho, nomeCliente); conversa.EnviarMensagemUsuario(pergunta); }
public ActionResult Atender(string id) { var adm = Racco.Loja.Internacional.Chat.Controllers.BaseController.ObterAdministradorAutenticado(); if (adm != null) { var filePath = Conversa.ObterCaminhoArquivo(id); if (System.IO.File.Exists(filePath)) { //Get the Chat object and Validate the data var chat = new Conversa(filePath); if (chat.Administrador == null) { DefinirAdminParaConversa(chat, adm); return Json(new JsonRequestResult() { ResultType = JsonRequestResultType.Success, ReturnUrl = Url.Content("~/Conversa/Admin/" + id) }, JsonRequestBehavior.AllowGet); } else if (chat.Administrador.Usuario == adm.Usuario) { return Json(new JsonRequestResult() { ResultType = JsonRequestResultType.Success, ReturnUrl = Url.Content("~/Conversa/Admin/" + id) }, JsonRequestBehavior.AllowGet); } else { return Json(new JsonRequestResult() { ResultType = JsonRequestResultType.Alert, Message = Resources.Resource.Mensagem_ChamadaAtendidaPorOutro }, JsonRequestBehavior.AllowGet); } } else { return Json(new JsonRequestResult() { ResultType = JsonRequestResultType.Alert, Message = Resources.Resource.Mensagem_ChatNaoEncontrado }, JsonRequestBehavior.AllowGet); } } else { Response.StatusCode = 401; throw new Exception(Resources.Resource.Mensagem_SessaoExpirada); } }
public bool UsuarioEnviarMensagem(string id, string mensagem) { if (!string.IsNullOrEmpty(id)) { var caminhoArquivo = Conversa.ObterCaminhoArquivo(id); var conversa = new Conversa(caminhoArquivo); conversa.EnviarMensagemUsuario(Util.EncodeMessage(mensagem)); return true; } return false; }
public bool AdminEnviarMensagem(string id, string message) { if (EstaAutenticado()) { if (id != string.Empty) { var filePath = Conversa.ObterCaminhoArquivo(id); var objChat = new Conversa(filePath); objChat.EnviarMensagemAdmin(Util.EncodeMessage(message)); return true; } return false; } else { System.Web.HttpContext.Current.Response.StatusCode = 401; return false; } }
public bool Finalizar(string id) { if (!string.IsNullOrEmpty(id)) { var filePath = Conversa.ObterCaminhoArquivo(id); var objChat = new Conversa(filePath); var adm = Racco.Loja.Internacional.Chat.Controllers.BaseController.ObterAdministradorAutenticado(); if (objChat.Administrador.Usuario == adm.Usuario)//id do usuario { objChat.FinalizarConversaAdmin(); return true; } } return false; }
public bool Cancelar(string id) { if (!string.IsNullOrEmpty(id)) { var arquivoCaminho = Conversa.ObterCaminhoArquivo(id); var conversa = new Conversa(arquivoCaminho); conversa.FinalizarConversaUsuario(); return true; } return false; }