public ActionResult Chat(string tel, string url, string @case, Boolean?isAjaxCall) { int chatRoomId = -1; int userId = -1; int messageId = -1; bool userIsAlreadyUsed = false; //<-- indica si el usuario ya tiene un chatroom activo ChatRoomFromUrlModel model = new ChatRoomFromUrlModel(); try { if (WebChat.Common.Common.Host_Referer != null)//<--pregunto si el parametro esta configurado { if (HttpContext.Request.ServerVariables["HTTP_REFERER"] == null || !HttpContext.Request.ServerVariables["HTTP_REFERER"].Contains(WebChat.Common.Common.Host_Referer)) { Helper.Log("Ruta de acceso incorrecta, HTTP_REFERER distinto de" + WebChat.Common.Common.Host_Referer); //Registro que se ingreso por un lugar que no correspondería ChatRoomFromUrlModel mChatRoomFromUrlModel = new ChatRoomFromUrlModel(); mChatRoomFromUrlModel.HaveException = true; return(View("Chat", mChatRoomFromUrlModel)); //abro el chat pero con excepcion, para detener todo. } } ChatConfigBE chatConfigBE = ChatConfigDAC.GetByParam(null); if (chatConfigBE == null) { model.IsConfigavailable = false; //<--No hay configuraciones, en el cliente se mostrara un mensaje return(View("chat", model)); } model.OperatrCount = EpironChatDAC.OnlineUsers_Count(chatConfigBE.ChatConfigGuid); if (model.OperatrCount > 0) { EpironChatBC.CreateChatRoom_FromUrl(tel, url, @case, out chatRoomId, out userId, out messageId, out userIsAlreadyUsed); } else { EpironChatBC.CreateChatRoom_NoOperators(tel, url, @case, string.Empty); } model.ChatConfigId = chatConfigBE.ChatConfigGuid; model.UserId = userId; model.RoomId = chatRoomId; model.MessageId = messageId; model.userAlreadySigned = userIsAlreadyUsed; model.IsConfigavailable = true; model.EmailAvailable = chatConfigBE.EmailAvailable; //Survey model.SurveyAvailable = chatConfigBE.ChatSurveyConfigId != null; model.ChatSurveyConfigText = chatConfigBE.ChatSurveyConfigText; model.ChatSurveyConfigURL = chatConfigBE.ChatSurveyConfigURL; model.ChatSurveyConfigId = chatConfigBE.ChatSurveyConfigId; // Busco las appSettings List <ApplicationSettingBE> wAppSettingsList = ApplicationSettingBC.SearchApplicationSetting(); model.RetriveMessage_Timer = int.Parse(wAppSettingsList.Find(x => x.SettingId.Equals((int)Enumerations.ApplicationSettingId.RetriveMessage_Timer)).Value); model.GetRecord_Timer = int.Parse(wAppSettingsList.Find(x => x.SettingId.Equals((int)Enumerations.ApplicationSettingId.GetRecord_Timer)).Value); model.VersionWeb = wAppSettingsList.Find(x => x.SettingId.Equals((int)Enumerations.ApplicationSettingId.VersionWeb)).Value; model.GetRecordIdTries = int.Parse(wAppSettingsList.Find(x => x.SettingId.Equals((int)Enumerations.ApplicationSettingId.GetRecordIdTries)).Value); model.ClientInactivityTimeOut = int.Parse(wAppSettingsList.Find(x => x.SettingId.Equals((int)Enumerations.ApplicationSettingId.ClientInactivityTimeOut)).Value) / 1000; model.GetRecord_TimeOut = int.Parse(wAppSettingsList.Find(x => x.SettingId.Equals((int)Enumerations.ApplicationSettingId.GetRecord_TimeOut)).Value) / 1000; model.MaxLength_Message = int.Parse(wAppSettingsList.Find(x => x.SettingId.Equals((int)Enumerations.ApplicationSettingId.MaxLength_Message)).Value); if (isAjaxCall.HasValue) { return(Json(new { Result = "OK", userId = userId, roomId = chatRoomId, count = model.OperatrCount, messageId = model.MessageId }, JsonRequestBehavior.AllowGet)); } return(View("chat", model)); } catch (Exception ex) { Helper.Log(ex.Message); if (isAjaxCall.HasValue) { return(Json(new { Result = "ERROR", Message = Fwk.Exceptions.ExceptionHelper.GetAllMessageException(ex) })); } else { model.HaveException = true; return(View("chat", model)); } } }