private StringDictionary GetSiteProperties(Item item)
        {
            Assert.ArgumentNotNull(item, "item");

            Item startItem = item.Children.FirstOrDefault(i => i.TemplateID.Equals(Templates.MicrositeRoot.Fields.SiteHome) 
                                                            || i.Template.BaseTemplates.Any(t => t.ID.Equals(Templates.MicrositeRoot.Fields.SiteHome)));
            if (startItem == null)
                return null;

            var properties = new StringDictionary
            {
                {Constants.SiteParameters.SiteName, item.Name.ToSiteName()},
                {Constants.SiteParameters.RootPath, item.Paths.FullPath},
                {Constants.SiteParameters.StartItem, startItem.Name },
                {Constants.SiteParameters.Language, item[Templates.MicrositeRoot.Fields.SiteLanguage] },
                {Constants.SiteParameters.Database, item[Templates.MicrositeRoot.Fields.SiteDatabase] },
                {Constants.SiteParameters.HostName, item[Templates.MicrositeRoot.Fields.SiteHostName] },
                {Constants.SiteParameters.Domain, item[Templates.MicrositeRoot.Fields.SiteDomain] }
            };

            NameValueListField siteParametersField = item.Fields[Templates.MicrositeRoot.Fields.SiteParameters];

            foreach (string key in siteParametersField.NameValues)
            {
                if (!properties.ContainsKey(key))
                    properties.Add(key, HttpUtility.UrlDecode(siteParametersField.NameValues[key]));
            }

            return properties;
        }
 private bool AssertMandatoryProperties(StringDictionary properties)
 {
     return properties.ContainsKeyWithValue(Constants.SiteParameters.SiteName)
            && properties.ContainsKeyWithValue(Constants.SiteParameters.RootPath)
            && properties.ContainsKeyWithValue(Constants.SiteParameters.HostName)
            && properties.ContainsKeyWithValue(Constants.SiteParameters.Language)
            && properties.ContainsKeyWithValue(Constants.SiteParameters.StartItem)
            && properties.ContainsKeyWithValue(Constants.SiteParameters.Domain) 
            && properties.ContainsKeyWithValue(Constants.SiteParameters.Database);
 }