Esempio n. 1
0
        public ActionResult module(int moduleid, DynamicModuleViewModel _entryToCreate)
        {
            var doverApi = new ModuleApi(ModRepository);
            var module = ModRepository.GetModuleById(moduleid, m => m.Fields);
            var result = String.Empty;
            var filteredList = new DynamicModuleFieldList();

            filteredList.AddRange(_entryToCreate.Fields.Where(f => CheckFieldExistency(f)));
            _entryToCreate.Fields = filteredList;

            try {
                doverApi.CreateModule(module, _entryToCreate);
                result = "<result>Success</result>";
            }
            catch (CreateModuleFailedException) {
                result = "<result>Failure</result>";
            }

            return Content(result, "text/xml", Encoding.UTF8);
        }
Esempio n. 2
0
        public void CreateModule(IModule _dbModule, DynamicModuleViewModel _moduleData)
        {
            var row = new Row() { Module = (Module)_dbModule };

            foreach (DynamicModuleField field in _moduleData.Fields) {
                var converter = FieldValueConversion.GetConverter(field.DataType);
                var rowField = new Cell {
                    Field = _dbModule.Fields.FirstOrDefault(f => f.FieldName == field.PropertyName),
                    Data = converter.Serialize(field, new ConversionContext { Cell = null })
                };

                row.Cells.Add(rowField);
            }

            try {
                ModRepository.AddModuleEntry(_dbModule.Id, row);
            }
            catch (Exception e) {
                throw new CreateModuleFailedException("Ocorreu um erro ao incluir o seu registro. Tente novamente mais tarde.", e);
            }
        }
Esempio n. 3
0
        public ActionResult Create(object module, DynamicModuleViewModel _entryToCreate)
        {
            if(!ModelState.IsValid) {
                return View(_entryToCreate);
            }

            var newModule = module as Module;

            try {
                var moduleApi = new ModuleApi(ModRepository);
                moduleApi.CreateModule(newModule, _entryToCreate);
            }
            catch (CreateModuleFailedException e) {
                TempData["Message"] = e.Message;
                return View(_entryToCreate);
            }

            TempData["Message"] = "Registro criado com sucesso.";

            return (newModule.ModuleType == (int)ModuleType.Dynamic)
                ? RedirectToAction("List")
                : RedirectToAction("Index", "Home");
        }
Esempio n. 4
0
        public ActionResult module(int moduleid, int? id, DynamicModuleViewModel _entryToEdit)
        {
            var result = String.Empty;

            try {
                var doverApi = new ModuleApi(ModRepository);
                var module = ModRepository.GetModuleById(moduleid, m => m.Rows.Include<Row, Cell>(r => r.Cells), m => m.Fields);
                var filteredList = new DynamicModuleFieldList();

                filteredList.AddRange(_entryToEdit.Fields.Where(f => CheckFieldExistency(f)));
                _entryToEdit.Fields = filteredList;

                doverApi.SetModuleData(module, id, _entryToEdit, true);
                result = "<result>Success</result>";
            }
            catch (Exception e) {
                result = "<result>Failure</result>";
            }

            return Content(result, "text/xml", Encoding.UTF8);
        }
Esempio n. 5
0
        private ActionResult ViewModule(Module _module, int? id, bool creating = false)
        {
            if (id != null &&
                _module.Rows.FirstOrDefault(row => row.ID == id) == null) {
                TempData["Message"] = "Registro não encontrado.";
                return this.RedirectToAction("List");
            }

            DynamicModuleViewModel modelRow = new DynamicModuleViewModel() {
                ID = id ?? -1,
                ModuleName = _module.ModuleName,
                DisplayName = _module.DisplayName
            };

            foreach (Field field in _module.Fields) {
                Cell rowField = null;

                if (!creating) {
                    rowField = (id != null)
                        ? field.Cells.FirstOrDefault(rf => rf.Row.ID == id)
                        : field.Cells.FirstOrDefault();
                }

                var fieldDataTpe = Type.GetType(field.FieldDataType.Name);
                var converter = FieldValueConversion.GetConverter(fieldDataTpe);
                var modelField = new DynamicModuleField() {
                    DisplayName = field.DisplayName,
                    PropertyName = field.FieldName,
                    IsReadOnly = field.IsReadOnly,
                    IsRequired = field.IsRequired,
                    DataType = fieldDataTpe
                };

                modelField.Data = converter.Deserialize(
                    rowField,
                    new ConversionContext {
                        Field = field,
                        Module = _module,
                        Repository = ModRepository
                    });

                modelRow.Fields.Add(modelField);
            }

            return View(modelRow);
        }
Esempio n. 6
0
        public ActionResult List(object module)
        {
            var modToList = module as Module;

            ViewData["ModuleName"] = modToList.ModuleName;
            ViewData["DisplayName"] = modToList.DisplayName;
            ViewData["Fields"] = modToList.Fields.Where(f => f.ShowInListMode).Select(f => f.DisplayName);

            List<DynamicModuleViewModel> viewModel = new List<DynamicModuleViewModel>();

            foreach(Row _row in modToList.Rows.OrderBy(r => r.SortIndex)) {
                DynamicModuleViewModel modelRow = new DynamicModuleViewModel() { ID = _row.ID };

                foreach (Field field in modToList.Fields.Where(f => f.ShowInListMode)) {
                    var rowField = field.Cells.FirstOrDefault(rf => rf.Row.ID == _row.ID);
                    var fieldDataTpe = Type.GetType(field.FieldDataType.Name);
                    var converter = FieldValueConversion.GetConverter(fieldDataTpe);

                    var modelField = new DynamicModuleField() {
                        DisplayName = field.DisplayName,
                        PropertyName = field.FieldName,
                        IsReadOnly = field.IsReadOnly,
                        IsRequired = field.IsRequired,
                        DataType = fieldDataTpe
                    };

                    modelField.Data = converter.Deserialize(
                        rowField,
                        new ConversionContext {
                            Field = field,
                            Module = modToList,
                            Repository = ModRepository
                        });

                    modelRow.Fields.Add(modelField);
                }

                viewModel.Add(modelRow);
            }

            return View(viewModel);
        }
Esempio n. 7
0
        public ActionResult Edit(object module, int? id, DynamicModuleViewModel _entryToEdit)
        {
            if(!ModelState.IsValid) {
                return View(_entryToEdit);
            }

            var moduleToEdit = module as Module;

            try {
                var moduleApi = new ModuleApi(ModRepository);
                moduleApi.SetModuleData(moduleToEdit, id, _entryToEdit);
            }
            catch (ModuleRowNotFoundException e) {
                TempData["Message"] = e.Message;
                return this.RedirectToAction("List");
            }

            TempData["Message"] = "Seus dados foram salvos.";

            return (moduleToEdit.ModuleType == (int)ModuleType.Dynamic)
                ? RedirectToAction("List")
                : RedirectToAction("Index", "Home");
        }
Esempio n. 8
0
        /// <summary>
        /// Returns module records based on the provided module module
        /// and filtering parameters.
        /// </summary>
        /// <param name="module">The module to be queried</param>
        /// <param name="id">Optional row id for filtering</param>
        /// <returns>The matching rows in the specified module</returns>
        public DynamicModuleApiResult GetModuleData(IModule module, int? id, NameValueCollection _filters)
        {
            if (module == null) {
                return null;
            }

            var moduleData = new DynamicModuleApiResult() {
                ModuleName = module.ModuleName,
                ModuleType = module.ModuleType,
                ModuleId = module.Id
            };

            var rows = module.Rows;
            var filteredRows = (id != null) ? rows.Where(r => r.ID == id) : rows.AsEnumerable();

            // Search filter
            string reqFilter = _filters["_Filter"];

            if (!String.IsNullOrWhiteSpace(reqFilter)) {
                filteredRows = filteredRows.Where(r => r.Cells.Any(rf => rf.Data != null && rf.Data.IndexOf(reqFilter, StringComparison.CurrentCultureIgnoreCase) != -1));
            }

            // Random entry filter
            string randomEntry = _filters["_Random"];
            int randomTotal;
            if (!String.IsNullOrWhiteSpace(randomEntry) && Int32.TryParse(randomEntry, out randomTotal)) {
                filteredRows = filteredRows.OrderBy(r => Guid.NewGuid()).Take(randomTotal);
            }

            foreach (var key in _filters.AllKeys.Except(new string[] { "_Filter", "_Random" })) {
                var fieldName = key;
                var value = _filters[fieldName];
                filteredRows = filteredRows.Where(r => r.Cells.Any(rf => rf.Field.FieldName == fieldName && rf.Data != null && rf.Data.IndexOf(value, StringComparison.CurrentCultureIgnoreCase) != -1));
            }

            foreach (var row in filteredRows.OrderBy(r => r.SortIndex)) {
                DynamicModuleViewModel modelRow = new DynamicModuleViewModel() { ID = row.ID };

                foreach (Cell rowField in row.Cells) {
                    var field = rowField.Field;
                    var sFieldDataType = field.FieldDataType.Name;
                    var fieldDataTpe = Type.GetType(sFieldDataType);

                    var modelField = new DynamicModuleField() {
                        DisplayName = field.DisplayName,
                        PropertyName = field.FieldName,
                        IsReadOnly = field.IsReadOnly,
                        IsRequired = field.IsRequired,
                        DataType = fieldDataTpe
                    };

                    var converter = FieldValueConversion.GetConverter(fieldDataTpe);
                    modelField.Data = converter.Deserialize(
                        rowField,
                        new ConversionContext {
                            Field = field,
                            Module = module,
                            Repository = ModRepository
                        });

                    modelRow.Fields.Add(modelField);
                }

                moduleData.Rows.Add(modelRow);
            }

            return moduleData;
        }
Esempio n. 9
0
 public void SetPartialModuleData(IModule _dbModule, int? id, DynamicModuleViewModel _moduleData)
 {
     SetModuleData(_dbModule, id, _moduleData, true);
 }
Esempio n. 10
0
        public void SetModuleData(IModule _dbModule, int? id, DynamicModuleViewModel _moduleData, bool partialData = false)
        {
            if (_dbModule.ModuleType == (int)ModuleType.SingleEntry &&
                _dbModule.Rows.FirstOrDefault() == null) {

                // We have a single entry module and its row hasn't been created yet.
                // No big deal, we'll do it.
                CreateModule(_dbModule as Module, _moduleData);
            }

            var rowToEdit = (_dbModule.ModuleType == (int)ModuleType.Dynamic)
                ? _dbModule.Rows.FirstOrDefault(row => row.ID == id)
                : _dbModule.Rows.FirstOrDefault();

            if (rowToEdit == null) {
                throw new ModuleRowNotFoundException("Registro não encontrado.");
            }

            if (!partialData) {
                // Update all the row fields, i.e. set null to missing form fields.
                foreach (Cell rowField in rowToEdit.Cells) {
                    var formField = _moduleData.Fields.FirstOrDefault(rf => rf.PropertyName == rowField.Field.FieldName);
                    var converter = FieldValueConversion.GetConverter(formField.DataType);

                    rowField.Data = converter.Serialize(formField, new ConversionContext {
                        Cell = rowField,
                        Field = rowField.Field,
                        Module = _dbModule,
                        Repository = ModRepository
                    });
                }
            }
            else {
                // Update only the row fields that were received as form fields. Do not touch others.
                foreach (var formField in _moduleData.Fields) {
                    var rowField = rowToEdit.Cells.FirstOrDefault(rf => rf.Field.FieldName == formField.PropertyName);
                    var converter = FieldValueConversion.GetConverter(formField.DataType);

                    rowField.Data = converter.Serialize(formField, new ConversionContext {
                        Cell = rowField,
                        Field = rowField.Field,
                        Module = _dbModule,
                        Repository = ModRepository
                    });
                }
            }

            ModRepository.Save();
        }