public static SubEntity BuildSubEntity(RegistrationFormAdminDetailView parent, int templateId, string entityName) { var displayName = string.Empty; if (entityName == RegistrationFormAdminDetailView._registrationFormLeftColumn) { _columnId = 1; displayName = LeftColumn; } else { _columnId = 2; displayName = RightColumn; } _templateId = templateId; _subEntity = parent._viewModel.SubEntities.FirstOrDefault(s => s.EntityName == entityName); if (_subEntity == null) _subEntity = new SubEntity() { EntityName = entityName, DisplayName = displayName, CanAddExisting = true, CanCreateNew = true, CanDelete = true }; else _subEntity.Records = new List<SubEntityRecord>(); AddExistingRecords(parent, templateId); AddNewRecordTemplate(parent); return _subEntity; }
public static List<SubEntityRecord> GetDropdownValues(RegistrationFormAdminDetailView parent, int eventId) { int eventRegistrationEntityId = GetEventRegistrationFormEntityId(parent); var columns = CommonUtils.GetDynamicColumnInstances(parent, eventRegistrationEntityId); var records = new List<SubEntityRecord>(); foreach (var item in columns) { var record = new SubEntityRecord(); record.DisplayName = item.Name; record.Id = item.Id; record.Fields.Add(new Field(_id, "Id", FieldTypes.Hidden, item.Id)); record.Fields.Add(new Field(_fieldName, "Field Name", FieldTypes.Label, item.Name)); record.Fields.Add(new Field(_fieldLabel, "Field Label", FieldTypes.Text, item.FormLabel, true)); record.Fields.Add(new Field(_isRequired, "Is Required", FieldTypes.Checkbox, item.IsRequired)); record.Fields.Add(new Field(_dataType, "Data Type", FieldTypes.Dropdown, item.DataType) { Options = new List<KeyValuePair<object, object>>() { new KeyValuePair<object,object>("nvarchar","Text"), new KeyValuePair<object,object>("int","Number"), new KeyValuePair<object,object>("datetime","Date"), new KeyValuePair<object,object>("dropdown","Dropdown"), new KeyValuePair<object,object>("contentEditor","Content Editor") }, OnChangeCommand = "DataTypeChanged", IsDisabled = true }); record.Fields.Add(new Field(_maxSize, "Max Length", FieldTypes.Hidden, item.DataSize, true)); record.Fields.Add(new Field(_dropdownOptions, "Dropdown Options", FieldTypes.Hidden, item.DropDownValues, true)); record.Fields.Add(new Field(_isMultiLine, "Is Multiline", FieldTypes.Hidden, item.IsMultiline, true)); record.Fields = SetupFieldVisibility(record.Fields); records.Add(record); } return records; }
private static List<DynamicColumnsCollection> MakeColumnsList(RegistrationFormAdminDetailView parent, List<DynamicColumnsCollection> columns, List<SubEntityRecord> recordList, DynamicFormDto form) { int eventRegistrationEntityId = GetEventRegistrationFormEntityId(parent); var columnCollection = new DynamicColumnsCollection(); int i = 0; foreach (var record in recordList) { //if dynamicColumnInstance Id = 0 then it's new, so save it. var dynamicColumnInstanceId = int.Parse(CommonUtils.GetFieldValue(record.Fields, _id)); if (dynamicColumnInstanceId == 0) dynamicColumnInstanceId = AddDynamicColumnInstant(parent, eventRegistrationEntityId, record); else UpdateDynamicColumnInstant(parent, eventRegistrationEntityId, record, dynamicColumnInstanceId); var column = new DynamicFormsDynamicColumnDto { DynamicForm = form, FormOrder = i++, DynamicColumnInstance = new DynamicColumnInstanceDto { Id = dynamicColumnInstanceId } }; columnCollection.Add(column); } columns.Add(columnCollection); return columns; }
private static void UpdateDynamicColumnInstant(RegistrationFormAdminDetailView parent, int eventRegistrationEntityId, SubEntityRecord record, int dynamicColumnInstanceId) { var dataSize = CommonUtils.GetFieldValue(record.Fields, _maxSize); var updateRequest = new UpdateDynamicColumnInstanceRequest { EntityId = eventRegistrationEntityId, Name = CommonUtils.GetFieldValue(record.Fields, _fieldName), FormLabel = CommonUtils.GetFieldValue(record.Fields, _fieldLabel), DataType = CommonUtils.GetFieldValue(record.Fields, _dataType), IsRequired = GetBooleanValue(record, _isRequired), IsMultiline = GetBooleanValue(record, _isMultiLine), DataSize = string.IsNullOrEmpty(dataSize) ? new int?() : int.Parse(dataSize), DropDownValues = CommonUtils.GetFieldValue(record.Fields, _dropdownOptions), FormOrder = 1, Id = dynamicColumnInstanceId }; updateRequest.SelectSqlText = GetSelectSqlText(updateRequest.Name, updateRequest.DataType, updateRequest.DataSize); var response = parent.ProcessRequest<UpdateDynamicColumnInstanceResponse>(updateRequest); if (response.Id == 0 && response.Message == StatusMessage.DuplicateData) { throw new BusinessException("A Dynamic Column already exists with the specified name"); } }
private static int GetEventRegistrationFormEntityId(RegistrationFormAdminDetailView parent) { var entityRequest = new ReadDynamicColumnEntityRequest { EntityName = "EventRegistration", EntityNamespace = "MEDSEEK.eHealth.Apps.Events.SharePoint" }; int eventRegistrationEntityId = parent.ProcessRequest<ReadDynamicColumnEntityResponse>(entityRequest).DynamicColumnEntity.Id; return eventRegistrationEntityId; }
private static List<DynamicFormsDynamicColumnDto> GetColumnFields(RegistrationFormAdminDetailView parent, int formId) { var formRequest = new ReadDynamicFormRequest { FormId = formId }; var formResponse = parent.ProcessRequest<ReadDynamicFormResponse>(formRequest); var request = new GetAllDynamicFormsDynamicColumnsRequest { FormId = formId }; var response = parent.ProcessRequest<GetAllDynamicFormsDynamicColumnsResponse>(request); return response.Columns.Where(c => c.FormColumn == _columnId).ToList(); }
private static void AddNewRecordTemplate(RegistrationFormAdminDetailView parent) { _subEntity.NewRecordTemplate = new SubEntityRecord() { }; _subEntity.NewRecordTemplate.Fields.Add(new Field(_id, "Id", FieldTypes.Hidden, 0)); _subEntity.NewRecordTemplate.Fields.Add(new Field(_fieldName, "Field Name", FieldTypes.Text, string.Empty, true) { Focus = true }); _subEntity.NewRecordTemplate.Fields.Add(new Field(_fieldLabel, "Field Label", FieldTypes.Text, string.Empty, true)); _subEntity.NewRecordTemplate.Fields.Add(new Field(_isRequired, "Is Required", FieldTypes.Checkbox, false)); _subEntity.NewRecordTemplate.Fields.Add(new Field(_dataType, "Data Type", FieldTypes.Dropdown, "Text") { Options = new List<KeyValuePair<object, object>>() { new KeyValuePair<object,object>("nvarchar","Text"), new KeyValuePair<object,object>("int","Number"), new KeyValuePair<object,object>("datetime","Date"), new KeyValuePair<object,object>("dropdown","Dropdown"), new KeyValuePair<object,object>("contentEditor","Content Editor") }, OnChangeCommand = "DataTypeChanged", IsDisabled = false }); _subEntity.NewRecordTemplate.Fields.Add(new Field(_maxSize, "Max Length", FieldTypes.Hidden, string.Empty, true)); _subEntity.NewRecordTemplate.Fields.Add(new Field(_dropdownOptions, "Dropdown Options", FieldTypes.Hidden, string.Empty, true)); _subEntity.NewRecordTemplate.Fields.Add(new Field(_isMultiLine, "Is Multiline", FieldTypes.Hidden, false, true)); }
private static void AddExistingRecords(RegistrationFormAdminDetailView parent, int templateId) { if (templateId > 0) { var forms = GetColumnFields(parent, templateId); foreach (var form in forms) { var record = new SubEntityRecord(); var fields = new List<Field>(); fields.Add(new Field(_id, "Id", FieldTypes.Hidden, form.DynamicColumnInstance.Id)); fields.Add(new Field(_fieldName, "Field Name", FieldTypes.Text, form.DynamicColumnInstance.Name, true) { IsDisabled = true }); fields.Add(new Field(_fieldLabel, "Field Label", FieldTypes.Text, form.DynamicColumnInstance.FormLabel, true)); fields.Add(new Field(_isRequired, "Is Required", FieldTypes.Checkbox, form.DynamicColumnInstance.IsRequired, false)); fields.Add(new Field(_dataTypeDisplay, "Data Type", FieldTypes.Label, GetFriendlyDataTypeForDynamicFields(form.DynamicColumnInstance.DataType))); fields.Add(new Field(_dataType, "DataType", FieldTypes.Hidden, form.DynamicColumnInstance.DataType)); switch (form.DynamicColumnInstance.DataType) { case "nvarchar": fields.Add(new Field(_maxSize, "Max Length", FieldTypes.Label, form.DynamicColumnInstance.DataSize, false)); fields.Add(new Field(_isMultiLine, "Is Multiline", FieldTypes.Label, form.DynamicColumnInstance.IsMultiline, false)); fields.Add(new Field(_dropdownOptions, "Dropdown Options", FieldTypes.Hidden, string.Empty, false)); break; case "dropdown": fields.Add(new Field(_maxSize, "Max Length", FieldTypes.Hidden, string.Empty, false)); fields.Add(new Field(_isMultiLine, "Is Multiline", FieldTypes.Hidden, string.Empty, false)); fields.Add(new Field(_dropdownOptions, "Dropdown Options", FieldTypes.MultiLineText, form.DynamicColumnInstance.DropDownValues, true)); break; default: fields.Add(new Field(_maxSize, "Max Length", FieldTypes.Hidden, string.Empty, false)); fields.Add(new Field(_isMultiLine, "Is Multiline", FieldTypes.Hidden, string.Empty, false)); fields.Add(new Field(_dropdownOptions, "Dropdown Options", FieldTypes.Hidden, string.Empty, false)); break; } record.Fields = fields; _subEntity.Records.Add(record); } } }
public static int Save(RegistrationFormAdminDetailView parent, List<SubEntity> subEntities, string templateName) { try { if (string.IsNullOrEmpty(templateName.Trim())) throw new Exception("Template Name required."); var columns = new List<DynamicColumnsCollection>(); var form = new DynamicFormDto { Name = templateName, IsTemplate = true, Id = _templateId, LabelPosition = string.Empty }; var fieldList = new List<object>(); ValidateSubEntitites(subEntities); //build columns from both left and right subentities foreach (var sub in subEntities) { var records = sub.Records.Where(a => a.Action != RecordActions.Deleted).ToList(); columns = MakeColumnsList(parent, columns, records, form); //get fieldNames from both left and right columns, and then check for duplicates. var subEntityFields = records.Where(r => r.Fields != null).Select(f => f.Fields); foreach (var item in subEntityFields.ToList()) { var fieldName = item.Where(r => r.FieldName == _fieldName).Select(r => r.FieldValue).First(); fieldList.Add(fieldName); } } var duplicates = fieldList.GroupBy(x => x).Where(g => g.Count() > 1).Select(g => g.Key).ToList(); if (duplicates.Count() > 0) { var errorMessage = string.Format("The following fields appear in the template more than once, please remove the field from either the Left or Right Column: {0}", string.Join(", ", duplicates)); throw new Exception(errorMessage); } if (_templateId > 0) { var request = new UpdateDynamicFormWithColumnsRequest { Form = form, FieldsInColumns = columns }; parent.ProcessRequest<UpdateDynamicFormWithColumnsResponse>(request); } else { var request = new AddDynamicFormWithColumnsRequest { Form = form, FieldsInColumns = columns }; _templateId = parent.ProcessRequest<AddDynamicFormWithColumnsResponse>(request).Id; } return _templateId; } catch (Exception ex) { throw new Exception(ex.Message); } }