| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Threading;
 
- using System.Windows;
 
- using System.Windows.Media.Imaging;
 
- using InABox.Core;
 
- using InABox.WPF;
 
- namespace InABox.DynamicGrid;
 
- public class DynamicImportMappingGrid : DynamicGrid<ImportMapping>
 
- {
 
-     private readonly BitmapImage create = Wpf.Resources.tick.AsBitmapImage();
 
-     private readonly BitmapImage key = Wpf.Resources.key.AsBitmapImage();
 
-     private readonly BitmapImage restrict = Wpf.Resources.warning.AsBitmapImage();
 
-     public DynamicImportMappingGrid()
 
-     {
 
-         UniqueCode = "";
 
-         HideBlank = false;
 
-         Items = new List<ImportMapping>();
 
-     }
 
-     protected override void Init()
 
-     {
 
-         base.Init();
 
-         ActionColumns.Add(new DynamicImageColumn(KeyImage, KeyAction) { Position = DynamicActionColumnPosition.Start, ToolTip = KeyToolTip });
 
-         HiddenColumns.Add(x => x.Key);
 
-         ActionColumns.Add(new DynamicImageColumn(LookupImage, LookupAction) { ToolTip = LookupToolTip });
 
-         HiddenColumns.Add(x => x.Lookup);
 
-     }
 
-     protected override void DoReconfigure(DynamicGridOptions options)
 
-     {
 
-         base.DoReconfigure(options);
 
-         options.RecordCount = true;
 
-         options.DirectEdit = true;
 
-     }
 
-     public List<ImportMapping> Items { get; }
 
-     public string UniqueCode { get; set; }
 
-     public bool HideBlank { get; set; }
 
-     public override void DeleteItems(params CoreRow[] rows)
 
-     {
 
-         var deletes = new List<ImportMapping>();
 
-         foreach (var row in rows)
 
-             deletes.Add(Items[row.Index]);
 
-         Items.RemoveAll(x => deletes.Contains(x));
 
-     }
 
-     public override ImportMapping LoadItem(CoreRow row)
 
-     {
 
-         return Items[row.Index];
 
-     }
 
-     protected override void Reload(
 
-         Filters<ImportMapping> criteria, Columns<ImportMapping> columns, ref SortOrder<ImportMapping>? sort, 
 
-         CancellationToken token, Action<CoreTable?, Exception?> action)
 
-     {
 
-         //Lookups.Clear();
 
-         var result = new CoreTable();
 
-         result.LoadColumns(typeof(ImportMapping));
 
-         if (HideBlank)
 
-             result.LoadRows(Items.Where(x => !string.IsNullOrWhiteSpace(x.Field) || !string.IsNullOrWhiteSpace(x.Constant)));
 
-         else
 
-             result.LoadRows(Items);
 
-         foreach(var item in Items)
 
-         {
 
-             if(!item.Field.IsNullOrWhiteSpace() && !ImportFieldGenerator.Fields.Contains(item.Field))
 
-             {
 
-                 item.Field = "";
 
-             }
 
-         }
 
-         action.Invoke(result, null);
 
-     }
 
-     public override void SaveItem(ImportMapping item)
 
-     {
 
-         if (!Items.Contains(item))
 
-             Items.Add(item);
 
-     }
 
-     private FrameworkElement? KeyToolTip(DynamicActionColumn column, CoreRow? row)
 
-     {
 
-         var result = "";
 
-         if (row == null)
 
-             result = "This column is used to indicate which fields form the unique key imported records";
 
-         else
 
-         {
 
-             var key = row.Get<ImportMapping, bool>(x => x.Key);
 
-             result = key
 
-                 ? "This field forms part (or all) of the unique key for imported records"
 
-                 : "";
 
-         }
 
-         return column.TextToolTip(result);
 
-     }
 
-     private FrameworkElement? LookupToolTip(DynamicActionColumn column, CoreRow? row)
 
-     {
 
-         var result = "";
 
-         if (row == null)
 
-             result = "This column determines whether or not lookup values are automatically created as required, or cause the import to fail.";
 
-         else
 
-         {
 
-             var lookup = row.Get<ImportMapping, ImportLookupType>(x => x.Lookup);
 
-             result = lookup == ImportLookupType.None
 
-                 ? ""
 
-                 : lookup == ImportLookupType.Create
 
-                     ? "Create Lookup Values as required"
 
-                     : "Restrict Importing for invalid / non-existent Lookup Values";
 
-         }
 
-         return column.TextToolTip(result);
 
-     }
 
-     public void Reset()
 
-     {
 
-         foreach (var item in Items)
 
-         {
 
-             item.Key = false;
 
-             item.Field = "";
 
-             item.Constant = "";
 
-             item.Lookup = item.Lookup == ImportLookupType.Create ? ImportLookupType.Restrict : item.Lookup;
 
-         }
 
-         Refresh(false, true);
 
-     }
 
-     public void MatchFields()
 
-     {
 
-         foreach (var item in Items)
 
-         {
 
-             var field = ImportFieldGenerator.Fields.FirstOrDefault(x => String.Equals(item.Property.ToUpper(), x.ToUpper()));
 
-             if (!String.IsNullOrWhiteSpace(field))
 
-             {
 
-                 item.Field = field;
 
-                 if (item.Property.Equals(UniqueCode))
 
-                     item.Key = true;
 
-             }
 
-             else
 
-             {
 
-                 item.Key = false;
 
-                 item.Field = "";
 
-                 item.Constant = "";
 
-                 item.Lookup = item.Lookup == ImportLookupType.Create ? ImportLookupType.Restrict : item.Lookup;
 
-             }
 
-         }
 
-         Refresh(false, true);
 
-     }
 
-     private BitmapImage? KeyImage(CoreRow? arg)
 
-     {
 
-         if (arg == null)
 
-             return key;
 
-         return arg.Get<ImportMapping, bool>(x => x.Key) ? key : null;
 
-     }
 
-     private bool KeyAction(CoreRow? arg)
 
-     {
 
-         if (arg == null)
 
-             return false;
 
-         var item = Items[arg.Index];
 
-         if (string.IsNullOrWhiteSpace(item.Field) && string.IsNullOrWhiteSpace(item.Constant))
 
-         {
 
-             if (item.Key)
 
-             {
 
-                 item.Key = false;
 
-                 return true;
 
-             }
 
-             else
 
-             {
 
-                 return false;
 
-             }
 
-         }
 
-         else
 
-         {
 
-             item.Key = !item.Key;
 
-             return true;
 
-         }
 
-     }
 
-     private BitmapImage? LookupImage(CoreRow? arg)
 
-     {
 
-         if (arg == null)
 
-             return restrict;
 
-         var item = Items.FirstOrDefault(x => x.Property.Equals(arg.Get<ImportMapping, string>(c => c.Property)));
 
-         if (item == null)
 
-             return null;
 
-         if (string.IsNullOrWhiteSpace(item.Field) && string.IsNullOrWhiteSpace(item.Constant))
 
-             return null;
 
-         return item.Lookup == ImportLookupType.Create
 
-             ? create
 
-             : item.Lookup == ImportLookupType.Restrict
 
-                 ? restrict
 
-                 : null;
 
-     }
 
-     private bool LookupAction(CoreRow? arg)
 
-     {
 
-         if (arg == null)
 
-             return false;
 
-         var property = arg.Get<ImportMapping, string>(c => c.Property);
 
-         var item = Items.FirstOrDefault(x => x.Property.Equals(property));
 
-         if (item == null || (string.IsNullOrWhiteSpace(item.Field) && string.IsNullOrWhiteSpace(item.Constant)))
 
-             return false;
 
-         if (item.Lookup == ImportLookupType.Restrict)
 
-             item.Lookup = ImportLookupType.Create;
 
-         else if (item.Lookup == ImportLookupType.Create)
 
-             item.Lookup = ImportLookupType.Restrict;
 
-         else
 
-             return false;
 
-         return true;
 
-     }
 
- }
 
 
  |