| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | 
							- using CsvHelper.Configuration;
 
- using InABox.Core;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq.Expressions;
 
- using System.Text;
 
- namespace InABox.Poster.CSV
 
- {
 
-     public interface ICSVClassMap
 
-     {
 
-         ClassMap ClassMap { get; }
 
-     }
 
-     public interface ICSVClassMap<T> : ICSVClassMap
 
-     {
 
-         new ClassMap<T> ClassMap { get; }
 
-         ClassMap ICSVClassMap.ClassMap => ClassMap;
 
-         void Map(string name, Expression<Func<T, object>> expr);
 
-     }
 
-     public class CSVClassMap<T> : ClassMap<T>, ICSVClassMap<T>
 
-     {
 
-         public ClassMap<T> ClassMap => this;
 
-         public void Map(string name, Expression<Func<T, object>> expr)
 
-         {
 
-             Map(expr).Name(name);
 
-         }
 
-     }
 
-     public interface ICSVExport
 
-     {
 
-         Type Type { get; }
 
-         ICSVClassMap ClassMap { get; }
 
-         IEnumerable<object> Records { get; }
 
-     }
 
-     public interface ICSVExport<T> : ICSVExport
 
-         where T : class
 
-     {
 
-         new Type Type => typeof(T);
 
-         new CSVClassMap<T> ClassMap { get; }
 
-         new IEnumerable<T> Records { get; }
 
-         Type ICSVExport.Type => Type;
 
-         ICSVClassMap ICSVExport.ClassMap => ClassMap;
 
-         IEnumerable<object> ICSVExport.Records => Records;
 
-     }
 
-     public class CSVExport<T> : ICSVExport<T>
 
-         where T : class
 
-     {
 
-         public CSVClassMap<T> ClassMap { get; } = new CSVClassMap<T>();
 
-         public IEnumerable<T> Records => Items;
 
-         public List<T> Items { get; } = new List<T>();
 
-         public void DefineMapping(List<Tuple<string, Expression<Func<T, object>>>> mappings)
 
-         {
 
-             foreach(var (name, expr) in mappings)
 
-             {
 
-                 ClassMap.Map(name, expr);
 
-             }
 
-         }
 
-         public void Map(string name,  Expression<Func<T, object>> expr)
 
-         {
 
-             ClassMap.Map(name, expr);
 
-         }
 
-         public void Add(T item)
 
-         {
 
-             Items.Add(item);
 
-         }
 
-         public void AddRange(IEnumerable<T> items)
 
-         {
 
-             Items.AddRange(items);
 
-         }
 
-     }
 
-     /// <summary>
 
-     /// Defines an interface for posters that can export to CSV.
 
-     /// </summary>
 
-     /// <typeparam name="TEntity"></typeparam>
 
-     [Caption("CSV")]
 
-     public interface ICSVPoster<TEntity> : IPoster<TEntity, CSVPosterSettings>
 
-         where TEntity : Entity, IPostable, IRemotable, IPersistent, new()
 
-     {
 
-         bool BeforePost(IDataModel<TEntity> model);
 
-         ICSVExport Process(IDataModel<TEntity> model);
 
-         void AfterPost(IDataModel<TEntity> model);
 
-     }
 
- }
 
 
  |