private static void CreateThings() { // Create a user using (AriClinicContext ctx = new AriClinicContext("AriClinicContext")) { Console.WriteLine("Deleting all records...."); ctx.Delete(ctx.Logs); ctx.Delete(ctx.Users); ctx.Delete(ctx.UserGroups); ctx.Delete(ctx.HealthcareCompanies); ctx.SaveChanges(); Console.WriteLine("Creating default group.."); UserGroup ug = new UserGroup(); ug.Name = "Reservado"; ctx.Add(ug); Console.WriteLine("Creating administrator user.."); User user = new User(); user.Name = "Superuser"; user.Login = "******"; user.UserGroup = ug; user = CntAriCli.EncryptPassword(user, "admin"); ctx.Add(user); HealthcareCompany hc = new HealthcareCompany(); hc.Name = "Ariadna Salud S.L."; ctx.Add(hc); Clinic clinic = new Clinic() { Name = "Clinica 1" }; ctx.Add(clinic); // parameters Console.WriteLine("Creating parameters..."); AriCliModel.Parameter parameter = new Parameter() { PainPump = null, UseNomenclator = false }; ctx.Add(parameter); // processes Console.WriteLine("Creating process..."); Process process = new Process() { Name = "Administración", Code = "admin", }; Process admin = process; ctx.Add(admin); process = new Process() { Name = "Procesos", Code = "process", ParentProcess = admin }; ctx.Add(process); process = new Process() { Name = "Permisos", Code = "permision", ParentProcess = admin }; ctx.Add(process); // permissions Console.WriteLine("Creating permissions..."); Permission permission = new Permission() { Process = admin, UserGroup = ug, View=true, Create=true, Modify=true, Execute=true, }; ctx.Add(permission); permission = new Permission() { Process = process, // must be permission process UserGroup = ug, View = true, Create = true, Modify = true, Execute = true, }; ctx.Add(permission); // import data ctx.SaveChanges(); Console.WriteLine("All jobs done"); } }
/// <summary> /// Returns a list of objects in the format requierd by RadListTree control /// </summary> /// <param name="ug"></param> /// <returns></returns> public static IList<PermissionView> GetPermissionsViews(UserGroup ug) { IList<PermissionView> perviews = new List<PermissionView>(); foreach (Permission per in ug.Permissions) { PermissionView pw = new PermissionView(); pw.PermissionId = per.PermissionId; pw.Name = per.Process.Name; pw.ProcessId = per.Process.ProcessId; if (per.Process.ParentProcess != null) pw.ParentProcessId = per.Process.ParentProcess.ProcessId; else pw.ParentProcessId = 0; pw.View = per.View; pw.Create = per.Create; pw.Modify = per.Modify; pw.Execute = per.Execute; perviews.Add(pw); } return perviews; }
/// <summary> /// Obtain the permisson that an specific group has over a process /// </summary> /// <param name="ug"> User group </param> /// <param name="pr"> Process</param> /// <param name="ctx"> Openaccess context</param> /// <returns> Permission or null</returns> public static Permission GetPermission(UserGroup ug, Process pr, AriClinicContext ctx) { Permission per = (from p in ctx.Permissions where p.UserGroup.UserGroupId == ug.UserGroupId && p.Process.ProcessId == pr.ProcessId select p).FirstOrDefault<Permission>(); return per; }
/// <summary> /// Verify that in the permission table all the process have an entry /// </summary> /// <param name="ug"> user group to wich the permissions are assigned</param> /// <param name="ctx"> openaccess context </param> public static void VerifyPermissions(UserGroup ug, AriClinicContext ctx) { foreach (Process pr in ctx.Processes) { Permission per = (from p in ctx.Permissions where p.UserGroup.UserGroupId == ug.UserGroupId && p.Process.ProcessId == pr.ProcessId select p).FirstOrDefault<Permission>(); if (per == null) { // permission doesn't exists for this user group // we create one. per = new Permission(); per.UserGroup = ug; per.Process = pr; // default permissions are asigned. per.View = true; per.Create = false; per.Modify = false; per.Execute = false; ctx.Add(per); } } ctx.SaveChanges(); }