public ActionResult Index()
        {
            this.TempData[CachedSurvey] = null;

            IEnumerable <SurveyModel> surveysForTenant = this.surveyStore
                                                         .GetSurveysByTenant(this.TenantName)
                                                         .Select(s => new SurveyModel(s))
                                                         .ToList();

            if (surveysForTenant.Count() > 0)
            {
                string assemblyFile, typeNamespace;
                if (this.HasModelExtensionAssembly(this.TenantName, out assemblyFile, out typeNamespace))
                {
                    var extensionType   = ExtensibilityTypeResolver.GetTypeFrom(assemblyFile, typeNamespace, typeof(Survey));
                    var modelExtensions = this.surveyStore.GetSurveyExtensionsByTenant(this.TenantName, extensionType);
                    foreach (var modelExtension in modelExtensions)
                    {
                        var survey = surveysForTenant.FirstOrDefault(s => modelExtension.IsChildOf(this.surveyStore.GetStorageKeyFor(s)));
                        if (survey != null)
                        {
                            survey.Extensions = ExtensibilityTypeMapper.GetModelExtensionProperties(modelExtension).ToList();
                        }
                    }
                }
            }

            var model = this.CreateTenantPageViewData(surveysForTenant);

            model.Title = "My Surveys";

            return(this.View(model));
        }
        public ActionResult New()
        {
            var cachedSurvey = (SurveyModel)this.TempData[CachedSurvey];

            if (cachedSurvey == null)
            {
                cachedSurvey = new SurveyModel();  // First time to the page
                string assemblyFile, typeNamespace;
                if (this.HasModelExtensionAssembly(this.TenantName, out assemblyFile, out typeNamespace))
                {
                    var modelExtension = ExtensibilityTypeResolver.GetInstanceFrom(assemblyFile, typeNamespace, typeof(Survey));
                    cachedSurvey.Extensions = ExtensibilityTypeMapper.GetModelExtensionProperties(modelExtension).ToList();
                }
            }

            var model = this.CreateTenantPageViewData(cachedSurvey);

            model.Title = "New Survey";

            this.TempData[CachedSurvey] = cachedSurvey;

            return(this.View(model));
        }