예제 #1
0
        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));
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }