static void Main(string[] args) { //SetUp Storage s = new Storage(); Commands c = new Commands(s); Queries q = new Queries(s); var shad = new Models.Person { Email = "*****@*****.**", DNVGLID = Guid.NewGuid().ToString(), Id = 1, Name = "Shad" }; var anatoliy = new Models.Person { Email = "*****@*****.**", DNVGLID = Guid.NewGuid().ToString(), Id = 2, Name = "Anatoliy" }; var s1 = new Models.Container { Id = 1, Name = "ship_01", ResourceId = Guid.NewGuid().ToString() }; var s2 = new Models.Container { Id = 2, Name = "ship_02", ResourceId = Guid.NewGuid().ToString() }; c.AddUser(shad); c.AddUser(anatoliy); c.AddContainer(s1); c.AddContainer(s2); //Add all ships containers to container grouping ships var cg1 = new Models.ContainerGroup { Id = 1, name = "ships", ContainerInGroup = new List <Models.Container>() }; c.AddContainerToContainerGroup(s1, cg1); c.AddContainerToContainerGroup(s2, cg1); //Create user groups to access ships var ug1 = new Models.UserGroup { Id = 1, name = "readers of ships", PersonInGroup = new List <Models.Person>() }; var ug2 = new Models.UserGroup { Id = 2, name = "admin of ships", PersonInGroup = new List <Models.Person>() }; //Add users to a user group c.AddPersonToUserGroup(shad, ug1); c.AddPersonToUserGroup(shad, ug2); c.AddPersonToUserGroup(anatoliy, ug2); //Give access to ship c.AddContainerGroupToUserGroup(cg1, ug1); c.AddContainerGroupToUserGroup(cg1, ug2); //Which group has access? var o = q.getListOfUserGroupsWithAcessToContainerGroup(cg1); Console.WriteLine($"Which group has access to {cg1.name}"); Console.WriteLine(o.Count); foreach (var aa in o) { Console.WriteLine(aa.name); Console.WriteLine("whos in that group?"); var p = q.getListOfPeapleInGroupQuery(aa); foreach (var pp in p) { Console.WriteLine(pp.Name); } } Console.WriteLine($"-------------------------"); Console.WriteLine($"Removing user group {ug1.name} access from container group {cg1.name}"); //Remove access c.RemoveContainerGroupFromUserGroup(cg1, ug1); //Which group has access? o = q.getListOfUserGroupsWithAcessToContainerGroup(cg1); Console.WriteLine($"Which group has access to {cg1.name}"); Console.WriteLine(o.Count); foreach (var aa in o) { Console.WriteLine(aa.name); Console.WriteLine("whos in that group?"); var p = q.getListOfPeapleInGroupQuery(aa); foreach (var pp in p) { Console.WriteLine(pp.Name); } } Console.Read(); }