| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | using InABox.Core;using Inflector;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace InABox.Poster.CSV;public class CSVPosterSettings : PosterSettings{    [FileNameEditor("CSV Files (*.csv)|*.csv", RequireExisting = false)]    public string DefaultOutputFile { get; set; }    public override string DefaultScript(Type TPostable)    {        var tName = TPostable.Name;        var decapital = tName[0..1].ToLower() + tName[1..];        var ns = TPostable.Namespace;        return @"using " + ns + @";using InABox.Poster.CSV;using InABox.Core;using System.Collections.Generic;public class Module{    // Output Results for CSV    public ICSVExport<" + tName + @"> Results { get; set; }    // Customise 'model' before loading data. Return false if the post needs to be cancelled.    public bool BeforePost(IDataModel<" + tName + @"> model)    {        return true;    }    public bool Process(IDataModel<" + tName + @"> model)    {        // Create new export object. You can use any object as your map,        // but for simple cases just use " + tName + @".        var export = new CSVExport<" + $"{tName}, {tName}" + @">();        // Define the mapping from the fields of " + tName + @" to columns in the CSV file.        export.DefineMapping(new()        {            new(""ID"", " + decapital + @" => " + decapital + @".ID),            new(""Column1"", " + decapital + @" => " + decapital +  @".Column1),            new(""Column2"", " + decapital + @" => " + decapital +  @".Column2),            new(""Column3"", " + decapital + @" => " + decapital + @".Column3),            // etc.        });        foreach(var " + decapital + @" in model.GetTable<" + tName + @">().ToObjects<" + tName + @">())        {            // Do processing                        // Add item to export            export.Add(" + $"{decapital}, {decapital}" + @");        }        Results = export; // Set result        return true; // return true for success.    }    // Perform any post-processing. All the items of type '" + tName + @" will be saved after this function is called.    public void AfterPost(IDataModel<" + tName + @"> model)    {    }}";    }}
 |