diff --git a/BExIS.Modules.RBM.UI.csproj b/BExIS.Modules.RBM.UI.csproj index 64e50c5..e756b3d 100644 --- a/BExIS.Modules.RBM.UI.csproj +++ b/BExIS.Modules.RBM.UI.csproj @@ -19,7 +19,7 @@ Properties BExIS.Modules.RBM.UI BExIS.Modules.RBM.UI - v4.5.2 + v4.8 false true @@ -32,6 +32,7 @@ ..\..\..\..\packages\WebGrease.1.5.2\lib 3.1 + true @@ -71,13 +72,17 @@ - + ..\..\..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll + + + + ..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll @@ -105,56 +110,14 @@ ..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll - + ..\..\..\..\packages\TelerikMvcExtensions.2013.2.611\lib\net40\Telerik.Web.Mvc.dll - - ..\..\..\..\Libraries\Vaiona\Vaiona.Core.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.Entities.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.Entities.Orm.NH.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.IoC.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.Logging.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.Model.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.MultiTenancy.Api.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.MultiTenancy.Services.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.Persistence.Api.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.PersistenceProviders.NH.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.Utils.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.Web.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.Web.Mvc.dll - - - ..\..\..\..\Libraries\Vaiona\Vaiona.Web.Mvc.Modularity.dll - ..\..\..\..\packages\WebActivatorEx.2.2.0\lib\net40\WebActivatorEx.dll @@ -186,7 +149,6 @@ - @@ -668,6 +630,10 @@ + + Always + + PublicSettingsSingleFileGenerator @@ -705,11 +671,11 @@ - {C230693B-D780-438B-B26C-82257642DD5C} + {c230693b-d780-438b-b26c-82257642dd5c} BExIS.Security.Entities - {681C8BC4-55F0-4F43-A685-90E246A88CB1} + {681c8bc4-55f0-4f43-a685-90e246a88cb1} BExIS.Security.Services @@ -720,6 +686,62 @@ {C4CA0A99-0AF3-4372-A9B7-B9073599BD8B} BExIS.Dlm.Services + + {b446c14f-9df1-4c3c-a634-e3addd05c48a} + Vaiona.Core + + + {c4d4bc9e-8832-4966-be58-cb684e9a74e8} + Vaiona.Entities.Orm.NH + + + {0815d220-3625-4e23-bbbc-8152345637fe} + Vaiona.Entities + + + {29a7be0f-a17c-4ae8-8ca1-15fe4dd74129} + Vaiona.IoC + + + {e8b37581-1cac-463d-903b-b4bee8b2b0e3} + Vaiona.Logging + + + {a60ac05f-8c9a-4efd-9826-452e6049da4d} + Vaiona.Model + + + {bccd3d7b-8a50-4fa2-b9d3-2cb31bea60b3} + Vaiona.MultiTenancy.Api + + + {4639d130-e0aa-4aef-b9bd-bef6ad99dbaf} + Vaiona.MultiTenancy.Services + + + {640bf81d-354a-4bf0-85fc-f0ad587cf8a2} + Vaiona.Persistence.Api + + + {2fb8def8-5749-4eae-8588-8a5aaed251a5} + Vaiona.PersistenceProviders.NH + + + {63fcacaa-9534-4fdd-a082-78dcc06baf28} + Vaiona.Utils + + + {705f8751-e58a-453e-a7fd-0c310fd3cae8} + Vaiona.Web.Mvc.Modularity + + + {5f5d22e8-8c05-49cd-854e-8fe8eff1aa6c} + Vaiona.Web.Mvc + + + {5b48b5a8-eae8-4ef8-8f2c-7fedb1b095d3} + Vaiona.Web + {252f7872-a69c-43a6-84b4-4d2abdbdd9ab} BExIS.Xml.Helpers @@ -791,7 +813,8 @@ mkdir "$(SolutionDir)Console\Workspace\Modules\RBM" -C:\Windows\System32\xcopy "$(ProjectDir)Rbm.Settings.xml" "$(SolutionDir)Console\Workspace\Modules\RBM" /C /Y /I +C:\Windows\System32\xcopy "$(ProjectDir)Rbm.Settings.json" "$(SolutionDir)Console\Workspace\Modules\RBM" /C /Y /I + + + diff --git a/BExIS.Rbm.Services/BExIS.Rbm.Services.csproj b/BExIS.Rbm.Services/BExIS.Rbm.Services.csproj index 647b763..a794f7e 100644 --- a/BExIS.Rbm.Services/BExIS.Rbm.Services.csproj +++ b/BExIS.Rbm.Services/BExIS.Rbm.Services.csproj @@ -14,7 +14,7 @@ Properties BExIS.Rbm.Services BExIS.Rbm.Services - v4.5.2 + v4.8 512 SAK SAK @@ -51,12 +51,6 @@ - - ..\..\..\..\..\Libraries\Vaiona\Vaiona.Entities.dll - - - ..\..\..\..\..\Libraries\Vaiona\Vaiona.Persistence.Api.dll - @@ -76,7 +70,7 @@ - {c230693b-d780-438b-b26c-82257642dd5c} + {C230693B-D780-438B-B26C-82257642DD5C} BExIS.Security.Entities @@ -91,6 +85,14 @@ {c4ca0a99-0af3-4372-a9b7-b9073599bd8b} BExIS.Dlm.Services + + {0815d220-3625-4e23-bbbc-8152345637fe} + Vaiona.Entities + + + {640bf81d-354a-4bf0-85fc-f0ad587cf8a2} + Vaiona.Persistence.Api + {c9f05c1a-c8a0-47b1-a0da-50af41992767} BExIS.Rbm.Entities diff --git a/BExIS.Rbm.Services/app.config b/BExIS.Rbm.Services/app.config index f059d7b..0a55499 100644 --- a/BExIS.Rbm.Services/app.config +++ b/BExIS.Rbm.Services/app.config @@ -1,27 +1,27 @@ - + - - + + - - + + - - + + - - + + - - + + - \ No newline at end of file + diff --git a/Controllers/ActivityController.cs b/Controllers/ActivityController.cs index d8d35ea..8dc5fdb 100644 --- a/Controllers/ActivityController.cs +++ b/Controllers/ActivityController.cs @@ -19,15 +19,21 @@ namespace BExIS.Modules.RBM.UI.Controllers { public class ActivityController : Controller { + private readonly UserManager _userManager; + public ActivityController(UserManager userManager) + { + _userManager = userManager; + } + public ActionResult Activity() { ViewBag.Title = PresentationModel.GetViewTitleForTenant("Manage Activities", Session.GetTenant()); List model = new List(); using (var rManager = new ActivityManager()) - using (var permissionManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); List data = rManager.GetAllActivities().ToList(); // get id from loged in user @@ -42,8 +48,8 @@ public ActionResult Activity() // temp.InUse = rManager.IsInEvent(a.Id); // get permission from logged in user - temp.EditAccess = permissionManager.HasEffectiveRight(userId, new List { entityTypeId }, a.Id, RightType.Read); - temp.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List { entityTypeId }, a.Id, RightType.Delete); + temp.EditAccess = permissionManager.HasEffectiveRightsAsync(userId, entityTypeId, a.Id, RightType.Read).Result; + temp.DeleteAccess = permissionManager.HasEffectiveRightsAsync(userId, entityTypeId, a.Id, RightType.Delete).Result; model.Add(temp); } @@ -75,12 +81,11 @@ public ActionResult Create(ActivityModel model) Activity a = aManager.CreateActivity(model.Name, model.Description, model.Disable); // Start -> add security ---------------------------------------- - using (EntityPermissionManager pManager = new EntityPermissionManager()) using (SubjectManager subManager = new SubjectManager()) using (var entityTypeManager = new EntityManager()) - using (UserManager userManager = new UserManager()) { - var userTask = userManager.FindByNameAsync(HttpContext.User.Identity.Name); + EntityPermissionManager pManager = new EntityPermissionManager(); + var userTask = _userManager.FindByNameAsync(HttpContext.User.Identity.Name); userTask.Wait(); var user = userTask.Result; @@ -88,7 +93,7 @@ public ActionResult Create(ActivityModel model) // 31 is the sum from all rights: Read = 1, Write = 4, Delete = 8, Grant = 16 int rights = (int)RightType.Read + (int)RightType.Write + (int)RightType.Delete + (int)RightType.Grant; - pManager.Create(user, entityType, a.Id, rights); + //pManager.CreateAsync(user.Name, entityType.Name, a.Id, rights); // End -> add security ------------------------------------------ } diff --git a/Controllers/NotificationController.cs b/Controllers/NotificationController.cs index c361bd0..5bd9f89 100644 --- a/Controllers/NotificationController.cs +++ b/Controllers/NotificationController.cs @@ -20,11 +20,21 @@ using BExIS.Security.Entities.Authorization; using BExIS.Modules.RBM.UI.Helper; using BExIS.Security.Services.Objects; +using Vaiona.Web.Mvc.Modularity; namespace BExIS.Modules.RBM.UI.Controllers { public class NotificationController : Controller { + private readonly GroupManager _groupManager; + private readonly UserManager _userManager; + + public NotificationController(UserManager userManager, GroupManager groupManager) + { + _userManager = userManager; + _groupManager = groupManager; + } + #region Notification Management public ActionResult Notification() @@ -33,9 +43,9 @@ public ActionResult Notification() List model = new List(); using (var nManager = new NotificationManager()) - using (var permissionManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); List data = nManager.GetAllNotifications().ToList(); //get id from loged in user @@ -48,8 +58,8 @@ public ActionResult Notification() NotificationModel temp = new NotificationModel(n); //get permission from logged in user - temp.EditAccess = permissionManager.HasEffectiveRight(userId, new List() { entityTypeId }, n.Id, RightType.Write); - temp.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List() { entityTypeId }, n.Id, RightType.Delete); + temp.EditAccess = permissionManager.HasEffectiveRightsAsync(userId, entityTypeId, n.Id, RightType.Write).Result; + temp.DeleteAccess = permissionManager.HasEffectiveRightsAsync(userId, entityTypeId, n.Id, RightType.Delete).Result; model.Add(temp); } @@ -76,10 +86,9 @@ public ActionResult CreateNotification() public ActionResult Save(EditNotificationModel model) { using (NotificationManager nManager = new NotificationManager()) - using (EntityPermissionManager pManager = new EntityPermissionManager()) using (EntityManager entityTypeManager = new EntityManager()) - using (UserManager userManager = new UserManager()) { + EntityPermissionManager pManager = new EntityPermissionManager(); Dictionary> dictionary = (Dictionary>)Session["ResourceFilter"]; if (ModelState.IsValid && dictionary != null) { @@ -168,7 +177,8 @@ public ActionResult Save(EditNotificationModel model) //get admin groups: format= "groupname:resource structure attribute value" // give rights to group if fetch to notification - string[] eventAdminGroups = Helper.Settings.get("EventAdminGroups").ToString().Split(','); + var settings = ModuleManager.GetModuleSettings("rbm"); + string[] eventAdminGroups = settings.GetValueByKey("EventAdminGroups").ToString().Split(','); Dictionary adminGroupsDictionary = new Dictionary(); if (eventAdminGroups != null && eventAdminGroups.Length > 0) { @@ -188,34 +198,30 @@ public ActionResult Save(EditNotificationModel model) .Where(pair => values.Contains(pair.Value)) .Select(pair => pair.Key) .ToList(); - using (var groupManager = new GroupManager()) - { + foreach (var g in adminGroups) { - var group = groupManager.FindByNameAsync(g).Result; + var group = _groupManager.FindByNameAsync(g).Result; if (group != null) { - if (pManager.GetRights(group.Id, entityType.Id, notification.Id) == 0) - pManager.Create(group.Id, entityType.Id, notification.Id, fullRights); + if (pManager.GetRightsAsync(group.Id, entityType.Id, notification.Id).Result == 0) + pManager.CreateAsync(group.Id, entityType.Id, notification.Id, fullRights); } } - } } //rights to bexcis admin group - using (var groupManager = new GroupManager()) - { - var adminGroup = groupManager.FindByNameAsync("administrator").Result; - if (pManager.GetRights(adminGroup.Id, entityType.Id, notification.Id) == 0) - pManager.Create(adminGroup.Id, entityType.Id, notification.Id, fullRights); - } + var adminGroup = _groupManager.FindByNameAsync("administrator").Result; + if (pManager.GetRightsAsync(adminGroup.Id, entityType.Id, notification.Id).Result == 0) + pManager.CreateAsync(adminGroup.Id, entityType.Id, notification.Id, fullRights); + //rights to user that has create the notification - var userTask = userManager.FindByNameAsync(HttpContext.User.Identity.Name); + var userTask = _userManager.FindByNameAsync(HttpContext.User.Identity.Name); userTask.Wait(); var user = userTask.Result; - pManager.Create(user, entityType, notification.Id, fullRights); + pManager.CreateAsync(user, entityType, notification.Id, fullRights); //End -> add security ------------------------------------------ @@ -372,9 +378,9 @@ public ActionResult Edit(long id) public ActionResult Delete(long id) { using (var nManager = new NotificationManager()) - using (var permissionManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); Notification notification = nManager.GetNotificationById(id); bool deleted = nManager.DeleteNotification(notification); @@ -383,7 +389,7 @@ public ActionResult Delete(long id) { Type entityType = entityTypeManager.FindByName("Notification").EntityType; //delete security - permissionManager.Delete(entityType, id); + permissionManager.DeleteAsync (entityType, id); } } @@ -426,9 +432,9 @@ private bool IsResult(ResourceAttributeValueModel model, long id, List v public ActionResult Notification_Select() { using (var nManager = new NotificationManager()) - using (var permissionManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); List data = nManager.GetAllNotifications().ToList(); List notifications = new List(); @@ -442,8 +448,8 @@ public ActionResult Notification_Select() NotificationModel temp = new NotificationModel(n); //get permission from logged in user - temp.EditAccess = permissionManager.HasEffectiveRight(userId, new List() { entityTypeId }, n.Id, RightType.Write); - temp.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List() { entityTypeId }, n.Id, RightType.Delete); + temp.EditAccess = permissionManager.HasEffectiveRightsAsync(userId, entityTypeId, n.Id, RightType.Write).Result; + temp.DeleteAccess = permissionManager.HasEffectiveRightsAsync(userId, entityTypeId, n.Id, RightType.Delete).Result; notifications.Add(temp); } diff --git a/Controllers/ResourceController.cs b/Controllers/ResourceController.cs index 1d75a1a..bdf8a86 100644 --- a/Controllers/ResourceController.cs +++ b/Controllers/ResourceController.cs @@ -37,16 +37,22 @@ namespace BExIS.Modules.RBM.UI.Controllers { public class ResourceController : Controller { + private readonly UserManager _userManager; + + public ResourceController(UserManager userManager) + { + _userManager = userManager; + } // GET: /RBM/Resource/ public ActionResult Resource() { ViewBag.Title = PresentationModel.GetViewTitleForTenant("Manage Resources", this.Session.GetTenant()); List model = new List(); using (var rManager = new ResourceManager()) - using (var permissionManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) using (var scheduleManager = new ScheduleManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); IQueryable data = rManager.GetAllResources(); long userId = UserHelper.GetUserId(HttpContext.User.Identity.Name); @@ -63,8 +69,8 @@ public ActionResult Resource() //get permission from logged in user - temp.EditAccess = permissionManager.HasEffectiveRight(userId, new List() { entity.Id }, r.Id, RightType.Write); - temp.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List() { entity.Id }, r.Id, RightType.Delete); + temp.EditAccess = permissionManager.HasEffectiveRightsAsync(userId, entity.Id, r.Id, RightType.Write).Result; + temp.DeleteAccess = permissionManager.HasEffectiveRightsAsync(userId, entity.Id, r.Id, RightType.Delete).Result; model.Add(temp); } @@ -231,11 +237,10 @@ public ActionResult Save() //Start -> add security ---------------------------------------- - using (var pManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) - using (UserManager userManager = new UserManager()) { - var userTask = userManager.FindByNameAsync(HttpContext.User.Identity.Name); + EntityPermissionManager pManager = new EntityPermissionManager(); + var userTask = _userManager.FindByNameAsync(HttpContext.User.Identity.Name); userTask.Wait(); var user = userTask.Result; @@ -244,7 +249,7 @@ public ActionResult Save() //31 is the sum from all rights: Read = 1, Write = 4, Delete = 8, Grant = 16 int rights = (int)RightType.Read + (int)RightType.Write + (int)RightType.Delete + (int)RightType.Grant; - pManager.Create(user, entityType, resource.Id, rights); + pManager.CreateAsync(user, entityType, resource.Id, rights); } //End -> add security ------------------------------------------ @@ -634,9 +639,9 @@ public ActionResult Delete(long id) { using (var rManager = new ResourceManager()) using (var valueManager = new ResourceStructureAttributeManager()) - using (var permissionManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); SingleResource resource = rManager.GetResourceById(id); //Delete values before delete resource @@ -649,7 +654,7 @@ public ActionResult Delete(long id) { Type entityType = entityTypeManager.FindByName("SingleResource").EntityType; //delete security - permissionManager.Delete(entityType, id); + permissionManager.DeleteAsync(entityType, id); } } @@ -1119,7 +1124,6 @@ private Person CreatePerson(List forPersons) private Person UpdatePerson(List forPersons) { - using (UserManager userManager = new UserManager()) using (var pManager = new PersonManager()) { Person newPerson = new Person(); @@ -1136,7 +1140,7 @@ private Person UpdatePerson(List forPersons) List users = new List(); foreach (PersonInConstraint p in forPersons) { - users.Add(userManager.FindByIdAsync(p.UserId).Result); + users.Add(_userManager.FindByIdAsync(p.UserId).Result); } if (person.Self is IndividualPerson) @@ -1167,19 +1171,19 @@ private Person UpdatePerson(List forPersons) { //PersonGroup pG = (PersonGroup)person; //pManager.DeletePersonGroup(pG); - newPerson = pManager.CreateIndividualPerson(userManager.FindByIdAsync(forPersons[0].UserId).Result); + newPerson = pManager.CreateIndividualPerson(_userManager.FindByIdAsync(forPersons[0].UserId).Result); } else if (person.Self is IndividualPerson) { IndividualPerson iPerson = pManager.GetIndividualPersonById(forPersons[0].Id); - iPerson.Person = userManager.FindByIdAsync(forPersons[0].UserId).Result; + iPerson.Person = _userManager.FindByIdAsync(forPersons[0].UserId).Result; newPerson = pManager.UpdateIndividualPerson(iPerson); } } else { - newPerson = pManager.CreateIndividualPerson(userManager.FindByIdAsync(forPersons[0].UserId).Result); + newPerson = pManager.CreateIndividualPerson(_userManager.FindByIdAsync(forPersons[0].UserId).Result); } } @@ -1193,7 +1197,6 @@ public ActionResult LoadUsers(string index) using (var partyManager = new PartyManager()) using (var partyTypeManager = new PartyTypeManager()) - using (UserManager userManager = new UserManager()) { //get party type person @@ -1204,7 +1207,7 @@ public ActionResult LoadUsers(string index) List personListSelected = new List(); List personList = new List(); ResourceConstraintModel tempConstraint = model.ResourceConstraints.Where(a => a.Index == int.Parse(index)).FirstOrDefault(); - var users = userManager.Users; + var users = _userManager.Users; foreach (var user in users) { @@ -1258,10 +1261,9 @@ public ActionResult ChangeSelectedUserConstraint(string userId, string selected, EditResourceModel model = (EditResourceModel)Session["Resource"]; ResourceConstraintModel tempConstraint = model.ResourceConstraints.Where(p=>p.Index == int.Parse(index)).FirstOrDefault(); - using (UserManager userManager = new UserManager()) using (var pManager = new PersonManager()) { - User user = userManager.FindByIdAsync(Convert.ToInt64(userId)).Result; + User user = _userManager.FindByIdAsync(Convert.ToInt64(userId)).Result; if (selected == "true") { diff --git a/Controllers/ResourceStructureController.cs b/Controllers/ResourceStructureController.cs index b3b2a9e..de5a2dd 100644 --- a/Controllers/ResourceStructureController.cs +++ b/Controllers/ResourceStructureController.cs @@ -24,6 +24,12 @@ namespace BExIS.Modules.RBM.UI.Controllers { public class ResourceStructureController : Controller { + private readonly UserManager _userManager; + + public ResourceStructureController(UserManager userManager) + { + _userManager = userManager; + } #region ResourceStructure public ActionResult ResourceStructure() @@ -32,9 +38,9 @@ public ActionResult ResourceStructure() List model = new List(); using (var rsManager = new ResourceStructureManager()) - using (var permissionManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); IQueryable data = rsManager.GetAllResourceStructures(); //get id from loged in user @@ -48,8 +54,8 @@ public ActionResult ResourceStructure() temp.InUse = rsManager.IsResourceStructureInUse(rs.Id); //get permission from logged in user - temp.EditAccess = permissionManager.HasEffectiveRight(userId, new List() { entityTypeId }, rs.Id, RightType.Write); - temp.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List() { entityTypeId }, rs.Id, RightType.Delete); + temp.EditAccess = permissionManager.HasEffectiveRightsAsync(userId, entityTypeId, rs.Id, RightType.Write).Result; + temp.DeleteAccess = permissionManager.HasEffectiveRightsAsync(userId, entityTypeId, rs.Id, RightType.Delete).Result; model.Add(temp); } @@ -68,10 +74,9 @@ public ActionResult Create() public ActionResult Create(CreateResourceStructureModel model) { using (ResourceStructureManager rsManager = new ResourceStructureManager()) - using (var pManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) - using (UserManager userManager = new UserManager()) { + EntityPermissionManager pManager = new EntityPermissionManager(); //check name ResourceStructure temp = rsManager.GetResourceStructureByName(StringHelper.CutSpaces(model.Name)); if (temp != null) @@ -82,7 +87,7 @@ public ActionResult Create(CreateResourceStructureModel model) ResourceStructure rS = rsManager.Create(model.Name, model.Description, null, null); //Start -> add security ---------------------------------------- - var userTask = userManager.FindByNameAsync(HttpContext.User.Identity.Name); + var userTask = _userManager.FindByNameAsync(HttpContext.User.Identity.Name); userTask.Wait(); var user = userTask.Result; @@ -90,7 +95,7 @@ public ActionResult Create(CreateResourceStructureModel model) //31 is the sum from all rights: Read = 1, Write = 4, Delete = 8, Grant = 16 int rights = (int)RightType.Read + (int)RightType.Write + (int)RightType.Delete + (int)RightType.Grant; - pManager.Create(user, entityType, rS.Id, rights); + pManager.CreateAsync(user, entityType, rS.Id, rights); //End -> add security ------------------------------------------ @@ -208,9 +213,9 @@ public ActionResult RemoveParent(long id) public ActionResult Delete(long id) { using (var rsManager = new ResourceStructureManager()) - using (var permissionManager = new EntityPermissionManager()) using(var entityTypeManager = new EntityManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); ResourceStructure resourceStructure = rsManager.GetResourceStructureById(id); bool deleted = rsManager.Delete(resourceStructure); @@ -218,7 +223,7 @@ public ActionResult Delete(long id) { Type entityType = entityTypeManager.FindByName("ResourceStructure").EntityType; //delete security - permissionManager.Delete(entityType, id); + permissionManager.DeleteAsync(entityType, id); } } @@ -282,9 +287,9 @@ public ActionResult ResourceStructureAttribute() using (var rsManager = new ResourceStructureManager()) using (var rsaManager = new ResourceStructureAttributeManager()) - using (var permissionManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); IQueryable rsaList = rsaManager.GetAllResourceStructureAttributes(); foreach (ResourceStructureAttribute a in rsaList) @@ -299,8 +304,8 @@ public ActionResult ResourceStructureAttribute() long entityTypeId = entityTypeManager.FindByName("ResourceStructureAttribute").Id; //get permission from logged in user - rsaModel.EditAccess = permissionManager.HasEffectiveRight(userId, new List() { entityTypeId }, a.Id, RightType.Write); - rsaModel.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List() { entityTypeId }, a.Id, RightType.Delete); + rsaModel.EditAccess = permissionManager.HasEffectiveRightsAsync(userId, entityTypeId, a.Id, RightType.Write).Result; + rsaModel.DeleteAccess = permissionManager.HasEffectiveRightsAsync(userId, entityTypeId, a.Id, RightType.Delete).Result; model.Add(rsaModel); } } @@ -374,17 +379,16 @@ public ActionResult SaveResourceStructureAttribute(EditResourceStructureAttribut { //Start -> add security ---------------------------------------- - using (EntityPermissionManager pManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) - using (UserManager userManager = new UserManager()) { - var userTask = userManager.FindByNameAsync(HttpContext.User.Identity.Name); + EntityPermissionManager pManager = new EntityPermissionManager(); + var userTask = _userManager.FindByNameAsync(HttpContext.User.Identity.Name); userTask.Wait(); var user = userTask.Result; Entity entityType = entityTypeManager.FindByName("ResourceStructureAttribute"); - pManager.Create(user, entityType, rsa.Id, 31); + pManager.CreateAsync(user, entityType, rsa.Id, 31); } //End -> add security ------------------------------------------ @@ -482,9 +486,9 @@ private List CreateDomainItems(string[] keys) public ActionResult DeleteResourceStructureAttribute(long id) { using (var rsaManager = new ResourceStructureAttributeManager()) - using (var permissionManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); ResourceStructureAttribute rsa = rsaManager.GetResourceStructureAttributesById(id); if (rsa != null) { @@ -494,7 +498,7 @@ public ActionResult DeleteResourceStructureAttribute(long id) { Type entityType = entityTypeManager.FindByName("Notification").EntityType; //delete security - permissionManager.Delete(entityType, id); + permissionManager.DeleteAsync (entityType, id); } } else diff --git a/Controllers/ScheduleController.cs b/Controllers/ScheduleController.cs index f45203a..70351f8 100644 --- a/Controllers/ScheduleController.cs +++ b/Controllers/ScheduleController.cs @@ -32,11 +32,20 @@ using BExIS.Modules.RBM.UI.Helper; using BExIS.Security.Services.Objects; using Vaiona.Persistence.Api; +using Vaiona.Web.Mvc.Modularity; namespace BExIS.Modules.RBM.UI.Controllers { public class ScheduleController : Controller { + private readonly UserManager _userManager; + private readonly GroupManager _groupManager; + + public ScheduleController(GroupManager groupManager, UserManager userManager) + { + _groupManager = groupManager; + _userManager = userManager; + } #region Create Event -- Filter Resources //internal usage to store seleced resources schedules in a session @@ -209,7 +218,6 @@ public ActionResult AddResourceToCart(string id) using (var srManager = new ResourceManager()) using (var pManager = new PersonManager()) - using (UserManager userManager = new UserManager()) { int index = 0; if (model.Count() == 0) @@ -380,7 +388,6 @@ public ActionResult CreateEvent() ViewBag.Title = PresentationModel.GetViewTitleForTenant("Book Resources II", this.Session.GetTenant()); using (var partyManager = new PartyManager()) using (var rManager = new ResourceManager()) - using (UserManager userManager = new UserManager()) { List cart = (List)Session["ResourceCart"]; if (cart == null) @@ -425,7 +432,7 @@ public ActionResult CreateEvent() //add as default resvered by user as reserved for user - var userTask = userManager.FindByIdAsync(rc.ByPersonUserId); + var userTask = _userManager.FindByIdAsync(rc.ByPersonUserId); userTask.Wait(); var user = userTask.Result; @@ -748,7 +755,8 @@ public ActionResult SaveEvent() if (ModelState.IsValid) { //get event admin groups: format= "groupname:resource structure attribute value" - string[] eventAdminGroups = Helper.Settings.get("EventAdminGroups").ToString().Split(','); + var settings = ModuleManager.GetModuleSettings("rbm"); + string[] eventAdminGroups = settings.GetValueByKey("EventAdminGroups").ToString().Split(','); Dictionary adminGroupsDictionary = new Dictionary(); if (eventAdminGroups != null && eventAdminGroups.Length > 0) { @@ -759,13 +767,12 @@ public ActionResult SaveEvent() } } - using (UserManager userManager = new UserManager()) using (var scheduleManager = new ScheduleManager()) using (var personManager = new PersonManager()) using (var eventManager = new BookingEventManager()) - using (var permissionManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); try { // get event min und max date from schedules @@ -820,23 +827,20 @@ public ActionResult SaveEvent() foreach (var g in adminGroups) { - using (var groupManager = new GroupManager()) - { - var group = groupManager.FindByNameAsync(g).Result; + var group = _groupManager.FindByNameAsync(g).Result; if (group != null) { - if (permissionManager.GetRights(group.Id, entityTypeEvent.Id, eEvent.Id) == 0) - permissionManager.Create(group.Id, entityTypeEvent.Id, eEvent.Id, fullRights); + if (permissionManager.GetRightsAsync(group.Id, entityTypeEvent.Id, eEvent.Id).Result == 0) + permissionManager.CreateAsync(group.Id, entityTypeEvent.Id, eEvent.Id, fullRights); } - } } } //rights on event for logdedin user var userIdLoggedIn = UserHelper.GetUserId(HttpContext.User.Identity.Name); - if (permissionManager.GetRights(userIdLoggedIn, entityTypeEvent.Id, eEvent.Id) == 0) - permissionManager.Create(userIdLoggedIn, entityTypeEvent.Id, eEvent.Id, fullRights); + if (permissionManager.GetRightsAsync(userIdLoggedIn, entityTypeEvent.Id, eEvent.Id).Result == 0) + permissionManager.CreateAsync(userIdLoggedIn, entityTypeEvent.Id, eEvent.Id, fullRights); List notifications = new List(); @@ -847,7 +851,7 @@ public ActionResult SaveEvent() //get user who has created the event/schedule IndividualPerson createdBy = new IndividualPerson(); - User created = userManager.FindByNameAsync(HttpContext.User.Identity.Name).Result; + User created = _userManager.FindByNameAsync(HttpContext.User.Identity.Name).Result; createdBy = personManager.CreateIndividualPerson(created); Schedule newSchedule = new Schedule(); @@ -870,7 +874,7 @@ public ActionResult SaveEvent() { foreach (PersonInSchedule user in schedule.ForPersons) { - User u = userManager.FindByIdAsync(user.UserId).Result; + User u = _userManager.FindByIdAsync(user.UserId).Result; if (user.IsContactPerson == true) { @@ -885,7 +889,7 @@ public ActionResult SaveEvent() } else { - User u = userManager.FindByIdAsync(schedule.ForPersons[0].UserId).Result; + User u = _userManager.FindByIdAsync(schedule.ForPersons[0].UserId).Result; person = personManager.CreateIndividualPerson(u); } @@ -914,38 +918,35 @@ public ActionResult SaveEvent() //give rights to group if group exsits - using (var groupManager = new GroupManager()) - { - var group = groupManager.FindByNameAsync(adminGroupSchedule).Result; + var group = _groupManager.FindByNameAsync(adminGroupSchedule).Result; if (group != null) { //rights on schedule - if (permissionManager.GetRights(group.Id, entityTypeSchedule.Id, newSchedule.Id) == 0) - permissionManager.Create(group.Id, entityTypeSchedule.Id, newSchedule.Id, fullRights); + if (permissionManager.GetRightsAsync(group.Id, entityTypeSchedule.Id, newSchedule.Id).Result == 0) + permissionManager.CreateAsync(group.Id, entityTypeSchedule.Id, newSchedule.Id, fullRights); } - } } //add rights to logged in user if not exsit //rights on schedule 31 is the sum from all rights: Read = 1, Write = 4, Delete = 8, Grant = 16 - if (permissionManager.GetRights(userIdLoggedIn, entityTypeSchedule.Id, newSchedule.Id) == 0) - permissionManager.Create(userIdLoggedIn, entityTypeSchedule.Id, newSchedule.Id, fullRights); + if (permissionManager.GetRightsAsync(userIdLoggedIn, entityTypeSchedule.Id, newSchedule.Id).Result == 0) + permissionManager.CreateAsync(userIdLoggedIn, entityTypeSchedule.Id, newSchedule.Id, fullRights); //Add rights to the schedule and event for all user reserved for foreach (PersonInSchedule user in schedule.ForPersons) { - User us = userManager.FindByIdAsync(user.UserId).Result; + User us = _userManager.FindByIdAsync(user.UserId).Result; if (us.Id != userIdLoggedIn) { //rights on schedule 15 is the sum from this rights: Read = 1, Download = 2, Write = 4, Delete = 8 int schedulesRights = (int)RightType.Read + (int)RightType.Write + (int)RightType.Delete; - if (permissionManager.GetRights(us.Id, entityTypeSchedule.Id, newSchedule.Id) == 0) - permissionManager.Create(us.Id, entityTypeSchedule.Id, newSchedule.Id, schedulesRights); + if (permissionManager.GetRightsAsync(us.Id, entityTypeSchedule.Id, newSchedule.Id).Result == 0) + permissionManager.CreateAsync(us.Id, entityTypeSchedule.Id, newSchedule.Id, schedulesRights); //rights on event, Read = 1, Write = 4 int eventRights = (int)RightType.Read + (int)RightType.Write; - if (permissionManager.GetRights(us.Id, entityTypeEvent.Id, eEvent.Id) == 0) - permissionManager.Create(us.Id, entityTypeEvent.Id, eEvent.Id, eventRights); + if (permissionManager.GetRightsAsync(us.Id, entityTypeEvent.Id, eEvent.Id).Result == 0) + permissionManager.CreateAsync(us.Id, entityTypeEvent.Id, eEvent.Id, eventRights); } } } @@ -1033,9 +1034,9 @@ private Schedule UpdateSchedule(ScheduleEventModel schedule, IEnumerable a public ActionResult OpenEdit(string id) { - using (var permissionManager = new EntityPermissionManager()) using (var subjectManager = new SubjectManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); BookingEventModel model = (BookingEventModel)Session["Event"]; if (model != null) { @@ -1142,12 +1143,11 @@ public ActionResult ShowUsersInSchedule(string index) }); - using (var userManager = new UserManager()) - { - User user = userManager.FindByNameAsync(HttpContext.User.Identity.Name).Result; + User user = _userManager.FindByNameAsync(HttpContext.User.Identity.Name).Result; //get event admin groups: format= "groupname:resource structure attribute value" - string[] eventAdminGroups = Helper.Settings.get("EventAdminGroups").ToString().Split(','); + var settings = ModuleManager.GetModuleSettings("rbm"); + string[] eventAdminGroups = settings.GetValueByKey("EventAdminGroups").ToString().Split(','); Dictionary adminGroupsDictionary = new Dictionary(); if (eventAdminGroups != null && eventAdminGroups.Length > 0) { @@ -1167,8 +1167,6 @@ public ActionResult ShowUsersInSchedule(string index) { tempSchedule.ForPersons.ToList().ForEach(a => a.ShowMobileNr = true); } - } - return PartialView("_scheduleUsers", tempSchedule.ForPersons); @@ -1182,7 +1180,10 @@ public ActionResult LoadUsers(string index) { // retreive list of all users DataTable result = null; - string groupName = Helper.Settings.get("AlumniGroup").ToString(); + + var settings = ModuleManager.GetModuleSettings("rbm"); + string groupName = settings.GetValueByKey("AlumniGroup").ToString(); + var query = "SELECT partyid, userid FROM public.partyusers Left join users on partyusers.userid = users.id where users.id not in (select userref from users_groups where groupref = (SELECT id FROM groups WHERE name = '"+ groupName +"'))"; result = retrieve(query); @@ -1195,10 +1196,10 @@ public ActionResult LoadUsers(string index) using (var partyManager = new PartyManager()) using (var partyTypeManager = new PartyTypeManager()) - using (UserManager userManager = new UserManager()) { //get party type where you store the first and-lastname of the persons - var accountPartyTypesStr = Helper.Settings.get("AccountPartyTypes"); + + var accountPartyTypesStr = settings.GetValueByKey("AccountPartyTypes"); var partyType = partyTypeManager.PartyTypes.Where(p => p.Title == accountPartyTypesStr.ToString()).FirstOrDefault(); //get all parties with person party type @@ -1265,9 +1266,8 @@ public ActionResult ChangeSelectedUser(string userId, string selected, string in // sEventUser = new List(); using (var partyManager = new PartyManager()) - using (UserManager userManager = new UserManager()) { - var userTask = userManager.FindByIdAsync(Convert.ToInt64(userId)); + var userTask = _userManager.FindByIdAsync(Convert.ToInt64(userId)); userTask.Wait(); var user = userTask.Result; @@ -1367,12 +1367,12 @@ public ActionResult ShowAllUsers(string scheduleIndex) { BookingEventModel sEventM = (BookingEventModel)Session["Event"]; ScheduleEventModel tempSchedule = sEventM.Schedules.Where(a => a.Index == int.Parse(scheduleIndex)).FirstOrDefault(); - using (var userManager = new UserManager()) - { - User user = userManager.FindByNameAsync(HttpContext.User.Identity.Name).Result; + + User user = _userManager.FindByNameAsync(HttpContext.User.Identity.Name).Result; //get event admin groups: format= "groupname:resource structure attribute value" - string[] eventAdminGroups = Helper.Settings.get("EventAdminGroups").ToString().Split(','); + var settings = ModuleManager.GetModuleSettings("rbm"); + string[] eventAdminGroups = settings.GetValueByKey("EventAdminGroups").ToString().Split(','); Dictionary adminGroupsDictionary = new Dictionary(); if (eventAdminGroups != null && eventAdminGroups.Length > 0) { @@ -1392,9 +1392,6 @@ public ActionResult ShowAllUsers(string scheduleIndex) { tempSchedule.ForPersons.ToList().ForEach(a => a.ShowMobileNr = true); } - } - - return PartialView("_showUsers", tempSchedule.ForPersons); } @@ -1604,9 +1601,12 @@ public ActionResult UseValuesForAllSchedules(string index) if(s.ResourceHasFiles) { - if(s.Files.FirstOrDefault().Name == tempSchedule.Files.FirstOrDefault().Name) + if (tempSchedule.Files.Count > 0) { - s.FileConfirmation = true; + if (s.Files.FirstOrDefault().Name == tempSchedule.Files.FirstOrDefault().Name) + { + s.FileConfirmation = true; + } } } @@ -1827,7 +1827,6 @@ public ActionResult UseSimilarResources(List model) { BookingEventModel sEventM = (BookingEventModel)Session["Event"]; using (ResourceManager srManager = new ResourceManager()) - using (UserManager userManager = new UserManager()) { foreach (AlternateEventResource r in model) { @@ -1837,7 +1836,7 @@ public ActionResult UseSimilarResources(List model) ScheduleEventModel tempSchedule = new ScheduleEventModel(sr); tempSchedule.ScheduleDurationModel.StartDate = r.StartDate; tempSchedule.ScheduleDurationModel.EndDate = r.EndDate; - var userTask = userManager.FindByIdAsync(Convert.ToInt64(r.ContactUserId)); + var userTask = _userManager.FindByIdAsync(Convert.ToInt64(r.ContactUserId)); userTask.Wait(); var user = userTask.Result; var person = new PersonInSchedule(0, user, true); @@ -2076,10 +2075,10 @@ public ActionResult Show(long id) //Session["ScheduleActivities"] = null; Session["Event"] = null; - using (var permissionManager = new EntityPermissionManager()) using (var entityTypeManager = new EntityManager()) using (var eManager = new BookingEventManager()) { + EntityPermissionManager permissionManager = new EntityPermissionManager(); BookingEvent e = eManager.GetBookingEventById(id); BookingEventModel model = new BookingEventModel(e); @@ -2090,14 +2089,14 @@ public ActionResult Show(long id) //Check permission for BookingEvent Entity entity = entityTypeManager.FindByName("BookingEvent"); - model.EditAccess = permissionManager.HasEffectiveRight(userId, new List() { entity.Id }, id, RightType.Write); - model.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List() { entity.Id }, id, RightType.Delete); + model.EditAccess = permissionManager.HasEffectiveRightsAsync(userId, entity.Id, id, RightType.Write).Result; + model.DeleteAccess = permissionManager.HasEffectiveRightsAsync(userId, entity.Id , id, RightType.Delete).Result; //Check permission for Schedule Entity entity2 = entityTypeManager.FindByName("Schedule"); - model.Schedules.ForEach(a => a.EditAccess = permissionManager.HasEffectiveRight(userId, new List() { entity2.Id }, a.ScheduleId, RightType.Write)); - model.Schedules.ForEach(a => a.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List() { entity2.Id }, a.ScheduleId, RightType.Delete)); + model.Schedules.ForEach(a => a.EditAccess = permissionManager.HasEffectiveRightsAsync(userId, entity2.Id, a.ScheduleId, RightType.Write).Result); + model.Schedules.ForEach(a => a.DeleteAccess = permissionManager.HasEffectiveRightsAsync(userId, entity2.Id , a.ScheduleId, RightType.Delete).Result); //Set Edit access foreach (var s in model.Schedules) @@ -2267,7 +2266,8 @@ private bool GetAvailableQuantity(string scheduleResourceName, long resourceId, { DateTime endDate = endDateUI; //get resourcename for specific validation - string overNightResourceName = Helper.Settings.get("OverNightResource").ToString(); + var settings = ModuleManager.GetModuleSettings("rbm"); + string overNightResourceName = settings.GetValueByKey("OverNightResource").ToString(); //if there is a resource name in settings compair the settings name with the schedule resource bool daysCase = false; diff --git a/Helper/RbmSeedDataGenerator.cs b/Helper/RbmSeedDataGenerator.cs index c51c118..2aa5781 100644 --- a/Helper/RbmSeedDataGenerator.cs +++ b/Helper/RbmSeedDataGenerator.cs @@ -23,6 +23,17 @@ namespace BExIS.Modules.RBM.UI.Helper { public class RbmSeedDataGenerator : IDisposable { + private readonly GroupManager _groupManager; + + public RbmSeedDataGenerator(GroupManager groupManager) + { + _groupManager = groupManager; + } + + public RbmSeedDataGenerator() + { + + } public void Dispose() { //throw new NotImplementedException(); @@ -292,12 +303,11 @@ public void GenerateSeedData() rs_new.Add(new newResourceStructure() { name = "Metal detector (Magna Trak 100) (ALB)", color = "#7e95bf", description = "Metal detector (Magna Trak 100) in Schwäbische Alb", duration = 1, quantity = 1, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Schwäbische Alb" }); //get/create admin group for entity rights - using (var groupManager = new GroupManager()) - using (var permissionManager = new EntityPermissionManager()) using (var entityManager = new EntityManager()) using (var valueManager = new ResourceStructureAttributeManager()) { - var adminGroup = groupManager.Groups.Where(r => r.Name == "administrator").FirstOrDefault(); + EntityPermissionManager permissionManager = new EntityPermissionManager(); + var adminGroup = _groupManager.FindByNameAsync("administrator").Result; if (adminGroup == null) { // create new group @@ -310,7 +320,7 @@ public void GenerateSeedData() IsValid = true }; - groupManager.CreateAsync(adminGroup).Wait(); + _groupManager.CreateAsync(adminGroup).Wait(); } //create right type @@ -323,7 +333,7 @@ public void GenerateSeedData() var resource = rManager.CreateResource(rs_item.name, rs_item.description, rs_item.quantity, rs_item.color, rs_item.withActivity, rs_item.resourceStructure, duration); //add entity rights - permissionManager.Create(adminGroup, + permissionManager.CreateAsync (adminGroup, entityManager.FindByName("SingleResource"), resource.Id, rights diff --git a/Helper/SendNotificationHelper.cs b/Helper/SendNotificationHelper.cs index ff67d72..03e6145 100644 --- a/Helper/SendNotificationHelper.cs +++ b/Helper/SendNotificationHelper.cs @@ -10,12 +10,20 @@ using System.Net.Mail; using System.Web; using System.Web.Configuration; +using Vaiona.IoC; using Vaiona.Utils.Cfg; +using Vaiona.Web.Mvc.Modularity; namespace BExIS.Web.Shell.Areas.RBM.Helpers { public class SendNotificationHelper { + private readonly UserManager _userManager; + + public SendNotificationHelper(UserManager userManager) + { + _userManager = userManager; + } public enum BookingAction { created, @@ -29,8 +37,10 @@ public static void SendNotification(List receiver, string message, strin List receiverBCC = new List(); receiverBCC.Add(ConfigurationManager.AppSettings["SystemEmail"]); - var emailService = new EmailService(); - emailService.Send(subject, message, receiver, null, receiverBCC, null); + using (var emailService = new EmailService()) + { + emailService.Send(subject, message, receiver, null, receiverBCC, null); + } } /// @@ -42,13 +52,14 @@ public static void SendNotification(List receiver, string message, strin public static void SendBookingNotification(BookingAction bookingAction, BookingEventModel model) { //get receiver and sender from the settings file - var receiver = Modules.RBM.UI.Helper.Settings.get("BookingMailReceiver").ToString().Split(',').ToList(); - var receiverCC = Modules.RBM.UI.Helper.Settings.get("BookingMailReceiverCC").ToString().Split(',').ToList(); - var receiverBCC = Modules.RBM.UI.Helper.Settings.get("BookingMailReceiverBCC").ToString().Split(',').ToList(); + var settings = ModuleManager.GetModuleSettings("rbm"); + var receiver = settings.GetValueByKey("BookingMailReceiver").ToString().Split(',').ToList(); + var receiverCC = settings.GetValueByKey("BookingMailReceiverCC").ToString().Split(',').ToList(); + var receiverBCC = settings.GetValueByKey("BookingMailReceiverBCC").ToString().Split(',').ToList(); - var sender = Modules.RBM.UI.Helper.Settings.get("BookingMailSender").ToString(); + //var sender = Modules.RBM.UI.Helper.Settings.get("BookingMailSender").ToString(); - var subject = Modules.RBM.UI.Helper.Settings.get("BookingMailSubject").ToString() + ": " + bookingAction; + var subject = settings.GetValueByKey("BookingMailSubject").ToString() + ": " + bookingAction; string message = ""; message += "

The following booking has been " + bookingAction + "

"; @@ -56,7 +67,9 @@ public static void SendBookingNotification(BookingAction bookingAction, BookingE if (!String.IsNullOrEmpty(model.Description)) message += "Booking description: " + model.Description + "
"; message += "

Booked Resources:

"; - using (var userManager = new UserManager()) + + var userManager = IoCFactory.Container.Resolve(); + using (var partyManager = new PartyManager()) { foreach (ScheduleEventModel schedule in model.Schedules) @@ -76,7 +89,9 @@ public static void SendBookingNotification(BookingAction bookingAction, BookingE else message += person.UserFullName + ", "; - var user = userManager.FindByIdAsync(person.UserId).Result; + var userTask = userManager.FindByIdAsync(person.UserId); + userTask.Wait(); + var user = userTask.Result; if (user != null) { @@ -92,14 +107,16 @@ public static void SendBookingNotification(BookingAction bookingAction, BookingE receiverBCC.Add(ConfigurationManager.AppSettings["SystemEmail"].ToString()); // Allways send BCC to SystemEmail - var emailService = new EmailService(); - emailService.Send( - subject, - message, - receiver.Distinct().ToList(), - receiverCC, - receiverBCC - ); + using (var emailService = new EmailService()) + { + emailService.Send( + subject, + message, + receiver.Distinct().ToList(), + receiverCC, + receiverBCC + ); + } } } diff --git a/Helper/Settings.cs b/Helper/Settings.cs deleted file mode 100644 index 65b74bd..0000000 --- a/Helper/Settings.cs +++ /dev/null @@ -1,134 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Web; -using System.Xml; -using System.Xml.Linq; -using Vaiona.Utils.Cfg; - -namespace BExIS.Modules.RBM.UI.Helper -{ - static class Settings - { - - private static String filePath = Path.Combine(AppConfiguration.GetModuleWorkspacePath("RBM"), "Rbm.settings.xml"); - private static Dictionary settings = new Dictionary(); - - /// - /// setup settings model - /// * load settings from settings.xml - /// - static Settings() - { - // intial loading of settings - reloadSettings(); - - // set up file watcher to listen for changes - using (FileSystemWatcher fw = new FileSystemWatcher()) - { - fw.Path = Path.GetDirectoryName(filePath); - fw.Filter = Path.GetFileName(filePath); - fw.Changed += new FileSystemEventHandler(fw_Changed); - fw.EnableRaisingEvents = true; - } - - } - - /// - /// retrieve a value from the settings file - /// - /// the key for the parameter - /// the respective value - public static object get(String key) - { - if (settings.ContainsKey(key)) - { - return settings[key]; - } - else - { - return null; - } - } - - /// - /// add or change an entry in the settings - /// TODO persist changes in workflow file - /// - /// - /// - public static void set(String key, object value) - { - if (settings.ContainsKey(key)) - { - settings[key] = value; - } - else - { - settings.Add(key, value); - } - } - - /// - /// Handler to listen for changes in settings file - /// - /// - /// - private static void fw_Changed(object sender, FileSystemEventArgs e) - { - reloadSettings(); - } - - /// - /// load settings anew from settings.xml - /// - private static void reloadSettings() - { - // get XML data - XDocument xDoc = XDocument.Load(filePath); - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.Load(xDoc.CreateReader()); - - // empty old settings list - settings.Clear(); - - // parse values - foreach (XmlNode node in xmlDoc.SelectNodes("//settings/entry")) - { - // shortcuts - var key = node.Attributes["key"] != null ? node.Attributes["key"].Value : null; - var value = node.Attributes["value"] != null ? node.Attributes["value"].Value : null; - var type = node.Attributes["type"] != null ? node.Attributes["type"].Value : null; - - // only parse valid entries - if ((null == key) || (null == value)) - { - continue; - } - - // convert types - switch (type) - { - case "int": - int intVal; - if (Int32.TryParse(value, out intVal)) - { - settings.Add(key, intVal); - } - else - { - settings.Add(key, value); - } - break; - - // default is string - default: - settings.Add(key, value); - break; - } - } - } - - } -} \ No newline at end of file diff --git a/Helper/UserHelper.cs b/Helper/UserHelper.cs index 37322ff..8e52115 100644 --- a/Helper/UserHelper.cs +++ b/Helper/UserHelper.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using System.Web; +using Vaiona.IoC; namespace BExIS.Modules.RBM.UI.Helper { @@ -12,18 +13,14 @@ public static class UserHelper { public static long GetUserId(string userName) { - using (UserManager userManager = new UserManager()) - { - return userManager.FindByNameAsync(userName).Result.Id; - } + var userManager = IoCFactory.Container.Resolve(); + return userManager.FindByNameAsync(userName).Result.Id; } public static Security.Entities.Subjects.User GetUser(string userName) { - using (UserManager userManager = new UserManager()) - { - return userManager.FindByNameAsync(userName).Result; - } + var userManager = IoCFactory.Container.Resolve(); + return userManager.FindByNameAsync(userName).Result; } diff --git a/Models/Booking/BookingEventModel.cs b/Models/Booking/BookingEventModel.cs index 3f734a4..e4a830b 100644 --- a/Models/Booking/BookingEventModel.cs +++ b/Models/Booking/BookingEventModel.cs @@ -1,29 +1,32 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using R = BExIS.Rbm.Entities.Resource; -using E = BExIS.Rbm.Entities.Booking; +using BExIS.Dlm.Entities.DataStructure; +using BExIS.Dlm.Entities.Party; +using BExIS.Dlm.Services.Party; using BExIS.Rbm.Entities.Booking; -using BExIS.Rbm.Services.Booking; -using BExIS.Web.Shell.Areas.RBM.Models.Resource; -using BExIS.Web.Shell.Areas.RBM.Models.ResourceStructure; +using BExIS.Rbm.Entities.BookingManagementTime; +using BExIS.Rbm.Entities.Resource; using BExIS.Rbm.Entities.ResourceStructure; -using BExIS.Dlm.Entities.DataStructure; +using BExIS.Rbm.Services.Booking; using BExIS.Rbm.Services.Resource; -using BExIS.Rbm.Entities.Resource; using BExIS.Security.Entities.Subjects; using BExIS.Security.Services.Subjects; +using BExIS.Web.Shell.Areas.RBM.Models.Resource; +using BExIS.Web.Shell.Areas.RBM.Models.ResourceStructure; +using Microsoft.AspNet.Identity; +using System; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using BExIS.Rbm.Entities.BookingManagementTime; -using BExIS.Dlm.Services.Party; -using BExIS.Dlm.Entities.Party; +using System.Linq; +using System.Web; +using Vaiona.IoC; using Vaiona.Persistence.Api; +using E = BExIS.Rbm.Entities.Booking; +using R = BExIS.Rbm.Entities.Resource; namespace BExIS.Web.Shell.Areas.RBM.Models.Booking { public class BookingEventModel { + public DateTime startDate; public DateTime endDate; @@ -58,7 +61,7 @@ public BookingEventModel() public BookingEventModel(List cart) { - using (var userManager = new UserManager()) + var userManager = IoCFactory.Container.Resolve(); using (var rManager = new ResourceManager()) { Schedules = new List(); @@ -80,9 +83,7 @@ public BookingEventModel(List cart) //add as default resvered by user as reserved for user - var userTask = userManager.FindByIdAsync(rc.ByPersonUserId); - userTask.Wait(); - var user = userTask.Result; + var user = userManager.FindByIdAsync(rc.ByPersonUserId).Result; PersonInSchedule byPerson = new PersonInSchedule(0, user, false); byPerson.IsContactPerson = true; diff --git a/Properties/PublishProfiles/BexisServer_BE_DevSite.pubxml b/Properties/PublishProfiles/BexisServer_BE_DevSite.pubxml new file mode 100644 index 0000000..16989e4 --- /dev/null +++ b/Properties/PublishProfiles/BexisServer_BE_DevSite.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + FileSystem + Release + Any CPU + + True + False + C:\inetpub\wwwroot\BE_DevSite\Site\Areas\RBM + False + + \ No newline at end of file diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs index 15bc822..783c503 100644 --- a/Properties/Settings.Designer.cs +++ b/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace BExIS.Modules.RBM.UI.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.7.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.2.0.0")] public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/Rbm.Settings.json b/Rbm.Settings.json new file mode 100644 index 0000000..1dc3971 --- /dev/null +++ b/Rbm.Settings.json @@ -0,0 +1,78 @@ +{ + "id": "rbm", + "name": "Resource Booking", + "description": "...", + "entries": [ + { + "key": "help", + "title": "Help URL", + "value": "", + "type": "String", + "description": "URL to the manual. If empty, it links to the latest manual from BEXIS2" + }, + { + "key": "BookingMailReceiver", + "title": "Booking Mail Receiver", + "value": "", + "description": "", + "type": "String", + "options": [] + }, + { + "key": "BookingMailReceiverCC", + "title": "Booking Mail Receiver CC", + "value": "", + "description": "", + "type": "String", + "options": [] + }, + { + "key": "BookingMailReceiverBCC", + "title": "Booking Mail Receiver BCC", + "value": "", + "description": "", + "type": "String", + "options": [] + }, + { + "key": "BookingMailSubject", + "title": "Booking Mail Subject", + "value": "Fieldbook reservation", + "description": "", + "type": "String", + "options": [] + }, + { + "key": "AlumniGroup", + "title": "Alumni group", + "value": "alumni", + "description": "", + "type": "String", + "options": [] + }, + { + "key": "AccountPartyTypes", + "title": "Account party type", + "value": "Person", + "description": "Setting to define party type name", + "type": "String", + "options": [] + }, + { + "key": "EventAdminGroups", + "title": "Event admin groups", + "value": "FB_Edit_HAI:Hainich-Dün,FB_Edit_SCH:Schorfheide-Chorin,FB_Edit_ALB:Schwäbische Alb", + "description": "Setting admin group to edit and delete events and schedules, Groupname:resource attribute value so you are able to give different rights to group depending on the classification with resource attribute value", + "type": "String", + "options": [] + }, + { + "key": "OverNightResource", + "title": "Over night resource", + "value": "Sleeping place", + "description": "Setting to specify resource for specific validation.", + "type": "String", + "options": [] + } + ] +} \ No newline at end of file diff --git a/web.config b/web.config index dac6552..e02c24c 100644 --- a/web.config +++ b/web.config @@ -1,130 +1,84 @@ - + - + - - - + + - - + + - - - - - - - - - - - - - - - - - + + - - - - - - + + - - - - - - + + - - - - - - + + - - - - - - + + - - - - - - + + - - - - - - + + - - - - - - + + - - - - - - + + - - + + - - + + - - + + - - - - - - + + - - - + - - - - + + + + - + + \ No newline at end of file