aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/FSE/Tango.FSE.DPGraphGenerator/Program.cs
blob: 9eb0fb7b6a03aeb46c780acad9dfc0cc62b4eda8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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<RolePermission> Permissions { get; set; }

            public RoleModel()
            {
                Permissions = new List<RolePermission>();
            }
        }

        static void Main(string[] args)
        {
            String outputFolder = Path.GetFullPath(@"..\..\..\Roles & Permissions");

            Console.WriteLine($"Generating roles and permissions csv files to '{outputFolder}'...");

            List<RoleModel> models = new List<RoleModel>();

            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<Permission> 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();
        }
    }
}