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)
                    )
            });
        }
示例#2
0
        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)));
        }
示例#3
0
        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);
        }
示例#4
0
        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();
        }