public void TVAdmin_004_QAFuncForEvent()
        {
            try
            {
                log.Info("TVAdmin_004_QAFuncForEvent test started" + " at line:" + new StackTrace(true).GetFrame(0).GetFileLineNumber());

                objAdminVideoManagement = new Chrome_VideoManagement(driver, log, executor, iWait);
                objAdminPollManagement  = new Chrome_PollManagement(driver, log, executor, iWait);
                objWebPollManagement    = new Chrome_PollManagementVerification(driver, log, executor, iWait);
                objWebQAManagement      = new Chrome_QAManagementVerification(driver, log, executor, iWait);
                objWebEventtManagement  = new Chrome_EventManagementVerification(driver, log, executor, iWait);
                objAdminEventManagement = new Chrome_EventManagement(driver, log, executor, iWait);

                #region Create Event / Free Live Video  With QA enable

                String videoName = CreateFreeLiveVideoWithQA();
                String eventName = objAdminEventManagement.CreateEventWithQA(videoName);
                log.Info("Event name  :::: " + eventName);
                #endregion

                RedirectToQAManagement();

                SearchEventUnderQA(eventName);

                #region Selecting Event from Search result

                iWait.Until(ExpectedConditions.ElementIsVisible((OR.GetElement("QnAManagement", "SearchResult", "TVAdminPortalOR.xml"))));
                driver.FindElement((OR.GetElement("QnAManagement", "SelectVidRadioBtn", "TVAdminPortalOR.xml"))).Click();
                driver.FindElement((OR.GetElement("QnAManagement", "SelectVideoPlcHolder", "TVAdminPortalOR.xml"))).Click();
                iWait.Until(ExpectedConditions.InvisibilityOfElementLocated((OR.GetElement("SeriesManagement", "OverlayWait", "TVAdminPortalOR.xml"))));

                #endregion

                iWait.Until(ExpectedConditions.ElementIsVisible((OR.GetElement("QnAManagement", "TxtChatBox", "TVAdminPortalOR.xml"))));

                // Verifying Event Name
                Assert.AreEqual(driver.FindElement((OR.GetElement("QnAManagement", "TitleName", "TVAdminPortalOR.xml"))).Text.Trim(), eventName);

                #region Open new tab and navigate to web portal

                uf.OpenNewTab(driver);

                log.Info("count ::: " + driver.WindowHandles.Count);

                String browsertype = uf.getRunningBrowser(driver, driver.FindElement(By.TagName("html")));

                uf.SwitchToWebTab(driver, browsertype);

                uf.NavigateWebPortal(cf, driver);

                uf.isJqueryActive(driver);

                iWait.Until(ExpectedConditions.InvisibilityOfElementLocated((OR.GetElement("SeriesManagement", "OverlayWait", "TVAdminPortalOR.xml"))));

                #endregion

                #region Search Event On Web Portal

                // Search the video on Web Portal
                objWebPollManagement.Search(eventName, null, false);
                uf.isJqueryActive(driver);
                objWebPollManagement.HandlingEmergencyMessage();
                objWebPollManagement.ClickOnEvent(eventName);
                uf.isJqueryActive(driver);

                #endregion

                #region Click on Live Video present in Event

                objWebEventtManagement.SelectVideoFromVideoSheduleSection(videoName);

                uf.isJqueryActive(driver);

                // Verify that poll panel is displayed
                Assert.AreEqual(true, objWebQAManagement.IsQAPanelDisplayed());

                Thread.Sleep(1000);

                Assert.AreEqual(false, objWebQAManagement.IsChatboxEnabled());  // true Means QA panel is disable.

                //Assert.AreEqual(true, objWebQAManagement.IsSendButtonEnabled());


                #endregion

                #region Switch to Admin and Stop the chat

                uf.SwitchToAdminTab(driver, browsertype);

                // Clicknig on Stop button
                driver.FindElement((OR.GetElement("QnAManagement", "StopStartButton", "TVAdminPortalOR.xml"))).Click();

                Thread.Sleep(2000);

                //iWait.Until(d => d.FindElement(By.Id("Sucess_Message")).Text.Trim().Equals("Q&A has been closed successfully."));

                // Assert.AreEqual("Q&A has been closed successfully.", driver.FindElement(By.Id("Sucess_Message")).Text.Trim());



                executor.ExecuteScript("arguments[0].click()", driver.FindElement((OR.GetElement("QnAManagement", "SuccessMsgOkButton", "TVAdminPortalOR.xml"))));

                iWait.Until(d => d.FindElement((OR.GetElement("SeriesManagement", "OverlayWait", "TVAdminPortalOR.xml"))).GetAttribute("class").Trim().Equals("overlay"));

                // Verify the Text of Start button
                Assert.AreEqual("Start", driver.FindElement((OR.GetElement("QnAManagement", "StopStartButton", "TVAdminPortalOR.xml"))).Text.Trim());

                #endregion

                #region Switch to Web portal and Verify the Status of QA panel

                uf.SwitchToWebTab(driver, browsertype);

                uf.isJqueryActive(driver);

                Thread.Sleep(1000);

                Assert.AreEqual(true, objWebQAManagement.IsChatboxEnabled());

                // Assert.AreEqual(false, objWebQAManagement.IsSendButtonEnabled());


                #endregion

                #region Switch to Admin and Start the chat

                uf.SwitchToAdminTab(driver, browsertype);

                // Clicknig on start button
                driver.FindElement((OR.GetElement("QnAManagement", "StopStartButton", "TVAdminPortalOR.xml"))).Click();

                Thread.Sleep(2000);

                //iWait.Until(d => d.FindElement(By.Id("Sucess_Message")).Text.Trim().Equals("Q&A started successfully."));

                //Assert.AreEqual("Q&A started successfully.", driver.FindElement(By.Id("Sucess_Message")).Text.Trim());

                Thread.Sleep(1000);

                executor.ExecuteScript("arguments[0].click()", driver.FindElement((OR.GetElement("QnAManagement", "SuccessMsgOkButton", "TVAdminPortalOR.xml"))));

                iWait.Until(d => d.FindElement((OR.GetElement("SeriesManagement", "OverlayWait", "TVAdminPortalOR.xml"))).GetAttribute("class").Trim().Equals("overlay"));

                // Verify the Text of stop button
                Assert.AreEqual("Stop", driver.FindElement((OR.GetElement("QnAManagement", "StopStartButton", "TVAdminPortalOR.xml"))).Text.Trim());


                #endregion

                #region Switch to Web portal and Verify the Status of QA panel

                uf.SwitchToWebTab(driver, browsertype);

                uf.isJqueryActive(driver);

                Thread.Sleep(1000);

                Assert.AreEqual(false, objWebQAManagement.IsChatboxEnabled());

                // Assert.AreEqual(true, objWebQAManagement.IsSendButtonEnabled());


                #endregion

                String GUID = uf.getGuid();

                int subconuter = GUID.Length / 2;

                String userMessage = cf.readingXMLFile("AdminPortal", "QAManagement", "userMessageForEvent", "Config.xml") + " " + GUID.Substring(0, subconuter - 1) + " " + GUID.Substring(subconuter, subconuter);

                #region Sending message from User to admin

                objWebPollManagement.ClickOnLoginLink();

                objWebPollManagement.Login(cf.readingXMLFile("WebPortal", "CorporateUser", "corpUserName", "Config.xml"), cf.readingXMLFile("WebPortal", "CorporateUser", "corpPassWord", "Config.xml"));

                uf.isJqueryActive(driver);

                objWebPollManagement.HandlingWelcomePopup();

                objWebQAManagement.sendMessageToAdmin(userMessage);

                #endregion

                #region Verify User message on Web Portal

                objWebQAManagement.VerifyUserMessageOnWebPortal(userMessage);

                #endregion

                #region Verify User message on Admin Portal

                uf.SwitchToAdminTab(driver, browsertype);

                VerifyUserMessageOnAdmin(userMessage);

                #endregion

                #region Sending message from admin to User

                String adminMessage = cf.readingXMLFile("AdminPortal", "QAManagement", "adminMessageForEvent", "Config.xml") + " " + GUID.Substring(0, subconuter - 1) + " " + GUID.Substring(subconuter, subconuter);

                SendMessageToUser(adminMessage);

                #endregion

                #region Verify Admin message on Admin Portal

                VerifyAdminMessageOnAdmin(adminMessage);

                #endregion

                #region Verify User message on Web Portal

                uf.SwitchToWebTab(driver, browsertype);

                objWebQAManagement.VerifyAdminMessageOnWebPortal(adminMessage);

                #endregion

                objWebPollManagement.Logout();
            }
            catch (Exception e)
            {
                log.Error(e.Message + "\n" + e.StackTrace + " at line:" + new StackTrace(true).GetFrame(0).GetFileLineNumber());
                Console.WriteLine(e.Message + "\n" + e.StackTrace);
                Assert.AreEqual(true, false);
            }
        }