public FormViewModel Create(CachedForm cachedForm) { IEnumerable <CachedField> cachedFields = new CachedField[] { }; if (!string.IsNullOrEmpty(cachedForm.CachedFields)) { cachedFields = JsonConvert.DeserializeObject <IEnumerable <CachedField> >(cachedForm.CachedFields); } return(new FormViewModel() { Id = cachedForm.FormId, Name = cachedForm.Name, Fields = cachedFields.Select( cf => new FieldViewModelFactory(this.RequestHandler).Create(cf) ) }); }
public async Task <IViewComponentResult> InvokeAsync(string code) { CachedForm cachedForm = this.Storage.GetRepository <ICachedFormRepository>().WithCultureIdAndCode( CultureManager.GetCurrentCulture(this.Storage).Id, code ); if (cachedForm == null) { Form form = this.Storage.GetRepository <IFormRepository>().WithCode(code); if (form == null) { return(null); } return(this.View(new FormViewModelFactory(this).Create(form))); } return(this.View(new FormViewModelFactory(this).Create(cachedForm))); }
private CachedForm CacheForm(Culture culture, Form form) { List <CachedField> cachedFields = new List <CachedField>(); foreach (Field field in this.handler.Storage.GetRepository <IFieldRepository>().FilteredByFormId(form.Id)) { cachedFields.Add(this.CacheField(culture, field)); } CachedForm cachedForm = new CachedForm(); cachedForm.FormId = form.Id; cachedForm.CultureId = culture.Id; cachedForm.Code = form.Code; cachedForm.Name = this.GetLocalizationValue(culture.Id, form.NameId); if (cachedFields.Count != 0) { cachedForm.CachedFields = this.SerializeObject(cachedFields); } return(cachedForm); }
public void CacheForm(Form form) { foreach (Culture culture in this.handler.Storage.GetRepository <ICultureRepository>().All()) { CachedForm cachedForm = this.handler.Storage.GetRepository <ICachedFormRepository>().WithKey(culture.Id, form.Id); if (cachedForm == null) { this.handler.Storage.GetRepository <ICachedFormRepository>().Create(this.CacheForm(culture, form)); } else { CachedForm temp = this.CacheForm(culture, form); cachedForm.Code = temp.Code; cachedForm.Name = temp.Name; cachedForm.CachedFields = temp.CachedFields; this.handler.Storage.GetRepository <ICachedFormRepository>().Edit(cachedForm); } } this.handler.Storage.Save(); }