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 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 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;
 }
        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);
            }
        }