public JsonResult GetPropertiesByFormID(int id) { try { RequestPackage request = new RequestPackage() { requestID = id }; List<ControlPropertyViewModel> response = new ControlPropertyLogic().GetPropertiesByFormID(request).GetDataOrExceptionIfError(); return Json(response); } catch (Exception ex) { return this.HandleException(ex); } }
/// <summary> /// Функция, получающая древовидную структуру формы по ее ID /// </summary> /// <param name="package">Объект-оболочка RequestPackage, содержащая в поле requestID ID формы</param> /// <returns>Объект-оболочка RequestPackage ResponseObjectPackagе, содержащая в поле resultData древовидную структуру формы</returns> public ResponseObjectPackage<OpenFormModel> GetFormByID(RequestPackage package) { int formID = package.requestID; OpenFormModel result = new OpenFormModel(); // форма result.form = new DBUtils().RunSqlAction(new FormsRepository().GetFormByID, package).GetDataOrExceptionIfError(); // все контролы формы List<ControlListEntity> controls = new ControlsLogic().GetControlsByFormID(package).GetDataOrExceptionIfError(); // все свойства формы List<ControlPropertyViewModel> properties = new ControlPropertyLogic().GetPropertiesByFormID(package).GetDataOrExceptionIfError(); // задаем каждому контролу его свойства List<OpenControlModel> openControls = new List<OpenControlModel>(); foreach (ControlListEntity ctrl in controls) { OpenControlModel o = new OpenControlModel(); o.control = ctrl; // получить для контрола события RequestPackage eventRequest = new RequestPackage(){ requestID =ctrl.ID }; o.events = new DBUtils().RunSqlAction(new EventEditorDataCRUD().GetEventsByControlID, eventRequest).GetDataOrExceptionIfError(); foreach (ControlPropertyViewModel prop in properties) { if (prop.controlID == ctrl.ID) { o.properties.Add(prop); if (prop.property.ToLower() == "name") { o.name = prop.value; } } } RequestPackage controlPack = new RequestPackage() { requestID = o.control.ID }; o.data = new DBUtils().RunSqlAction(new QueryEditorDataCRUD().GetQueryDataByControlID, controlPack).GetDataOrExceptionIfError(); openControls.Add(o); } // рекурсивная обработка свойств для определения отношений parent-child OpenControlModel root = null; foreach (OpenControlModel ctrl in openControls) { if (ctrl.control.controlIDParent == null) { root = ctrl; } else { foreach (OpenControlModel subCtrl in openControls) { if (ctrl.control.controlIDParent == subCtrl.control.ID) { subCtrl.items.Add(ctrl); } } } } result.root = root; result.queries = new DBUtils().RunSqlAction(new QueryEditorDataCRUD().GetQueriesByFormID, package).GetDataOrExceptionIfError(); return new ResponseObjectPackage<OpenFormModel>() { resultData = result }; }