/// <summary>
        /// function to get user transcript related to curricula
        /// </summary>
        /// <param name="orgID">organization id</param>
        /// <param name="userID">user id</param>
        /// <param name="testCaseType">positive/negative</param>
        /// <param name="certificationCourseName">course name</param>
        /// <returns>true/false</returns>
        public bool CurriclaTranscript(string orgID, string userID, string testcaseType, string certificationCourseName)
        {
            clsGlobalVariable.strExceptionReport = string.Empty;
            string     statusCode = string.Empty;
            string     result     = string.Empty;
            clsGeneric oGeneric   = new clsGeneric();
            string     URI        = string.Empty;
            string     courseID   = string.Empty;
            bool       _flag      = false;
            string     lCourseId  = string.Empty;
            clsPage    oPage      = new clsPage(iWebdriver);

            clsAPITranscript oclsAPITranscript = new clsAPITranscript();

            lCourseId = oPage.GetCurriculumId(certificationCourseName);


            try
            {//////////////////////getting transcript
                oGeneric.GetApiResponseCodeData(out statusCode, out result, "GET", ApplicationSettings.APIURI() + clsAPI.GetSpecificCurriculumTranscript.Replace("{orgID}", orgID).Replace("{userID}", userID).Replace("{courseID}", lCourseId), oclsAPITranscript, "H1", _ecomLoginKey, _ecomTransactionKey);

                var status = JsonConvert.DeserializeObject <List <clsAPITranscript> >(result);

                if (testcaseType.ToUpper() == "NEGATIVE")
                {
                    if (statusCode == "OK/200")
                    {
                        _flag = true;
                    }
                    else
                    {
                        _flag = false;
                    }
                }
                else if (testcaseType.ToUpper() == "POSITIVE")
                {
                    if (statusCode == "OK/200")
                    {
                        _flag = true;
                    }
                    else
                    {
                        _flag = false;
                    }
                }
            }
            catch (Exception e)
            {
                clsException.ExceptionHandler(e, iWebdriver, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name);

                return(false);
            }
            return(_flag);
        }
        /// <summary>
        /// function to get user transcript
        /// </summary>
        /// <param name="orgID">organization id</param>
        /// <param name="userID">user id</param>
        /// <param name="testCaseType">positive/negative</param>
        /// <param name="certificationCourseName">course name</param>
        /// <returns>true/false</returns>
        public bool GetUserTranscript(string orgID, string userID, string testCaseType, string certificationCourseName)
        {
            bool             _flag             = false;
            string           statusCode        = string.Empty;
            string           result            = string.Empty;
            clsGeneric       oGeneric          = new clsGeneric();
            clsAPITranscript oclsAPITranscript = new clsAPITranscript();

            try
            {
                oGeneric.GetApiResponseCodeData(out statusCode, out result, "GET", ApplicationSettings.APIURI() + clsAPI.GetUserTranscript.Replace("{orgID}", orgID).Replace("{userid}", userID), oclsAPITranscript, "H1", _ecomLoginKey, _ecomTransactionKey);

                if (testCaseType.ToUpper() == "NEGATIVE")
                {
                    if (statusCode == "OK/200")
                    {
                        _flag = true;
                    }
                    else
                    {
                        _flag = false;
                    }
                }
                else if (testCaseType.ToUpper() == "POSITIVE")
                {
                    if (statusCode == "OK/200")
                    {
                        _flag = true;
                    }
                    else
                    {
                        _flag = false;
                    }
                }
                else if (testCaseType == "CERTIFICATION")
                {
                    try
                    {
                        var certCourseID = JsonConvert.DeserializeObject <List <clsAPITranscript> >(result);

                        var courseid = certCourseID.Where(cus => cus.CourseName == certificationCourseName);

                        List <ILMS.clsAPITranscript> t = new List <clsAPITranscript>();
                        t = courseid.ToList();
                        UserEnrollment ouser = new UserEnrollment();
                        ouser.userid = userID;

                        oGeneric.GetApiResponseCodeData(out statusCode, out result, "POST", ApplicationSettings.APIURI() + clsAPI.EnrollRecertification.Replace("{orgid}", orgID).Replace("{CourseID}", t[0].CourseID.ToString()), ouser, "H1", _ecomLoginKey, _ecomTransactionKey);


                        oGeneric.GetApiResponseCodeData(out statusCode, out result, "GET", ApplicationSettings.APIURI() + clsAPI.GetUserTranscript.Replace("{orgID}", orgID).Replace("{courseID}", t[0].CourseID.ToString()).Replace("{userid}", userID), ouser, "H1", _ecomLoginKey, _ecomTransactionKey);


                        var status = JsonConvert.DeserializeObject <List <clsAPITranscript> >(result);

                        if (status.Count > 0)
                        {
                            courseid = status.Where(cus => cus.CourseName == certificationCourseName);
                            t        = courseid.ToList();

                            if (t[0].Status.ToUpper() == "NOT STARTED")
                            {
                                _flag = true;
                            }
                            else
                            {
                                _flag = false;
                            }
                        }
                        else
                        {
                            _flag = false;
                        }
                    }
                    catch (Exception er) { clsGlobalVariable.strExceptionReport = "Recertification scenario failed"; return(false); }
                }
            }
            catch { clsGlobalVariable.strExceptionReport = "Get transcript scenario failed"; return(false); }
            return(_flag);
        }
        /// <summary>
        /// update transcript function for put api request
        /// </summary>
        /// <param name="hTable">input from transcript function</param>
        /// <returns>true/false</returns>
        private bool UpdateTranscript(Hashtable hTable)
        {
            string _UserID = string.Empty;

            clsGlobalVariable.strExceptionReport = string.Empty;
            string     statusCode       = string.Empty;
            string     statusCodeUpdate = string.Empty;
            string     result           = string.Empty;
            string     resultput        = string.Empty;
            clsGeneric oGeneric         = new clsGeneric();
            string     URI      = string.Empty;
            string     courseID = string.Empty;
            bool       _flag    = false;

            try
            {
                Transcript       oTranscript       = new ILMS.Transcript();
                clsAPITranscript oclsAPITranscript = new clsAPITranscript();


                clsPage oPage = new clsPage(iWebdriver);

                _orgID       = oPage.GetOrganizationID();
                clsAPI.orgID = _orgID;


                Users oUser = new Users();

                GetAPICredentials oGetAPICredentials = new GetAPICredentials();
                ////////////////////get api credentials for organization

                oGeneric.GetApiResponseCodeData(out statusCode, out result, "GET", ApplicationSettings.APIURI() + clsAPI.orgCredential.Replace("$", _orgID), oUser, "H2", "", "");

                var        orgCredential = JsonConvert.DeserializeObject <GetAPICredentials>(result);
                Crypto3DES _des          = new Crypto3DES(ApplicationSettings.EComModuleEncKey());

                _ecomTransactionKey = _des.Decrypt3DES(orgCredential.TransactionKey);
                _ecomLoginKey       = _des.Decrypt3DES(orgCredential.LoginID);


                #region get user id by there type

                if (hTable["UserStatus"].ToString().ToUpper().Contains("INACTIVE"))
                {
                    oGeneric.GetApiResponseCodeData(out statusCode, out result, "GET", ApplicationSettings.APIURI() + clsAPI.user.Replace("{orgid}", _orgID) + "?F015=" + hTable["UserEmail"].ToString() + "*&userstatus=inactive", oUser, "H1", _ecomLoginKey, _ecomTransactionKey);
                }
                else if (hTable["UserStatus"].ToString().ToUpper().Contains("DELETED"))
                {
                    oGeneric.GetApiResponseCodeData(out statusCode, out result, "GET", ApplicationSettings.APIURI() + clsAPI.user.Replace("{orgid}", _orgID) + "?F015=" + hTable["UserEmail"].ToString() + "*&userstatus=Deleted", oUser, "H1", _ecomLoginKey, _ecomTransactionKey);
                }
                else
                {
                    oGeneric.GetApiResponseCodeData(out statusCode, out result, "GET", ApplicationSettings.APIURI() + clsAPI.user.Replace("{orgid}", _orgID), oUser, "H1", _ecomLoginKey, _ecomTransactionKey);
                }
                var oUserData = JsonConvert.DeserializeObject <List <Users> >(result);



                for (int iUser = 0; iUser < oUserData.Count; iUser++)
                {
                    if (oUserData[iUser].Profile.F015.ToString() == hTable["UserMailID"].ToString().Trim())
                    {
                        _UserID = oUserData[iUser].ID;
                        break;
                    }
                }

                #endregion

                #region course
                if (hTable["TranscriptFor"].ToString().ToUpper() == "COURSE")
                {
                    try
                    {
                        courseID = GetID(hTable["CourseName"].ToString(), hTable["TranscriptFor"].ToString());
                        ///old transcript
                        oGeneric.GetApiResponseCodeData(out statusCode, out result, "GET", ApplicationSettings.APIURI() + clsAPI.GetSpecificCourseTranscript.Replace("{orgID}", clsAPI.orgID).Replace("{userID}", _UserID).Replace("{courseID}", courseID), oclsAPITranscript, "H1", _ecomLoginKey, _ecomTransactionKey);


                        oTranscript.CompletionDate              = hTable["CompletionDate"].ToString();
                        oTranscript.EnrollmentDate              = hTable["EnrollmentDate"].ToString();
                        oTranscript.Score                       = hTable["Score"].ToString();
                        oTranscript.StartDate                   = hTable["StartDate"].ToString();
                        oTranscript.Status                      = hTable["Status"].ToString();
                        oTranscript.LicenseExpirationDate       = hTable["LicenseExpirationDate"].ToString();
                        oTranscript.RequirementType             = hTable["RequirementType"].ToString();
                        oTranscript.DueDate                     = hTable["DueDate"].ToString();
                        oTranscript.CertificationExpirationDate = hTable["CertificationExpirationDate"].ToString();

                        /////update transcript
                        string resultupdate = string.Empty;
                        string resultnew    = string.Empty;
                        oGeneric.GetApiResponseCodeData(out statusCodeUpdate, out resultupdate, "PUT", ApplicationSettings.APIURI() + clsAPI.GetSpecificCourseTranscript.Replace("{orgID}", clsAPI.orgID).Replace("{userID}", _UserID).Replace("{courseID}", courseID), oclsAPITranscript, "H1", _ecomLoginKey, _ecomTransactionKey);

                        Thread.Sleep(clsGlobalVariable.iWaitHigh);
                        oGeneric.GetApiResponseCodeData(out statusCode, out resultnew, "GET", ApplicationSettings.APIURI() + clsAPI.GetSpecificCourseTranscript.Replace("{orgID}", clsAPI.orgID).Replace("{userID}", _UserID).Replace("{courseID}", courseID), oclsAPITranscript, "H1", _ecomLoginKey, _ecomTransactionKey);
                        var status    = JsonConvert.DeserializeObject <List <clsAPITranscript> >(resultnew);
                        var statusold = JsonConvert.DeserializeObject <List <clsAPITranscript> >(result);

                        _flag = VerifyTranscriptUpdate(result, resultnew, statusCodeUpdate, hTable);
                    }
                    catch (Exception e)
                    {
                        clsException.ExceptionHandler(e, iWebdriver, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name);

                        return(false);
                    }
                }
                #endregion
                #region session
                else if (hTable["TranscriptFor"].ToString().ToUpper() == "SESSION")
                {
                    List <string> lCourseId = new List <string>();
                    string        resultnew = string.Empty;
                    lCourseId = oPage.GetCourseId(hTable["CourseName"].ToString());
                    clsGenericAPI oclsGenericAPI = new clsGenericAPI();
                    oclsGenericAPI.GetORGCredentials(out _ecomTransactionKey, out _ecomLoginKey, _orgID);


                    if (lCourseId.Count > 0)
                    {
                        oGeneric.GetApiResponseCodeData(out statusCode, out result, "GET", ApplicationSettings.APIURI() + clsAPI.GetSessionID.Replace("{orgid}", _orgID).Replace("{CourseID}", lCourseId[0].ToString()), oUser, "H1", _ecomLoginKey, _ecomTransactionKey);


                        var oSessionData = JsonConvert.DeserializeObject <List <clsAPISession> >(result);

                        if (result == "")
                        {
                            return(false);
                        }

                        _SessionID = oSessionData[0].SessionID;

                        oGeneric.GetApiResponseCodeData(out statusCode, out result, "GET", ApplicationSettings.APIURI() + clsAPI.GetSpecificSessionTranscript.Replace("{orgID}", _orgID).Replace("{CourseID}", lCourseId[0].ToString()).Replace("{sessionID}", _SessionID).Replace("{userID}", _UserID), oUser, "H1", _ecomLoginKey, _ecomTransactionKey);


                        _flag = VerifyTranscriptUpdate(result, resultnew, statusCodeUpdate, hTable);
                    }
                    else
                    {
                        return(false);
                    }
                }
                #endregion
                #region Curricula
                else
                {
                    string resultnew = string.Empty;
                    courseID = oPage.GetCurriculumId(hTable["CourseName"].ToString());


                    try
                    {//////////////////////getting transcript
                        oTranscript.CompletionDate              = hTable["CompletionDate"].ToString();
                        oTranscript.EnrollmentDate              = hTable["EnrollmentDate"].ToString();
                        oTranscript.Score                       = hTable["Score"].ToString();
                        oTranscript.StartDate                   = hTable["StartDate"].ToString();
                        oTranscript.Status                      = hTable["Status"].ToString();
                        oTranscript.LicenseExpirationDate       = hTable["LicenseExpirationDate"].ToString();
                        oTranscript.RequirementType             = hTable["RequirementType"].ToString();
                        oTranscript.DueDate                     = hTable["DueDate"].ToString();
                        oTranscript.CertificationExpirationDate = hTable["CertificationExpirationDate"].ToString();

                        oGeneric.GetApiResponseCodeData(out statusCode, out result, "GET", ApplicationSettings.APIURI() + clsAPI.GetSpecificCurriculumTranscript.Replace("{orgID}", _orgID).Replace("{userID}", _UserID).Replace("{courseID}", courseID), oclsAPITranscript, "H1", _ecomLoginKey, _ecomTransactionKey);

                        var status = JsonConvert.DeserializeObject <List <clsAPITranscript> >(result);


                        oGeneric.GetApiResponseCodeData(out statusCodeUpdate, out resultput, "PUT", ApplicationSettings.APIURI() + clsAPI.GetSpecificCurriculumTranscript.Replace("{orgID}", _orgID).Replace("{userID}", _UserID).Replace("{courseID}", courseID), oclsAPITranscript, "H1", _ecomLoginKey, _ecomTransactionKey);
                        Thread.Sleep(clsGlobalVariable.iWaitHigh);

                        oGeneric.GetApiResponseCodeData(out statusCode, out resultnew, "GET", ApplicationSettings.APIURI() + clsAPI.GetSpecificCurriculumTranscript.Replace("{orgID}", _orgID).Replace("{userID}", _UserID).Replace("{courseID}", courseID), oclsAPITranscript, "H1", _ecomLoginKey, _ecomTransactionKey);
                        var statusold = JsonConvert.DeserializeObject <List <clsAPITranscript> >(result);


                        _flag = VerifyTranscriptUpdate(result, resultnew, statusCodeUpdate, hTable);
                    }
                    catch { clsGlobalVariable.strExceptionReport = "Get transcript scenario failed"; return(false); }
                    return(_flag);
                }
                #endregion
            }
            catch (Exception e)
            {
                clsException.ExceptionHandler(e, iWebdriver, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name);

                return(false);
            }



            return(_flag);
        }