public string CreateContact(List <FormFieldModel> fields)
        {
            Contact contact = new Contact();

            // Define default subscription status
            contact.SubscriptionStatus = SubscriptionStatus.Subscribed;

            contact.ExtendedDetails["IDENTIFICATION_KEY"].Value    = IdentificationKey;
            contact.ExtendedDetails["IDENTIFICATION_SOURCE"].Value = IdentificationSource;

            if (AddressBookId > 0)
            {
                contact.AddressBookId = AddressBookId;
            }


            foreach (var field in fields)
            {
                if (field.Purpose != null)
                {
                    switch (field.PurposeType)
                    {
                    case FieldPurposeType.Salutation:
                        contact.ExtendedDetails["SALUTATION"].Value = field.Value;
                        break;

                    case FieldPurposeType.Prefix:
                        contact.ExtendedDetails["PREFIX"].Value = field.Value;
                        break;

                    case FieldPurposeType.FirstName:
                        contact.ExtendedDetails["NAME"].Value = field.Value;
                        break;

                    case FieldPurposeType.LastName:
                        contact.ExtendedDetails["SURNAME"].Value = field.Value;
                        break;

                    case FieldPurposeType.Email:
                        contact.EmailAddress = field.Value;
                        break;

                    case FieldPurposeType.Password:
                        contact.ExtendedDetails["PASSWORD"].Value = Digests.DigestPassword(field.Value);
                        break;

                    case FieldPurposeType.Company:
                        contact.ExtendedDetails["COMPANY"].Value = field.Value;
                        break;

                    case FieldPurposeType.PhoneNumber:
                        contact.ExtendedDetails["TELEPHONE"].Value = field.Value;
                        break;

                    case FieldPurposeType.City:
                        contact.ExtendedDetails["CITY"].Value = field.Value;
                        break;

                    case FieldPurposeType.State:
                        contact.ExtendedDetails["STATE"].Value = field.Value;
                        break;

                    case FieldPurposeType.BirthDate:
                        contact.ExtendedDetails["BIRTH_DATE"].Value = field.Value;
                        break;

                    case FieldPurposeType.Age:
                        contact.ExtendedDetails["AGE"].Value = field.Value;
                        break;

                    case FieldPurposeType.WorkingYears:
                        contact.ExtendedDetails["WORKING_YEARS"].Value = field.Value;
                        break;


                    default:
                        break;
                    }
                }
            }

            //// Newsletters (keywords)
            ////if (ReceiveNewsletters.Checked && !string.IsNullOrEmpty(KeywordNewsletter))
            ////{
            ////    contact.Keywords.Add(KeywordNewsletter);
            ////}

            ////if (ReceiveOffers.Checked && !string.IsNullOrEmpty(KeywordOffers))
            ////{
            ////    contact.Keywords.Add(KeywordOffers);
            ////}

            try
            {
                // Pass in an identifier used to look up the confirmation e-mail to send, or empty string if no confirmation should be sent.
                contact.Save(EmailConfirmationIdentifier ?? String.Empty);

                // Verify that the Contact has been saved
                Contact.GetFromContactIdentificatonKeys(contact.EmailAddress, IdentificationSource);
            }
            catch (ContactAlreadyExistsException ex)
            {
                throw ex;
                //ShowErrorMessage("The e-mail address you entered is already subscribed.");
            }
            catch (Exception ex)
            {
                throw ex;
                //ShowErrorMessage("There was an error while saving your data.");
            }


            return("Subscribed");
        }