/// Get the Hummingbird user permissions
        /// </summary>
        /// <param name="userId"></param>
        public HBUserPermissionObject GetUserPermissions(int userId)
        {
            var parameters = new Hashtable {
            { "data[user_id]", userId },
            { "data[module_name]", ConfigurationManager.AppSettings["HummingbirdModuleName"] },
            { "data[module_code]", ConfigurationManager.AppSettings["HummingbirdModuleCode"] },
            { "data[action]", ConfigurationManager.AppSettings["HummingbirdAction"] }
            };

            HBUserPermissionObject hbUserPermissionObject = new HBUserPermissionObject();

            string service = "GetHummingbirdUserPermission";
            LogUtil.CallingService(service, LogUtil.getHashtableString(parameters));

            try
            {
                var result = CallHummingbirdUserService("getUserPermissions", parameters);
                LogUtil.CallSuccess(service, result.ToString());
                hbUserPermissionObject = ProcessUserPermissionsResponse(result);
            }
            catch (Exception e)
            {
                LogUtil.CallFail(service, e);
                throw;
            }
            return hbUserPermissionObject;
        }
        private void SetUserSessionData(HBUserPermissionObject hbUserPermissionObject, HttpCookie phpCookie, string colorScheme)
        {
            HttpContext.Current.Session.Add("HTMLHead", hbUserPermissionObject.HtmlHead);
            HttpContext.Current.Session.Add("Header", hbUserPermissionObject.Header);
            HttpContext.Current.Session.Add("Footer", hbUserPermissionObject.Footer);
            HttpContext.Current.Session.Add("ColorScheme", colorScheme);

            string Permissions = String.Join(",", User.GetPermissions(hbUserPermissionObject.UserRightsList).ToArray());
            HttpContext.Current.Session.Add("Permissions", Permissions);

            if (phpCookie != null)
            {
                HttpContext.Current.Session.Add("PHPSESSID", phpCookie.Value);
            }
        }
        /// <summary>
        /// Get the HB user rights and html head and footer 
        /// </summary>
        /// <param name="result"></param>
        /// <returns>HBUserPermissionsObject</returns>
        private HBUserPermissionObject ProcessUserPermissionsResponse(XDocument result)
        {
            HBUserPermissionObject hbUserPermissionObject = new HBUserPermissionObject();

            try
            {

                hbUserPermissionObject = (from userPermissions in result.Descendants("Data")
                                           select new HBUserPermissionObject()
                                           {
                                               HtmlHead = XmlUtil.GetSafeStringNodeValue(userPermissions.Element("HtmlHead")),
                                               Header = XmlUtil.GetSafeStringNodeValue(userPermissions.Element("Header")),
                                               Footer = XmlUtil.GetSafeStringNodeValue(userPermissions.Element("Footer")),
                                               UserRightsList = (from permission in userPermissions.Descendants("Item")
                                                                select new HBUserRightsItemObject()
                                                                 {
                                                                     UserRightsItem = XmlUtil.GetSafeStringNodeValue(permission)
                                                                 }).ToList()

                                           }).FirstOrDefault();

                if (hbUserPermissionObject == null)
                    return new HBUserPermissionObject();

            }
            catch (Exception)
            {
                throw;
            }

            return hbUserPermissionObject;
        }