/// <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); } }
public ContactDetails CreateContactDetails(ContactForm contactForm, ContactDetails contactDetails) { return (ContactDetails)CreateComment(contactForm, contactDetails); }
private void SetupContactFormDetails(ContactForm commentForum) { SetupContactFormDetails(commentForum.ForumID, commentForum.ContactEmail); }
//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; }