The following example is one possible MVC implementation that can be extended so it better meets your business requirements.
Code Block |
---|
language | c# |
---|
linenumbers | true |
---|
|
using Sitecore.Data.Items;
using Sitecore.Mvc.Presentation;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace FuseIT_Demo.Models
{
//Custom SF view model
public class SFContactViewModel
{
[DisplayName("First Name")]
[Required(ErrorMessage = "First Name required")]
public string FirstName { get; set; }
[DisplayName("Last Name")]
public string LastName { get; set; }
[DisplayName("Email")]
[Required(ErrorMessage = "Email required")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string EmailAddress { get; set; }
}
} |
Code Block |
---|
language | c# |
---|
linenumbers | true |
---|
|
@using System.Web.Mvc.Html
@using Sitecore.Foundation.Dictionary.Extensions
@using Sitecore.Foundation.SitecoreExtensions.Extensions
@model FuseIT_Demo.Models.SFContactViewModel
@using (Html.BeginRouteForm(Sitecore.Mvc.Configuration.MvcSettings.SitecoreRouteName, FormMethod.Post))
{
@Html.AddUniqueFormId()
if (!string.IsNullOrEmpty(ViewBag.ReturnedMessage))
{
<div>
@ViewBag.ReturnedMessage
</div>
}
<div>
@Html.LabelFor(x => x.FirstName)
@Html.TextBoxFor(x => x.FirstName, new { id = "firstName", @placeholder = "Please enter your first name" })
@Html.ValidationMessageFor(x => x.FirstName, "", "p")
</div>
<div>
@Html.LabelFor(x => x.LastName)
@Html.TextBoxFor(x => x.LastName, new { id = "lastName", @placeholder = "Please enter your first name" })
@Html.ValidationMessageFor(x => x.LastName, "", "p")
</div>
<div>
@Html.LabelFor(x => x.EmailAddress)
@Html.TextBoxFor(x => x.EmailAddress, new { id = "email", @placeholder = "Please enter your email address" })
@Html.ValidationMessageFor(x => x.EmailAddress, "", "p")
</div>
<input type="submit" value="Create Salesforce Contact" />
} |
Code Block |
---|
language | c# |
---|
linenumbers | true |
---|
|
using FuseIT.Sitecore.Salesforce;
using FuseIT.Sitecore.SalesforceConnector;
using FuseIT.Sitecore.SalesforceConnector.DataSource;
using FuseIT.Sitecore.SalesforceConnector.Entities;
using FuseIT.Sitecore.SalesforceConnector.SalesforcePartner;
using FuseIT.Sitecore.SalesforceConnector.Services;
using FuseIT.Sitecore.SalesforceConnector.Soql;
using FuseIT_Demo.Models;
using Sitecore;
using Sitecore.Analytics;
using Sitecore.Analytics.Model;
using Sitecore.Analytics.Data.Items;
using Sitecore.Data.Items;
using Sitecore.Feature.Accounts.Services;
using Sitecore.Links;
using Sitecore.Security.Domains;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FuseIT.S4S.WebToSalesforce;
using Sitecore.Security;
namespace FuseIT_Demo.Controllers
{
/// <summary>
/// Functionalities related to S4S
/// </summary>
public class S4SController : Controller
{
#region MVC CUSTOM FORM SUBMISSION EXAMPLE
[HttpGet]
public ActionResult CreateSFContact()
{
return View();
}
[HttpPost]
public ActionResult CreateSFContact(SFContactViewModel sfContactViewModel)
{
try
{
//Check model validity
if (!ModelState.IsValid)
{
return base.View(sfContactViewModel);
}
//Create Salesforce Contact object
Contact sfContact = new Contact();
sfContact.FirstName = sfContactViewModel.FirstName;
sfContact.LastName = sfContactViewModel.LastName;
sfContact.Email = sfContactViewModel.EmailAddress;
//Create Salesforce contact through the API
ContactService contactService = new ContactService(SitecoreSalesforceSessionSingleton.SessionInstance);
var results = contactService.SaveContact(sfContact);
Logging.Debug(this, "Create Salesforce Contact result = " + results.success);
//Review the results
if (!results.success)
{
for (int i = 0; i < results.errors.Count(); i++)
{
Logging.Error(this, "Error Create Salesforce Contact: " + results.errors[i].message);
}
ViewBag.ReturnedMessage = "Failed to create Salesforce Contact";
}
else
{
ViewBag.ReturnedMessage = "Salesforce Contact created successfully.";
}
}
catch (SalesforceException sfException)
{
Logging.Error(this, "Salesforce exception occured", sfException);
ViewBag.ReturnedMessage = "Failed to create Salesforce Contact. Salesforce Exception occured.";
}
catch (Exception exception)
{
Logging.Error(this, "Exception occured", exception);
ViewBag.ReturnedMessage = "Failed to create Salesforce Contact. Exception occured.";
}
return base.View(sfContactViewModel);
}
#endregion
}
} |
Code Block |
---|
language | c# |
---|
linenumbers | true |
---|
|
using FuseIT.Sitecore.SalesforceConnector;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace FuseIT_Demo
{
public class SitecoreSalesforceSessionSingleton : SalesforceSessionSingleton
{
private SitecoreSalesforceSessionSingleton()
: base(null, "S4SConnString")
{
}
///
/// Get the singleton instance of the Salesforce Session.
///
public static SalesforceSession SessionInstance
{
get
{
SitecoreSalesforceSessionSingleton singleton = new SitecoreSalesforceSessionSingleton();
return singleton.Instance;
}
set
{
// This is only required if you want code outside the singleton to be able to construct the session
SitecoreSalesforceSessionSingleton singleton = new SitecoreSalesforceSessionSingleton();
singleton.SetNewInstance(value);
}
}
}
} |
Next Step
Congratulations, you have finished installing this option.
Steps
Child pages (Children Display) |
---|
all | true |
---|
depth | 2 |
---|
page | S4S Web Forms for Marketers (Optional) |
---|
|