public ActionResult Index(int productId, int?rowId = null) { GenerateFormQueryResult result = Query.For <GenerateFormQueryResult>().ById(productId); GetProductTableByIdQueryResult productTable = Query.For <GetProductTableByIdQueryResult>().ById(productId); if (result == null) { // TODO: Redirect to not found page. return(null); } RowIndexViewModel vm = new RowIndexViewModel { Table = productTable.Table }; if (rowId.HasValue) { FindRowByIdQueryResult row = Query.For <FindRowByIdQueryResult>().ById(rowId.Value); if (row != null) { vm.Form = ToEditViewModel(result, row.Row); vm.IsEdittingMode = true; ViewBag.ProductId = productId; } } if (vm.Form == null) { vm.Form = ToViewModel(result); } return(View(vm)); }
protected FormViewModel ToViewModel(GenerateFormQueryResult form) { FormViewModel vm = new FormViewModel { Id = form.Product.Id, Name = form.Product.Name, Controls = form.Columns.Select(ToViewModel).ToList() }; int index = 0; vm.Controls.ForEach(model => { model.FieldNamePrefix = $"{nameof(vm.Controls)}[{index}]."; index++; }); return(vm); }
protected FormViewModel ToEditViewModel(GenerateFormQueryResult form, Row row) { FormViewModel vm = new FormViewModel { Id = row.Id, Name = form.Product.Name, Controls = form.Columns.Select(c => ToEditViewModel(c, row.Cells.FirstOrDefault(cell => cell.ColumnId == c.Id))).ToList() }; int index = 0; vm.Controls.ForEach(model => { model.FieldNamePrefix = $"{nameof(vm.Controls)}[{index}]."; index++; }); return(vm); }