Ejemplo n.º 1
0
        /// <summary>
        /// Este se usa para casos donde el cliente (ej TP) tienbe su propio formulario de carga de dato y genera la URL . 
        /// 
        /// </summary>
        /// <param name="model"></param>
        /// <param name="phone"></param>
        /// <param name="initialMessage"></param>
        /// <param name="roomId"></param>
        /// <param name="userId"></param>
        /// <author>moviedo</author>
        internal static void CreateChatRoom(ChatRoomFromUrlModel model,
            String phone,String  initialMessage,
            out int roomId, out int userId, 
            out int messageId, out bool userIsAlreadyUsed, 
            out bool EmailAvailable)
        {
            roomId = -1;
            messageId = -1;
            //Busca el cliente relacionado al telefono
            userId = EpironChatBC.CheckPhoneId(phone, model.ClientName, model.ClientEmail);

            ChatConfigBE chatConfigBE = ChatConfigDAC.GetByParam(model.ChatConfigId);
            userIsAlreadyUsed = GetChatRoom_IfNotExpired(userId, chatConfigBE);
            EmailAvailable = chatConfigBE.EmailAvailable;
            if (userIsAlreadyUsed)
            {
                return;
            }

            roomId = ChatRoomDAC.CreateChatRoom(chatConfigBE.ChatConfigId, (int)Common.Enumerations.ChatRoomStatus.Waiting, String.Empty, null);

            messageId = EpironChatBC.InsertMessage(roomId, userId, initialMessage, null);
        }
Ejemplo n.º 2
0
        public ActionResult Chatfrm(string tel, string clientName, string email, string query)
        {
            bool anyIsNull = string.IsNullOrEmpty(Request.QueryString["tel"]) ||
                string.IsNullOrEmpty(Request.QueryString["clientName"]) ||
                string.IsNullOrEmpty(Request.QueryString["email"]) ||
                string.IsNullOrEmpty(Request.QueryString["query"]);

            if (anyIsNull)
                return RedirectToAction("Index");

            ChatRoomFromUrlModel model = new ChatRoomFromUrlModel();

            int chatRoomId = -1;
            int userId = -1;
            int messageId = -1;
            bool userIsAlreadyUsed = false; //<-- indica si el usuario ya tiene un chatroom activo
            //model.Phone = tel;
            model.ClientName = clientName;
            model.ClientEmail = email;
            //model.InitialMessage = query;
            bool emailAvailable = false; //<-- indica si el envio de emails esta disponible

            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(model, tel, query, out chatRoomId, out userId, out messageId, out userIsAlreadyUsed, out emailAvailable);
                else
                    EpironChatBC.CreateChatRoom_NoOperators(tel, null, string.Empty, query);

                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);
                //}
            }

        }