| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Diagnostics;
 
- using System.Globalization;
 
- using System.Linq;
 
- using System.Reflection;
 
- using System.Windows;
 
- using System.Windows.Controls;
 
- using InABox.Core;
 
- using InABox.Wpf;
 
- using InABox.WPF;
 
- using Syncfusion.Windows.Shared;
 
- using Xceed.Wpf.AvalonDock.Themes;
 
- namespace InABox.DynamicGrid
 
- {
 
-     /// <summary>
 
-     ///     Interaction logic for DynamicExportForm.xaml
 
-     /// </summary>
 
-     public partial class DynamicExportForm : ThemableWindow
 
-     {
 
-         private readonly Type _entitytype;
 
-         public DynamicExportForm(Type entitytype, IEnumerable<string> Selected)
 
-         {
 
-             InitializeComponent();
 
-             Fields = Array.Empty<string>();
 
-             ChildMappings = new();
 
-             var codeProperty = EntityCode(entitytype);
 
-             if (codeProperty != null)
 
-             {
 
-                 var m2mTypes = DynamicGridUtils.GetManyToManyTypes(entitytype)
 
-                     .Where(x => x.GetInterfaces().Contains(typeof(IExportable)));
 
-                 var o2mTypes = DynamicGridUtils.GetOneToManyTypes(entitytype)
 
-                     .Where(x => x.GetInterfaces().Contains(typeof(IExportable)));
 
-                 foreach(var type in m2mTypes)
 
-                 {
 
-                     var otherType = CoreUtils.GetManyToManyOtherType(type, entitytype);
 
-                     var result = new Inflector.Inflector(new CultureInfo("en")).Pluralize(otherType.Name);
 
-                     AddOtherTab(type, result);
 
-                 }
 
-                 foreach(var type in o2mTypes)
 
-                 {
 
-                     var caption = type.GetCustomAttribute(typeof(Caption));
 
-                     var result = caption != null ? 
 
-                         ((Caption)caption).Text : 
 
-                         new Inflector.Inflector(new CultureInfo("en")).Pluralize(type.Name);
 
-                     AddOtherTab(type, result);
 
-                 }
 
-             }
 
-             _entitytype = entitytype;
 
-             ShowHelpImage.Source = Wpf.Resources.help.AsBitmapImage();
 
-             var mappings = ImportFactory.ExtractMappings(_entitytype, ImportMappingType.Export);
 
-             Mappings.HideBlank = true;
 
-             Mappings.Items.AddRange(mappings);
 
-             Mappings.Selected.AddRange(mappings.Where(x => x.Key || Selected.Contains(x.Property)));
 
-             Mappings.Refresh(true, true);
 
-         }
 
-         private DynamicExportMappingGrid CreateOtherTab(Type tabType)
 
-         {
 
-             var mappingsGrid = new DynamicExportMappingGrid();
 
-             var mappings = ImportFactory.ExtractMappings(tabType, ImportMappingType.Export);
 
-             mappingsGrid.HideBlank = true;
 
-             mappingsGrid.Items.AddRange(mappings);
 
-             mappingsGrid.Selected.Clear();
 
-             mappingsGrid.Refresh(true, true);
 
-             return mappingsGrid;
 
-         }
 
-         private void AddOtherTab(Type tabType, string caption)
 
-         {
 
-             var tab = new TabItem() { Header = caption };
 
-             var grid = CreateOtherTab(tabType);
 
-             ChildMappings[tabType] = grid;
 
-             tab.Content = grid;
 
-             TabControl.Items.Add(tab);
 
-         }
 
-         private DynamicExportMappingGrid CurrentMappings
 
-         {
 
-             get => (TabControl.SelectedContent as DynamicExportMappingGrid)!;
 
-         }
 
-         public string[] Fields { get; private set; }
 
-         private Dictionary<Type, DynamicExportMappingGrid> ChildMappings;
 
-         private void ClearAll_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             CurrentMappings.ClearAll();
 
-         }
 
-         private void SelectAll_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             CurrentMappings.SelectAll();
 
-         }
 
-         private void HideBlank_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             CurrentMappings.HideBlank = !CurrentMappings.HideBlank;
 
-             HideBlank.Content = CurrentMappings.HideBlank ? "Show All" : "Hide Blank";
 
-             CurrentMappings.Refresh(false, true);
 
-         }
 
-         private void Cancel_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             DialogResult = false;
 
-         }
 
-         private void OK_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             Fields = Mappings.Selected.Select(x => x.Property).ToArray();
 
-             DialogResult = true;
 
-         }
 
-         private void ShowHelp_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             Process.Start(new ProcessStartInfo("https://prsdigital.com.au/wiki/index.php/Export_Data") { UseShellExecute = true });
 
-         }
 
-         private IProperty? EntityCode(Type entityType)
 
-         {
 
-             foreach(var property in DatabaseSchema.Properties(entityType))
 
-             {
 
-                 var editor = property.Editor;
 
-                 if(editor is UniqueCodeEditor)
 
-                 {
 
-                     return property;
 
-                 }
 
-             }
 
-             return null;
 
-         }
 
-         public Dictionary<Type, IEnumerable<string>> GetChildFields()
 
-         {
 
-             return ChildMappings.ToDictionary(
 
-                 x => x.Key,
 
-                 x => x.Value.Selected.Select(x => x.Property));
 
-         }
 
-     }
 
- }
 
 
  |