Exemple #1
0
        /// <summary>
        /// Creates a new contact form for a specificed site. If the contact form id already exists, then nothing will be created
        /// </summary>
        /// <param name="newContactForm">The new contact form object to create the contact form from</param>
        /// <param name="site">The site that the form should belong to</param>
        /// <returns>The contact form (either new or existing) which matches to the </returns>
        public ContactForm CreateContactForm(ContactForm newContactForm, ISite site)
        {
            if (site == null)
            {
                throw ApiException.GetError(ErrorType.UnknownSite);
            }

            if (newContactForm == null)
            {
                throw ApiException.GetError(ErrorType.InvalidContactEmail);
            }

            ContactForm contactForm = GetContactFormDetailFromFormID(newContactForm.Id, site);
            if (contactForm == null)
            {
                if (!newContactForm.allowNotSignedInCommenting || !SiteList.GetSiteOptionValueBool(site.SiteID, "CommentForum", "AllowNotSignedInCommenting"))
                {
                    if (CallingUser == null || !CallingUser.IsUserA(UserTypes.Editor))
                    {
                        throw ApiException.GetError(ErrorType.NotAuthorized);
                    }
                }

                if (newContactForm.ContactEmail == null)
                {
                    newContactForm.ContactEmail = site.ContactFormsEmail;
                }

                if (newContactForm.ContactEmail.Length == 0)
                {
                    throw ApiException.GetError(ErrorType.MissingContactEmail);
                }

                if (!EmailAddressFilter.IsValidEmailAddresses(newContactForm.ContactEmail) || !newContactForm.ContactEmail.ToLower().EndsWith("@bbc.co.uk"))
                {
                    throw ApiException.GetError(ErrorType.InvalidContactEmail);
                }

                newContactForm.ModerationServiceGroup = ModerationStatus.ForumStatus.Reactive;
                CreateForum(newContactForm, site);
                SetupContactFormDetails(newContactForm);
                contactForm = GetContactFormDetailFromFormID(newContactForm.Id, site);
            }
            return contactForm;
        }
        public Stream CreateContactFormForSite(string siteName, ContactForm newContactFormDetails)
        {
            ISite site = GetSite(siteName);
            if (site == null)
            {
                throw ApiException.GetError(ErrorType.UnknownSite);
            }

            try
            {
                contactFormComments.CallingUser = GetCallingUser(site);
                ContactForm commentForumData = contactFormComments.CreateContactForm(newContactFormDetails, site);
                WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Created;
                return GetOutputStream(commentForumData);
            }
            catch (ApiException ex)
            {
                throw new DnaWebProtocolException(ex);
            }
        }
        public Stream CreateCommentContactFormWithContact(string siteName, ContactForm ContactFormDetails, string contactFormId)
        {
            ISite site = GetSite(siteName);
            if (site == null)
            {
                throw ApiException.GetError(ErrorType.UnknownSite);
            }

            try
            {
                this.dnaDiagnostic.WriteTimedEventToLog("PUTContact", "Start");
                if (contactFormId == null)
                {
                    throw ApiException.GetError(ErrorType.ForumUnknown);
                } 
                
                ContactFormDetails.Id = contactFormId;
                ContactForm contactFormData = contactFormComments.CreateContactForm(ContactFormDetails, site);
                contactFormComments.CallingUser = GetCallingUserOrNotSignedInUser(site, contactFormData);

                if (ContactFormDetails.contactDetailsList != null &&
                    ContactFormDetails.contactDetailsList.contacts != null &&
                    ContactFormDetails.contactDetailsList.contacts.Count > 0)
                {
                    // check if there is a rating to add
                    ContactDetails contactDetails = contactFormComments.CreateContactDetails(contactFormData, (ContactDetails)ContactFormDetails.contactDetailsList.contacts[0]);
                    contactFormComments.SendDetailstoContactEmail(contactDetails, contactFormData.ContactEmail, site.ContactFormsEmail, site.SiteID);
                    this.dnaDiagnostic.WriteTimedEventToLog("PUTContact", "Finish");
                    return GetOutputStream(contactDetails);
                }
                this.dnaDiagnostic.WriteTimedEventToLog("PUTContact", "Finish");
                return GetOutputStream(contactFormData);
            }
            catch (ApiException ex)
            {
                throw new DnaWebProtocolException(ex);
            }
        }
Exemple #4
0
 public ContactDetails CreateContactDetails(ContactForm contactForm, ContactDetails contactDetails)
 {
     return (ContactDetails)CreateComment(contactForm, contactDetails);
 }
Exemple #5
0
 private void SetupContactFormDetails(ContactForm commentForum)
 {
     SetupContactFormDetails(commentForum.ForumID, commentForum.ContactEmail);
 }
Exemple #6
0
        //private string GetContactFormEmailAddressForSite(int siteId)
        //{
        //    string emailAddress = "";
        //    using (IDnaDataReader reader = CreateReader("getcontactformemailaddressforsite"))
        //    {
        //        reader.AddParameter("siteid", siteId);
        //        reader.Execute();
        //        if (reader.HasRows && reader.Read())
        //        {
        //            emailAddress = reader.GetStringNullAsEmpty("contactemailaddress");
        //        }
        //    }

        //    return emailAddress;
        //}

        private ContactForm GetContactFormDetailFromFormID(string contactFormID, ISite site)
        {
            ContactForm contactForm = null;

            using (IDnaDataReader reader = CreateReader("getcontactformdetailfromformid"))
            {
                try
                {
                    reader.AddParameter("contactformid", contactFormID);
                    reader.AddParameter("sitename", site.SiteName);
                    reader.Execute();
                    if (reader.HasRows && reader.Read())
                    {
                        contactForm = new ContactForm();
                        contactForm.ContactEmail = reader.GetString("contactemail");
                        contactForm.ForumID = reader.GetInt32("forumid");
                        contactForm.Id = reader.GetString("contactformuid");
                        contactForm.ParentUri = reader.GetString("parenturi");
                        contactForm.Title = reader.GetString("title");
                        contactForm.SiteName = site.SiteName;
                        contactForm.NotSignedInUserId = reader.GetInt32("NotSignedInUserId");
                        contactForm.allowNotSignedInCommenting = contactForm.NotSignedInUserId > 0;
                        contactForm.isContactForm = true;
                    }
                }
                catch (Exception ex)
                {
                    throw new ApiException(ex.Message, ex.InnerException);
                }
            }

            return contactForm;
        }