public void DeleteLogFile()
        {
            try
            {
                if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\LogFile.txt"))
                {
                    string fileName = AppDomain.CurrentDomain.BaseDirectory + "\\LogFile.txt";
                    // Create new FileInfo object and get the Length.
                    FileInfo f     = new FileInfo(fileName);
                    long     s1    = f.Length;
                    int      fsize = ConvertBytesToMegabytes(s1); ///size is 10 MB
                    /// long fsize = s1 / 1024;/// size in KB

                    ///ExtractLibrary.WriteInLogFile("file size "+ fsize);

                    if (fsize > 1)
                    {
                        ExtractLibrary.WriteInLogFile("move now");
                        f.MoveTo(AppDomain.CurrentDomain.BaseDirectory + "\\LogFileBak.txt");
                        ///f.Delete();  vaishali commented not to delete but backup
                    }
                }
            }
            catch (Exception ex)
            {
                Library.WriteErrorLog("Error during delete log file -" + ex.Message);
            }
        }
        /// <summary>
        /// Check Account details Approved/Disabled/Expired
        /// </summary>
        /// <param name="HDInfo">Harddisk number</param>
        /// <param name="username">PC LogIn Username</param>
        public async void SetAuthDetail(string HDInfo, string username)
        {
            try
            {
                DataAccess ServiceObj = new DataAccess();
                HRDsqApi.DataAccess.User objuserinfo = new HRDsqApi.DataAccess.User();
                List <HRDsqApi.DataAccess.UserHDDInfo> userhddinfo = new List <HRDsqApi.DataAccess.UserHDDInfo>();
                userhddinfo.Add(new HRDsqApi.DataAccess.UserHDDInfo {
                    HDDNumber = HDInfo.ToString(), IsServer = true
                });
                objuserinfo.UserHDDInfo = userhddinfo;

                // call api and check for Status New/Pending/Approved/Disable
                objuserinfo = await ServiceObj.GetServerDetail(objuserinfo);

                string subcription = string.Empty;
                int    SMScount    = 0;
                ExtractLibrary.WriteInLogFile("user status: " + objuserinfo.Message);

                if (objuserinfo.Message.ToLower().ToString().Trim() == "approved")
                {
                    HrdsqLicenseUserId = objuserinfo.HrdsqLicenseUserId;
                    HrdsqLicenseKey    = objuserinfo.HrdsqLicenseKey;

                    //Library.WriteErrorLog("HrdsqLicenseUserId our id" + HrdsqLicenseUserId);
                    //Library.WriteErrorLog("HrdsqLicenseKey our key" + HrdsqLicenseKey);


                    foreach (var item in objuserinfo.UserHDDInfo)
                    {
                        SipUsername  = item.SipUsername;
                        Sippassword  = item.Sippassword;
                        Sipserver    = item.Sipserver;
                        Sipport      = item.Sipport;
                        subcription  = item.Subscription;
                        SMScount     = item.Count;
                        SMSFNo       = objuserinfo.SMSFromNumber;
                        SMSAuthID    = item.AuthID;
                        SMSAuthToken = item.AuthToken;
                        Logmachine   = item.IPAddress; //Temp Using IP for LogMachine Filed.
                        dbUserId     = item.ID;
                        //-----------Added by Vandna on 12-May-2017-------
                        IsSipVoipSDKlog = objuserinfo.IsSipVoipSDKLog;
                        IsTransPortTCP  = item.IsTransPortTCP;
                        IsDebugMode     = item.IsDebugMode;
                        //--------------End--------------------
                    }
                    DrPhoneNumber = objuserinfo.PhoneNumber;

                    //-----------Added by Vandna on 05-Jan-2017--
                    uAuthID    = objuserinfo.uAuthID;
                    uAuthToken = objuserinfo.uAuthToken;
                    // Library.WriteErrorLog("My auth token" + uAuthToken);
                    uApiKey      = objuserinfo.uApiKey;
                    ProviderType = objuserinfo.ProviderType;

                    Library.WriteErrorLog("IsDebugMode : " + IsDebugMode + " AuthToken: " + uAuthToken);
                    //----End-----

                    //--------------End--------------------

                    if (SipUsername.ToString().Trim() == "" || SipUsername.ToString().Trim() == "-")
                    {
                        Library.WriteErrorLog("Please provide SIP username.");
                    }
                    else if (Sippassword.ToString().Trim() == "" || Sippassword.ToString().Trim() == "-")
                    {
                        Library.WriteErrorLog("Please provide SIP password.");
                    }
                    else if (Sipserver.ToString().Trim() == "" || Sipserver.ToString().Trim() == "-")
                    {
                        Library.WriteErrorLog("Please provide SIP Server.");
                    }
                    else if (Sipport.ToString().Trim() == "" || Sipport.ToString().Trim() == "-")
                    {
                        Library.WriteErrorLog("Please provide SIP port number.");
                    }
                    else if (SMSFNo.ToString().Trim() == "" || SMSFNo.ToString().Trim() == "-")
                    {
                        Library.WriteErrorLog("Please provide SMS from number.");
                    }
                    else if (SMSAuthID.ToString().Trim() == "" || SMSAuthID.ToString().Trim() == "-")
                    {
                        Library.WriteErrorLog("Please provide SMS auth id.");
                    }
                    else if (SMSAuthToken.ToString().Trim() == "" || SMSAuthToken.ToString().Trim() == "-")
                    {
                        Library.WriteErrorLog("Please provide SIP password.");
                    }

                    RegisterToHRDsq(SMSFNo, SMSAuthID, SMSAuthToken, IsSipVoipSDKlog, IsTransPortTCP, IsDebugMode, uApiKey, ProviderType, DrPhoneNumber);
                }
                else
                {
                    Library.WriteErrorLog("Else case -- " + objuserinfo.Message.ToLower().ToString().Trim());
                    switch (objuserinfo.Message.ToLower().ToString().Trim())
                    {
                    case "new":
                        ProcessExtensions.StartProcessAsCurrentUser(AppDomain.CurrentDomain.BaseDirectory + "\\ConvergedComm.exe", "new");
                        break;

                    case "pending":
                        ProcessExtensions.StartProcessAsCurrentUser(AppDomain.CurrentDomain.BaseDirectory + "\\ConvergedComm.exe", "pending");
                        break;

                    case "expired":
                        ProcessExtensions.StartProcessAsCurrentUser(AppDomain.CurrentDomain.BaseDirectory + "\\ConvergedComm.exe", "expired");
                        OnStop();
                        break;

                    case "disable":
                        OnStop();
                        ProcessExtensions.StartProcessAsCurrentUser(AppDomain.CurrentDomain.BaseDirectory + "\\ConvergedComm.exe", "disable");
                        break;

                    default:

                        Library.WriteErrorLog(objuserinfo.Message.ToLower().ToString().Trim());

                        break;
                    }
                }


                //Added On 15-Sept-18
                //string frpRoot = AppDomain.CurrentDomain.BaseDirectory + "\\frp";
                //string frpDest = @"C:\frp";

                //foreach (var file in Directory.GetFiles(frpDest))
                //{
                //    if (!Directory.Exists(frpRoot))
                //    {
                //        Directory.CreateDirectory(frpRoot);
                //    }
                //    File.Copy(file, Path.Combine(frpRoot, Path.GetFileName(file)));
                //}
                //------------------------------



                //string path2 = @"C:\Program Files (x86)\HRDSQPlugin\HRDSQPlugin\HRDSQTray.exe";
                //if (!IsProcessOpen("HRDSQTray.exe"))
                //{
                //    ProcessStartInfo stinfo = new ProcessStartInfo();
                //    stinfo.FileName = @"C:\Program Files (x86)\HRDSQPlugin\HRDSQPlugin\HRDSQTray.exe";
                //    stinfo.CreateNoWindow = true;
                //    stinfo.UseShellExecute = false;
                //    stinfo.Arguments = "-c " + "\"" + path2 + "\"";
                //    stinfo.RedirectStandardOutput = true;
                //    Process myProcess2 = Process.Start(stinfo);


                //    while (!myProcess2.StandardOutput.EndOfStream)
                //    {
                //        Library.WriteErrorLog("FRP LOG " + myProcess2.StandardOutput.ReadLine());
                //    }

                //}
                string text = System.IO.File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "\\frp\\frpc.ini").Replace("$Token", (string.IsNullOrEmpty(uAuthToken) == true ? "$Token": uAuthToken));

                System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "\\frp\\frpc.ini", text);

                //-----------------------------------------
                //sWorkingDir = AppDomain.CurrentDomain.BaseDirectory + "\\frp\\frpc.exe";
                //sWorkingDir = "@" + sWorkingDir.Replace(@"\\", @"\");
                //Library.WriteErrorLog("sWorkingDir" + sWorkingDir);
                //string iniFile = AppDomain.CurrentDomain.BaseDirectory + "\\frp\\frpc.ini";
                //iniFile = @"-c " + iniFile.Replace(@"\\", @"\");
                //Library.WriteErrorLog("iniFile" + iniFile);



                //------------------------------------------
                string path = @"C:\Program Files (x86)\HRDSQPlugin\HRDSQPlugin\frp\frpc.ini";

                if (!IsProcessOpen("frpc.exe"))
                {
                    ProcessStartInfo stinfo = new ProcessStartInfo();
                    stinfo.FileName               = @"C:\Program Files (x86)\HRDSQPlugin\HRDSQPlugin\frp\frpc.exe";
                    stinfo.CreateNoWindow         = true;
                    stinfo.UseShellExecute        = false;
                    stinfo.Arguments              = "-c " + "\"" + path + "\"";
                    stinfo.RedirectStandardOutput = true;
                    Process myProcess = Process.Start(stinfo);

                    while (!myProcess.StandardOutput.EndOfStream)
                    {
                        Library.WriteErrorLog("FRP LOG " + myProcess.StandardOutput.ReadLine());
                    }

                    //    //Library.WriteErrorLog("FRP Service Start");
                    //    //Process proc = new Process();
                    //    //proc.StartInfo.FileName = sWorkingDir;
                    //    //proc.StartInfo.CreateNoWindow = true;
                    //    //proc.StartInfo.UseShellExecute = false;
                    //    //proc.StartInfo.Arguments = @"-c " + iniFile;  //@"-c c:\frp\frpc.ini";
                    //    //proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
                    //    //proc.StartInfo.RedirectStandardOutput = true;

                    //    //Library.WriteErrorLog("FRP Process START");
                    //    //proc.Start();
                    //    //while (!proc.StandardOutput.EndOfStream)
                    //    //{
                    //    //    Library.WriteErrorLog(proc.StandardOutput.ReadLine());
                    //    //}
                    //}

                    //-------------------------------------------------------
                }
            }
            catch (Exception pcex)
            {
                Library.WriteErrorLog("FRPError " + pcex.Message);
            }
        }
        public static HRDsqIns.Classes.Response processing(Response oResponse)
        {
            // Processing

            // LogLibrary.WriteErrorLog("EdIRequest-" + oResponse.EdIRequest);
            // LogLibrary.WriteErrorLog("EDIResponse-" + oResponse.EDIResponse);

            #region

            //Commeneted By Roopal Gautam on 18 Feb 2019.
            //char ElemDelimiter = oResponse.EDIResponse['*'];
            //char SegDelimiter = oResponse.EDIResponse['~'];
            char ElemDelimiter = '*';
            char SegDelimiter  = '~';

            string rval = "";

            var segments = oResponse.EDIResponse.Split(SegDelimiter).Select(x => x.Trim())
                           .AsEnumerable()             // select all users from the database and bring them back to the client
                           .Select((seg, index) => new // project in the index
            {
                Elements = seg.Split(ElemDelimiter).ToArray(),
                index
            });

            var checkof271 = from seg in segments
                             where (seg.Elements[0] == "ST") && (seg.Elements[1] == "271")
                             select seg;

            var checkEBActive = from seg in segments
                                where (seg.Elements[0] == "EB") && (seg.Elements[1] == "1")
                                select seg;
            var checkEBError = from seg in segments
                               where (seg.Elements[0] == "EB") && (seg.Elements[1] != "1")
                               select seg;

            var checkAAAError = from seg in segments
                                where (seg.Elements[0] == "AAA")
                                select seg;

            //Orignal If Condition being replaced by LINQ results.
            //if (insResp.ToString().Trim().ToLower().Contains("~st*271") && insResp.ToString().Trim().ToLower().Contains("eb*1"))
            //This is new if condition using Linq

            //if (checkof271 != null && checkEBActive != null && checkof271.GetEnumerator().MoveNext() && checkEBActive.GetEnumerator().MoveNext())
            if (checkof271.Count() > 0 && checkEBActive.Count() > 0 && checkof271.GetEnumerator().MoveNext() && checkEBActive.GetEnumerator().MoveNext())
            {
                ExtractLibrary.WriteInLogFile("First if condition");
                //New Logic based on LinQ Query
                var ebPriRem = from seg in segments
                               where (seg.Elements.Count() > 7) && (seg.Elements[0] == "EB") && (seg.Elements[1] == "F") && (seg.Elements[6] == "29")
                               select seg.Elements[7];
                if (ebPriRem.Count() > 0 && ebPriRem.GetEnumerator().MoveNext())
                {
                    oResponse.Status       = true;
                    oResponse.RemeningAmnt = "$" + ebPriRem.Max().ToString();

                    //Made By Roopal
                    // oResponse.InsComName = _objCarr.CarrierName.ToString();
                    //oResponse.ErrMessage = insResp;
                    // oResponse.ImportantNotes = HRDsqIns.Classes.GeneralUtilities.ParseNotes(oResponse.EDIResponse);
                    return(oResponse);
                }
                else
                {
                    oResponse.Status       = true;
                    oResponse.RemeningAmnt = "$" + "0.00";
                    //oResponse.InsComName = _objCarr.CarrierName.ToString();
                    //oResponse.ErrMessage = insResp;
                    // oResponse.ImportantNotes = HRDsqIns.Classes.GeneralUtilities.ParseNotes(oResponse.EDIResponse);
                    return(oResponse);
                }
            }


            else if (checkEBError.Count() > 0)
            {
                ExtractLibrary.WriteInLogFile("EB errors");
                // Library.WriteErrorLog("Error not active");
                // Library.WriteErrorLog("_objResp.ErrMessage-" + oResponse.ErrMessage + "_objResp.Status-" + oResponse.Status + "_objResp.InsComName-" + oResponse.InsComName);



                if (oResponse.EDIResponse.ToString().Trim().ToLower().Contains("eb*6"))
                {
                    oResponse.Status       = false;
                    oResponse.RemeningAmnt = "$0.00";
                    oResponse.InsComName   = "Error"; //_objCarr.CarrierName.ToString();
                    oResponse.ErrMessage   = "Inactive.";
                    return(oResponse);
                    // rval = CarName.ToString() + " - Inactive";
                    // return rval;
                }
                else if (oResponse.EDIResponse.ToString().Trim().ToLower().Contains("eb*7"))
                {
                    oResponse.Status       = false;
                    oResponse.RemeningAmnt = "$0.00";
                    oResponse.InsComName   = "Error"; //_objCarr.CarrierName.ToString();
                    oResponse.ErrMessage   = "Inactive - Pending Eligibility Update.";
                    return(oResponse);
                    // rval = CarName.ToString() + " - Inactive - Pending Eligibility Update";
                    // return rval;
                }
                else if (oResponse.EDIResponse.ToString().Trim().ToLower().Contains("eb*8"))
                {
                    oResponse.Status       = false;
                    oResponse.RemeningAmnt = "$0.00";
                    oResponse.InsComName   = "Error"; // _objCarr.CarrierName.ToString();
                    oResponse.ErrMessage   = "Inactive - Pending Investigation.";
                    return(oResponse);
                    //rval = CarName.ToString() + " - Inactive - Pending Investigation";
                    //return rval;
                }
                else if (oResponse.EDIResponse.ToString().Trim().ToLower().Contains("eb*i"))
                {
                    oResponse.Status       = false;
                    oResponse.RemeningAmnt = "$0.00";
                    oResponse.InsComName   = "Error"; // _objCarr.CarrierName.ToString();
                    oResponse.ErrMessage   = "Non-Covered.";
                    return(oResponse);
                    // rval = CarName.ToString() + " - Non-Covered";
                    // return rval;
                }
                else
                {
                    oResponse.Status       = false;
                    oResponse.RemeningAmnt = "$0.00";
                    oResponse.InsComName   = "Error";
                    //oResponse.InsComName = _objCarr.CarrierName.ToString();
                    oResponse.ErrMessage = "Error";
                }

                #region

                //var error = from seg in checkEBError
                //                    where (seg.Elements[1] == "6")
                //                    select seg;
                //if (error.Count() > 0)
                //{
                //    oResponse.Status = false;
                //    oResponse.RemeningAmnt = "$0.00";
                //    oResponse.InsComName = "Error"; //_objCarr.CarrierName.ToString();
                //    oResponse.ErrMessage = "Inactive.";
                //    return oResponse;
                //}

                //error = from seg in checkEBError
                //     where (seg.Elements[1] == "7")
                //     select seg;

                //if (error.Count() > 0)
                //{

                //    oResponse.Status = false;
                //    oResponse.RemeningAmnt = "$0.00";
                //    oResponse.InsComName = "Error"; //_objCarr.CarrierName.ToString();
                //    oResponse.ErrMessage = "Inactive - Pending Eligibility Update.";
                //    return oResponse;
                //}
                //error = from seg in checkEBError
                //     where (seg.Elements[1] == "8")
                //     select seg;
                //if (error.Count() > 0)
                //{
                //    oResponse.Status = false;
                //    oResponse.RemeningAmnt = "$0.00";
                //    oResponse.InsComName = "Error"; // _objCarr.CarrierName.ToString();
                //    oResponse.ErrMessage = "Inactive - Pending Investigation.";
                //    return oResponse;
                //}
                //error = from seg in checkEBError
                //     where (seg.Elements[1] == "i")
                //     select seg;
                //if (error.Count() > 0)
                //{
                //    oResponse.Status = false;
                //    oResponse.RemeningAmnt = "$0.00";
                //    oResponse.InsComName = "Error"; // _objCarr.CarrierName.ToString();
                //    oResponse.ErrMessage = "Non-Covered.";
                //    return oResponse;
                //}

                #endregion
            }


            #region

            //else if (oResponse.EDIResponse.ToString().Trim().ToLower().Contains("~st*271") && oResponse.EDIResponse.ToString().Trim().ToLower().Contains("eb*6"))
            //{
            //    oResponse.Status = false;
            //    oResponse.RemeningAmnt = "$0.00";
            //    oResponse.InsComName = "Error"; //_objCarr.CarrierName.ToString();
            //    oResponse.ErrMessage = "Inactive.";
            //    return oResponse;
            //    // rval = CarName.ToString() + " - Inactive";
            //    // return rval;
            //}
            //else if (oResponse.EDIResponse.ToString().Trim().ToLower().Contains("~st*271") && oResponse.EDIResponse.ToString().Trim().ToLower().Contains("eb*7"))
            //{
            //    oResponse.Status = false;
            //    oResponse.RemeningAmnt = "$0.00";
            //    oResponse.InsComName = "Error"; //_objCarr.CarrierName.ToString();
            //    oResponse.ErrMessage = "Inactive - Pending Eligibility Update.";
            //    return oResponse;
            //    // rval = CarName.ToString() + " - Inactive - Pending Eligibility Update";
            //    // return rval;
            //}
            //else if (oResponse.EDIResponse.ToString().Trim().ToLower().Contains("~st*271") && oResponse.EDIResponse.ToString().Trim().ToLower().Contains("eb*8"))
            //{
            //    oResponse.Status = false;
            //    oResponse.RemeningAmnt = "$0.00";
            //    oResponse.InsComName = "Error"; // _objCarr.CarrierName.ToString();
            //    oResponse.ErrMessage = "Inactive - Pending Investigation.";
            //    return oResponse;
            //    //rval = CarName.ToString() + " - Inactive - Pending Investigation";
            //    //return rval;
            //}
            //else if (oResponse.EDIResponse.ToString().Trim().ToLower().Contains("~st*271") && oResponse.EDIResponse.ToString().Trim().ToLower().Contains("eb*i"))
            //{
            //    oResponse.Status = false;
            //    oResponse.RemeningAmnt = "$0.00";
            //    oResponse.InsComName = "Error"; // _objCarr.CarrierName.ToString();
            //    oResponse.ErrMessage = "Non-Covered.";
            //    return oResponse;
            //    // rval = CarName.ToString() + " - Non-Covered";
            //    // return rval;
            //}

            #endregion

            else if (checkAAAError.Count() > 0)
            {
                ExtractLibrary.WriteInLogFile("AAA errors");
                // Library.WriteErrorLog("Error AAA");
                string errmsg    = string.Empty;
                string ErrorCode = checkAAAError.Select(a => a.Elements[3]).FirstOrDefault();           // taking out error code from the response.

                errmsg = dic.Where(a => a.Key.Equals(ErrorCode)).Select(a => a.Value).FirstOrDefault(); //reading dictionary for the description corresponding to the error code.


                // Library.WriteErrorLog("Inside Method Error Message --------"+errmsg);
                //if there is no such error code in the dictionary then,
                if (string.IsNullOrEmpty(rval))
                {
                    rval = "Error! AAA " + ErrorCode;
                }

                oResponse.Status       = false;
                oResponse.RemeningAmnt = "$0.00";
                oResponse.InsComName   = "Error"; //_objCarr.CarrierName.ToString();

                if (errmsg == "Unable to Respond at Current Time")
                {
                    ExtractLibrary.WriteInLogFile("possible");
                    errmsg = "Timeout";
                }

                //  Library.WriteErrorLog("Final Error Msg is" + errmsg);
                oResponse.ErrMessage = errmsg;
                return(oResponse);
            }


            //else if (oResponse.EDIResponse.ToString().Trim().ToLower().Contains("~st*271") && oResponse.EDIResponse.ToString().Trim().ToLower().Contains("aaa*"))
            //{

            //    oResponse.Status = false;
            //    oResponse.RemeningAmnt = "$0.00";
            //    oResponse.InsComName = "Error"; //_objCarr.CarrierName.ToString();
            //    oResponse.ErrMessage = "Error";
            //    return oResponse;
            //}
            else
            {
                ExtractLibrary.WriteInLogFile("final else condition");
                //Library.WriteErrorLog("Real scenario");
                //int sindx, eindx;
                //sindx = oResponse.EDIResponse.ToString().IndexOf("description=\"");
                //rval = oResponse.EDIResponse.ToString().Substring(sindx);
                //eindx = rval.ToString().IndexOf("\"></ns2:Status>");
                //rval = rval.ToString().Remove(eindx);
                //rval = rval.ToString().Replace("description=\"", "");

                oResponse.Status       = false;
                oResponse.RemeningAmnt = "$0.00";
                oResponse.InsComName   = "Error";
                //oResponse.InsComName = _objCarr.CarrierName.ToString();
                oResponse.ErrMessage = "Not able to verify Eligibility(01)";
                return(oResponse);
            }

            // Library.WriteErrorLog("_objResp.ErrMessage-" + oResponse.ErrMessage + "_objResp.Status-" + oResponse.Status + "_objResp.InsComName-" + oResponse.InsComName);

            return(oResponse);

            #endregion //Processing
        }