using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL; using Tango.BL.Entities; using Tango.CSV; namespace Tango.FSE.DPGraphGenerator { class Program { private class RolePermission { public String Name { get; set; } public override string ToString() { return Name; } } private class RoleModel { public String Name { get; set; } public List Permissions { get; set; } public RoleModel() { Permissions = new List(); } } static void Main(string[] args) { String outputFolder = Path.GetFullPath(@"..\..\..\Roles & Permissions"); Console.WriteLine($"Generating roles and permissions csv files to '{outputFolder}'..."); List models = new List(); using (ObservablesContext db = ObservablesContext.CreateDefault()) { var roles = db.Roles.ToList(); var roles_permissions = db.RolesPermissions.ToList(); var permissions = db.Permissions.ToList(); foreach (var role in roles.Where(x => x.Name.Contains("FSE")).ToList()) { RoleModel model = new RoleModel(); model.Name = role.Description; List role_permissions = role.RolesPermissions.Select(x => x.Permission).ToList(); foreach (var permission in role_permissions.OrderBy(x => x.Code)) { model.Permissions.Add(new RolePermission() { Name = permission.Name.Replace("FSE_", "") }); } models.Add(model); } } Directory.CreateDirectory(outputFolder); foreach (var model in models) { Console.WriteLine($"Generating role '{model.Name}'..."); using (DynamicCsvFile csvFile = new DynamicCsvFile(Path.Combine(outputFolder, $"{model.Name}.csv"))) { csvFile.Columns.Add(new DynamicCsvFileColumn() { Name = model.Name }); foreach (var permission in model.Permissions) { csvFile.Append(permission); } } } Console.WriteLine(); Console.WriteLine("Done!, press return to exit..."); Console.ReadLine(); } } }