/// <summary>
 /// Constructor loading group attributes from a Saml.Response
 /// </summary>
 /// <param name="samlResponse"></param>
 public Membership(Saml.Response samlResponse)
 {
     NameValueCollection att = samlResponse.GetAttributes();
     UserUid = att["uid"];
     GroupUid = att["group_uid"];
     Role = att["group_role"];
 }
        /// <summary>
        /// Initialize a new User
        /// </summary>
        /// <returns></returns>
        public User New(Saml.Response samlResponse)
        {
            if (samlResponse != null)
            {
                NameValueCollection att = samlResponse.GetAttributes();
                SsoSession = att["mno_session"];
                SsoSessionRecheck = DateTime.Parse(att["mno_session_recheck"]);
                GroupUid = att["group_uid"];
                GroupRole = att["group_role"];
                Uid = att["uid"];
                VirtualUid = att["virtual_uid"];
                Email = att["email"];
                VirtualEmail = att["virtual_email"];
                FirstName = att["name"];
                LastName = att["surname"];
                Country = att["country"];
                CompanyName = att["company_name"];
            }

            return this;
        }
        /// <summary>
        /// Initialize the Group
        /// </summary>
        /// <returns></returns>
        public Group New(Saml.Response samlResponse)
        {
            if (samlResponse != null)
            {
                NameValueCollection att = samlResponse.GetAttributes();

                // General info
                Uid = att["group_uid"];
                Name = att["group_name"];
                Email = att["group_email"];
                CompanyName = att["company_name"];
                HasCreditCard = att["group_has_credit_card"].Equals("true");

                // Set Free trial in the past on failure
                try
                {
                    FreeTrialEndAt = DateTime.Parse(att["group_end_free_trial"]);
                }
                catch
                {
                    FreeTrialEndAt = new DateTime(1970, 1, 1, 0, 0, 0, 0);
                }

                // Geo info
                Currency = att["group_currency"];
                Timezone = TimeZoneConverter.fromOlsonTz(att["group_timezone"]);
                Country = att["group_country"];
                City = att["group_city"];
            }

            return this;
        }