diff --git a/ResoursesManager/ResourcesManagerTests/Controllers/NotificationsControllerTests.cs b/ResoursesManager/ResourcesManagerTests/Controllers/NotificationsControllerTests.cs index 4871bb3..beb6684 100644 --- a/ResoursesManager/ResourcesManagerTests/Controllers/NotificationsControllerTests.cs +++ b/ResoursesManager/ResourcesManagerTests/Controllers/NotificationsControllerTests.cs @@ -15,10 +15,15 @@ namespace ResourcesManager.Controllers.Tests [TestClass()] public class NotificationsControllerTests { - List expectedNotifications; - Mock mockNotifRepo; + public List expectedNotifications; + public Mock mockNotifRepo; NotificationsController notifController; + public NotificationsControllerTests() + { + InitializeTestData(); + } + [TestInitialize] public void InitializeTestData() { @@ -28,6 +33,7 @@ namespace ResourcesManager.Controllers.Tests new Notification() { Id=3, Title = "Cím", Description = "text text" } }; mockNotifRepo = new Mock() { CallBase = true }; + notifController = new NotificationsController(mockNotifRepo.Object); mockNotifRepo.Setup(m => m.GetNotifications()).Returns(expectedNotifications); @@ -75,23 +81,24 @@ namespace ResourcesManager.Controllers.Tests public void Notification_Unread_Test() { var result = notifController.GetUnread(); - Assert.IsNotNull((result as ViewResult).Model); + Assert.IsNotNull((result as JsonResult).Data); } [TestMethod()] public void Notification_Readed_Test() { - var result = notifController.Readed(1); - - Assert.Fail(); + notifController.Readed(1); + var result = expectedNotifications.FirstOrDefault(n => n.Id == 1); + Assert.AreEqual(result.Readed, true); } [TestMethod()] public void Notification_MakeReadAll_Test() { - var result = notifController.MakeReadAll(); + notifController.MakeReadAll(); + var result = expectedNotifications.All(n => n.Readed == true); - Assert.Fail(); + Assert.IsTrue(result); } [TestCleanup] diff --git a/ResoursesManager/ResourcesManagerTests/Controllers/ReservationsControllerTests.cs b/ResoursesManager/ResourcesManagerTests/Controllers/ReservationsControllerTests.cs index b3a4a02..37f05dc 100644 --- a/ResoursesManager/ResourcesManagerTests/Controllers/ReservationsControllerTests.cs +++ b/ResoursesManager/ResourcesManagerTests/Controllers/ReservationsControllerTests.cs @@ -3,6 +3,7 @@ using Moq; using ResourcesManager.Controllers; using ResourcesManager.Interfaces; using ResourcesManager.Models; +using ResourcesManagerTests.RepositoryTests; using System; using System.Collections.Generic; using System.Linq; @@ -16,25 +17,62 @@ namespace ResourcesManager.Controllers.Tests public class ReservationsControllerTests { List expectedReservs; - Mock mockReservRepo; - Mock mockUserRepo; - Mock mockResourceRepo; - Mock mockStatRepo; + public Mock mockReservRepo; ReservationsController reservController; + UserRepositoryTests userRepoTest; + ResourcesControllerTests resourceContTest; + StatisticsControllerTests statContTest; + public ReservationsControllerTests() + { + InitializeTestData(); + } [TestInitialize] public void InitializeTestData() { expectedReservs = new List { - new Reservation() { Id=1, Begining = DateTime.Now, End = DateTime.Now.AddHours(1)}, - new Reservation() { Id=2, Begining = DateTime.Now, End = DateTime.Now.AddHours(1) }, - new Reservation() { Id=3, Begining = DateTime.Now, End = DateTime.Now.AddHours(1) } + new Reservation() { + Id =1, + Begining = DateTime.Now.AddHours(-3), + End = DateTime.Now.AddHours(-2), + Resource = new Resource(){ + Users = new List(){ + new ApplicationUser(), + new ApplicationUser() + } + } + }, + new Reservation() { + Id =2, + Begining = DateTime.Now.AddHours(1), + End = DateTime.Now.AddHours(2), + Resource = new Resource(){ + Users = new List(){ + new ApplicationUser(), + new ApplicationUser() + } + } + }, + new Reservation() { + Id =3, + Begining = DateTime.Now.AddHours(3), + End = DateTime.Now.AddHours(4), + Resource = new Resource(){ + Users = new List(){ + new ApplicationUser(), + new ApplicationUser() + } + } + } }; mockReservRepo = new Mock() { CallBase = true }; - mockUserRepo = new Mock() { CallBase = true }; - mockResourceRepo = new Mock() { CallBase = true }; - mockStatRepo = new Mock() { CallBase = true }; - reservController = new ReservationsController(mockReservRepo.Object, mockUserRepo.Object, mockResourceRepo.Object, mockStatRepo.Object); + resourceContTest = new ResourcesControllerTests(); + userRepoTest = new UserRepositoryTests(); + statContTest = new StatisticsControllerTests(); + reservController = new ReservationsController(mockReservRepo.Object, + userRepoTest.mockUserRepo.Object, + resourceContTest.mockResourceRepo.Object, + statContTest.mockStatRepo.Object); mockReservRepo.Setup(m => m.GetReservations()).Returns(expectedReservs); @@ -107,24 +145,24 @@ namespace ResourcesManager.Controllers.Tests [TestMethod()] public void Reservation_Post_Create_Ok_Test() { - var beforeCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + var beforeCount = ((reservController.Index() as ViewResult).Model as ReservationViewModel).Reservations?.Count(); Assert.AreEqual(3, beforeCount); - reservController.Create(new Reservation() { Id = 4, Begining = DateTime.Now, End = DateTime.Now.AddHours(1) }); + reservController.Create(new Reservation() { Id = 4, Begining = DateTime.Now.AddHours(2), End = DateTime.Now.AddHours(3), ResourceId = 1 }); - var afterCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + var afterCount = ((reservController.Index() as ViewResult).Model as ReservationViewModel).Reservations?.Count(); Assert.AreEqual(4, afterCount); } [TestMethod()] public void Reservation_Post_Create_Fail_Test() { - var beforeCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + var beforeCount = ((reservController.Index() as ViewResult).Model as ReservationViewModel).Reservations?.Count(); Assert.AreEqual(3, beforeCount); reservController.Create(new Reservation() { Id = 4, Begining = DateTime.Now }); - var afterCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + var afterCount = ((reservController.Index() as ViewResult).Model as ReservationViewModel).Reservations?.Count(); Assert.AreEqual(3, afterCount); } @@ -139,8 +177,8 @@ namespace ResourcesManager.Controllers.Tests public void Reservation_Post_Edit_Ok_Test() { var beforeBegin = DateTime.Now.AddDays(2); - reservController.Edit(new Reservation() { Id = 3, Begining = DateTime.Now, End = DateTime.Now.AddHours(1) }); - object afterBegin = ((reservController.Details(3) as ViewResult).Model as Reservation).Begining; + reservController.Edit(new Reservation() { Id = 3, Begining = beforeBegin, End = DateTime.Now.AddDays(2).AddHours(4), ResourceId = 1 }); + var afterBegin = ((reservController.Details(3) as ViewResult).Model as Reservation).Begining; Assert.AreEqual(beforeBegin, afterBegin); } @@ -148,9 +186,9 @@ namespace ResourcesManager.Controllers.Tests public void Reservation_Post_Edit_Fail_Test() { var beforeBegin = DateTime.Now.AddDays(2); - reservController.Edit(new Reservation() { Id = 3, Begining = DateTime.Now }); - object afterBegin = ((reservController.Details(3) as ViewResult).Model as Reservation).Begining; - Assert.AreEqual(beforeBegin, afterBegin); + reservController.Edit(new Reservation() { Id = 3, Begining = beforeBegin, ResourceId = 1 }); + var afterBegin = ((reservController.Details(3) as ViewResult).Model as Reservation).Begining; + Assert.AreNotEqual(beforeBegin, afterBegin); } [TestMethod()] @@ -163,24 +201,24 @@ namespace ResourcesManager.Controllers.Tests [TestMethod()] public void Reservation_Post_Delete_Ok_Test() { - var beforeCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + var beforeCount = ((reservController.Index() as ViewResult).Model as ReservationViewModel).Reservations?.Count(); Assert.AreEqual(3, beforeCount); reservController.DeleteConfirmed(1); - var afterCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + var afterCount = ((reservController.Index() as ViewResult).Model as ReservationViewModel).Reservations?.Count(); Assert.AreEqual(2, afterCount); } [TestMethod()] public void Reservation_Post_Delete_Fail_Test() { - var beforeCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + var beforeCount = ((reservController.Index() as ViewResult).Model as ReservationViewModel).Reservations?.Count(); Assert.AreEqual(3, beforeCount); reservController.DeleteConfirmed(8); - var afterCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + var afterCount = ((reservController.Index() as ViewResult).Model as ReservationViewModel).Reservations?.Count(); Assert.AreEqual(3, afterCount); } @@ -189,7 +227,9 @@ namespace ResourcesManager.Controllers.Tests { expectedReservs = null; mockReservRepo = null; - mockUserRepo = null; + statContTest.Statistic_CleanUpTestData(); + resourceContTest.Resources_CleanUpTestData(); + userRepoTest.User_CleanUpTestData(); } } } \ No newline at end of file diff --git a/ResoursesManager/ResourcesManagerTests/Controllers/ResourcesControllerTests.cs b/ResoursesManager/ResourcesManagerTests/Controllers/ResourcesControllerTests.cs index bafd0d4..467d8ce 100644 --- a/ResoursesManager/ResourcesManagerTests/Controllers/ResourcesControllerTests.cs +++ b/ResoursesManager/ResourcesManagerTests/Controllers/ResourcesControllerTests.cs @@ -3,6 +3,7 @@ using Moq; using ResourcesManager.Controllers; using ResourcesManager.Interfaces; using ResourcesManager.Models; +using ResourcesManagerTests.RepositoryTests; using System; using System.Collections.Generic; using System.Data.Entity; @@ -17,10 +18,15 @@ namespace ResourcesManager.Controllers.Tests [TestClass()] public class ResourcesControllerTests { - List expectedResources; - Mock mockResourceRepo; - Mock mockUserRepo; + public List expectedResources; + public Mock mockResourceRepo; ResourcesController resourcesController; + UserRepositoryTests userRepoTest; + + public ResourcesControllerTests() + { + InitializeTestData(); + } [TestInitialize] public void InitializeTestData() @@ -31,8 +37,9 @@ namespace ResourcesManager.Controllers.Tests new Resource() { Id=3, Name = "Kati", AssetTag = "u547547", IsShared = false } }; mockResourceRepo = new Mock() { CallBase = true }; - mockUserRepo = new Mock() { CallBase = true }; - resourcesController = new ResourcesController(mockResourceRepo.Object, mockUserRepo.Object); + userRepoTest = new UserRepositoryTests(); + + resourcesController = new ResourcesController(mockResourceRepo.Object, userRepoTest.mockUserRepo.Object); mockResourceRepo.Setup(m => m.GetResouces()).Returns(expectedResources); @@ -192,7 +199,7 @@ namespace ResourcesManager.Controllers.Tests { expectedResources = null; mockResourceRepo = null; - mockUserRepo = null; + userRepoTest.User_CleanUpTestData(); } } } \ No newline at end of file diff --git a/ResoursesManager/ResourcesManagerTests/Controllers/StatisticsControllerTests.cs b/ResoursesManager/ResourcesManagerTests/Controllers/StatisticsControllerTests.cs index 6f31437..5861679 100644 --- a/ResoursesManager/ResourcesManagerTests/Controllers/StatisticsControllerTests.cs +++ b/ResoursesManager/ResourcesManagerTests/Controllers/StatisticsControllerTests.cs @@ -3,6 +3,7 @@ using Moq; using ResourcesManager.Controllers; using ResourcesManager.Interfaces; using ResourcesManager.Models; +using ResourcesManagerTests.RepositoryTests; using System; using System.Collections.Generic; using System.Linq; @@ -16,8 +17,15 @@ namespace ResourcesManager.Controllers.Tests public class StatisticsControllerTests { List expectedStat; - Mock mockStatRepo; + public Mock mockStatRepo; StatisticsController statController; + ResourcesControllerTests resourcesContTest; + UserRepositoryTests userRepoTest; + + public StatisticsControllerTests() + { + InitializeStatisticTestData(); + } [TestInitialize] public void InitializeStatisticTestData() @@ -28,7 +36,9 @@ namespace ResourcesManager.Controllers.Tests new StatisticModel(){ Id= 3, ResourceId = 3, ReservationId = 3, StatisticType = StatisticType.ResourceCreate, DateTime = DateTime.Now, UserId = Guid.NewGuid().ToString()}, }; mockStatRepo = new Mock() { CallBase = true }; - statController = new StatisticsController(mockStatRepo.Object); + resourcesContTest = new ResourcesControllerTests(); + userRepoTest = new UserRepositoryTests(); + statController = new StatisticsController(mockStatRepo.Object, resourcesContTest.mockResourceRepo.Object, userRepoTest.mockUserRepo.Object); mockStatRepo.Setup(m => m.GetStatistics()).Returns(expectedStat); @@ -50,12 +60,14 @@ namespace ResourcesManager.Controllers.Tests var result = statController.Index(StatisticType.Login, 1); Assert.IsNotNull((result as ViewResult).Model); } + //todo: még [TestCleanup] - public void CleanUpTestData() + public void Statistic_CleanUpTestData() { expectedStat = null; - mockStatRepo = null; + resourcesContTest.Resources_CleanUpTestData(); + userRepoTest.User_CleanUpTestData(); } } } \ No newline at end of file diff --git a/ResoursesManager/ResourcesManagerTests/Controllers/SubscribeControllerTests.cs b/ResoursesManager/ResourcesManagerTests/Controllers/SubscribeControllerTests.cs index 57579bf..5ac3063 100644 --- a/ResoursesManager/ResourcesManagerTests/Controllers/SubscribeControllerTests.cs +++ b/ResoursesManager/ResourcesManagerTests/Controllers/SubscribeControllerTests.cs @@ -3,6 +3,7 @@ using Moq; using ResourcesManager.Controllers; using ResourcesManager.Interfaces; using ResourcesManager.Models; +using ResourcesManagerTests.RepositoryTests; using System; using System.Collections.Generic; using System.Linq; @@ -15,18 +16,22 @@ namespace ResourcesManager.Controllers.Tests [TestClass()] public class SubscribeControllerTests { - Mock mockResourceRepo; - Mock mockUserRepo; - Mock mockStatRepo; SubscribeController subController; + ResourcesControllerTests resoucesContTest; + UserRepositoryTests userRepoTest; + StatisticsControllerTests statContTest; + public SubscribeControllerTests() + { + InitializeTestData(); + } [TestInitialize] public void InitializeTestData() { - mockResourceRepo = new Mock() { CallBase = true }; - mockUserRepo = new Mock() { CallBase = true }; - mockStatRepo = new Mock { CallBase = true }; - subController = new SubscribeController(mockResourceRepo.Object, mockUserRepo.Object, mockStatRepo.Object); + resoucesContTest = new ResourcesControllerTests(); + userRepoTest = new UserRepositoryTests(); + statContTest = new StatisticsControllerTests(); + subController = new SubscribeController(resoucesContTest.mockResourceRepo.Object, userRepoTest.mockUserRepo.Object, statContTest.mockStatRepo.Object); } [TestMethod()] @@ -39,38 +44,34 @@ namespace ResourcesManager.Controllers.Tests [TestMethod()] public void Subscribe_Follow_Test() { - var result = subController.Follow(1); - var list = ((subController.Index() as ViewResult).Model as List); - Assert.Fail(); + subController.Follow(1); + var result = resoucesContTest.expectedResources.FirstOrDefault(r => r.Id == 1); + Assert.IsNotNull(result.Users); } [TestMethod()] public void Subscribe_UnFollowAll_Test() { - var result = subController.UnFollowAll(); - Assert.Fail(); - } - - [TestMethod()] - public void Subscribe_FollowAllSubscribeTest() - { - var result = subController.UnFollowAll(); - Assert.Fail(); + subController.UnFollowAll(); + var result = resoucesContTest.expectedResources.All(x => x.Users == null || x.Users.Count == 0); + Assert.IsTrue(result); } [TestMethod()] public void Subscribe_Unfollow_Test() { - var result = subController.Unfollow(1); - Assert.Fail(); + subController.Unfollow(1); + var result = resoucesContTest.expectedResources.FirstOrDefault(r => r.Id == 1); + var count = result.Users.Count; + Assert.AreEqual(count, 0); } [TestCleanup] public void Resources_CleanUpTestData() { - mockResourceRepo = null; - mockUserRepo = null; - mockStatRepo = null; + resoucesContTest.Resources_CleanUpTestData(); + userRepoTest.User_CleanUpTestData(); + statContTest = null; } } } \ No newline at end of file diff --git a/ResoursesManager/ResourcesManagerTests/RepositoryTests/UserRepositoryTests.cs b/ResoursesManager/ResourcesManagerTests/RepositoryTests/UserRepositoryTests.cs index d8d608b..2c79820 100644 --- a/ResoursesManager/ResourcesManagerTests/RepositoryTests/UserRepositoryTests.cs +++ b/ResoursesManager/ResourcesManagerTests/RepositoryTests/UserRepositoryTests.cs @@ -14,7 +14,12 @@ namespace ResourcesManagerTests.RepositoryTests class UserRepositoryTests { List expectedUsers; - Mock mockUserRepo; + public Mock mockUserRepo; + + public UserRepositoryTests() + { + InitializeTestData(); + } [TestInitialize] public void InitializeTestData() @@ -27,50 +32,10 @@ namespace ResourcesManagerTests.RepositoryTests mockUserRepo = new Mock() { CallBase = true }; mockUserRepo.Setup(m => m.GetUsers()).Returns(expectedUsers); - - //mockUserRepo.Setup(m => m.GetUserByID(It.IsAny())).Returns((string id) => - //{ - // return expectedUsers.FirstOrDefault(x => x.Id == id); - //}); - - //mockUserRepo.Setup(m => m.(It.IsAny())).Returns((Resource resource) => - //{ - // expectedUsers.Add(resource); - // return true; - //}); - - //mockUserRepo.Setup(m => m.UpdateResouce(It.IsAny())).Returns((Resource target) => - //{ - // var resource = expectedUsers.FirstOrDefault(x => x.Id == target.Id); - // if (resource == null) - // { - // return false; - // } - // resource.Name = target.Name; - // resource.Description = target.Description; - // resource.AssetTag = target.AssetTag; - // resource.ImagePath = target.ImagePath; - // resource.IsShared = target.IsShared; - // resource.TimeLimit = target.TimeLimit; - // resource.Reservation = target.Reservation; - // resource.Users = target.Users; - // return true; - //}); - - //mockUserRepo.Setup(m => m.DeleteResouce(It.IsAny())).Returns((int id) => - //{ - // var resource = expectedUsers.FirstOrDefault(x => x.Id == id); - // if (resource == null) - // { - // return false; - // } - // expectedUsers.Remove(resource); - // return true; - //}); } [TestCleanup] - public void Resources_CleanUpTestData() + public void User_CleanUpTestData() { expectedUsers = null; mockUserRepo = null; diff --git a/ResoursesManager/ResoursesManager/Controllers/NotificationsController.cs b/ResoursesManager/ResoursesManager/Controllers/NotificationsController.cs index 2e4f63a..3eb78ac 100644 --- a/ResoursesManager/ResoursesManager/Controllers/NotificationsController.cs +++ b/ResoursesManager/ResoursesManager/Controllers/NotificationsController.cs @@ -45,37 +45,35 @@ namespace ResourcesManager.Controllers notifRepo.UpdateNotification(notif); if (string.IsNullOrEmpty(link) || link == "null") { - return Redirect(Request.UrlReferrer.ToString()); + return Redirect(Request?.UrlReferrer?.ToString() ?? "/"); } } catch (Exception ex) { logger.Error("", ex); } - return Redirect(link); + return Redirect(link ?? "/"); } public ActionResult GetUnread() { - using (ApplicationDbContext db = new ApplicationDbContext()) + try { - try - { - return Json(notifRepo.GetNotifications().ToList().OrderByDescending(k => k.CreateDate).Where(m => m.Readed == false && (m.User == User.Identity.Name || m.User == null)).ToList(), JsonRequestBehavior.AllowGet); - } - catch (Exception e) - { - logger.Warn("hiba", e); - return null; - } + return Json(notifRepo.GetNotifications().ToList().OrderByDescending(k => k.CreateDate).Where(m => m.Readed == false && (m.User == User?.Identity?.Name || m.User == null)).ToList(), JsonRequestBehavior.AllowGet); + } + catch (Exception e) + { + logger.Warn("hiba", e); + return null; } } + public ActionResult MakeReadAll() { try { - var list = notifRepo.GetNotifications().Where(k => k.Readed == false && (k.User == User.Identity.Name || k.User == null)).ToList(); + var list = notifRepo.GetNotifications().Where(k => k.Readed == false && (k.User == User?.Identity?.Name || k.User == null)).ToList(); foreach (var item in list) { item.Readed = true; @@ -86,7 +84,7 @@ namespace ResourcesManager.Controllers { logger.Error("", ex); } - return Redirect(HttpContext.Request.UrlReferrer.ToString()); + return Redirect(HttpContext?.Request?.UrlReferrer?.ToString() ?? "/"); } protected override void Dispose(bool disposing) diff --git a/ResoursesManager/ResoursesManager/Controllers/ReservationsController.cs b/ResoursesManager/ResoursesManager/Controllers/ReservationsController.cs index 18a883e..937f30a 100644 --- a/ResoursesManager/ResoursesManager/Controllers/ReservationsController.cs +++ b/ResoursesManager/ResoursesManager/Controllers/ReservationsController.cs @@ -193,7 +193,7 @@ namespace ResourcesManager.Controllers try { model.Resource = resourceRepo.GetResourceByID(model.ResourceId); - model.User = User.Identity.Name; + model.User = User?.Identity?.Name; if (model.Resource.TimeLimit != null) { TimeSpan difference = model.End.Subtract(model.Begining); @@ -245,7 +245,7 @@ namespace ResourcesManager.Controllers //Értesítés küldés var users = model.Resource.Users.Select(k => k.UserName).ToList(); - string message = string.Format("{0} lefoglalta {1} erőforrást {2} tól {3}-ig.", User.Identity.Name, model.Resource.Name, model.Begining, model.End); + string message = string.Format("{0} lefoglalta {1} erőforrást {2} tól {3}-ig.", User?.Identity?.Name, model.Resource.Name, model.Begining, model.End); string url = "/Reservations/Details/" + model.Id; NotificationHelper.Send(users, "Foglalás", message, model.Resource.ImagePath, url); return RedirectToAction("Details", "Reservations", new { Id = model.Id }); @@ -272,9 +272,9 @@ namespace ResourcesManager.Controllers log.Warn("HttpNotFound"); return HttpNotFound(); } - if (!((reservation.User == User.Identity.Name) || User.IsInRole("Admin"))) + if (!((reservation.User == User?.Identity?.Name) || User.IsInRole("Admin"))) { - log.Warn("Jogosultság hiba: " + User.Identity.Name); + log.Warn("Jogosultság hiba: " + User?.Identity?.Name); return View("PermissionError"); } return View(reservation); @@ -294,9 +294,9 @@ namespace ResourcesManager.Controllers { try { - if (!((reservation.User == User.Identity.Name) || User.IsInRole("Admin"))) + if (!((reservation.User == User?.Identity?.Name) || User.IsInRole("Admin"))) { - log.Warn("Jogosultsági hiba: " + User.Identity.Name); + log.Warn("Jogosultsági hiba: " + User?.Identity?.Name); return View("PermissionError"); } var resource = resourceRepo.GetResourceByID(reservation.ResourceId); @@ -352,7 +352,7 @@ namespace ResourcesManager.Controllers //Értesítés küldés var users = resource.Users.Select(k => k.UserName).ToList(); - string message = string.Format("{0} módosította {1} erőforrás foglalását {2} tól {3}-ig.", User.Identity.Name, resource.Name, reservation.Begining, reservation.End); + string message = string.Format("{0} módosította {1} erőforrás foglalását {2} tól {3}-ig.", User?.Identity?.Name, resource.Name, reservation.Begining, reservation.End); string url = "/Reservations/Details/" + reservation.Id; NotificationHelper.Send(users, "Foglalás módosítás", message, resource.ImagePath, url); return RedirectToAction("Details", "Reservations", new { Id = reservation.Id }); @@ -376,9 +376,9 @@ namespace ResourcesManager.Controllers return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Reservation reservation = reservRepo.GetReservationByID((int)id); - if (!((reservation.User == User.Identity.Name) || User.IsInRole("Admin"))) + if (!((reservation.User == User?.Identity?.Name) || User.IsInRole("Admin"))) { - log.Warn("Jogosultsági hiba: " + User.Identity.Name); + log.Warn("Jogosultsági hiba: " + User?.Identity?.Name); return View("PermissionError"); } if (reservation == null) @@ -402,14 +402,14 @@ namespace ResourcesManager.Controllers try { var reservation = reservRepo.GetReservationByID(id); - if (!((reservation.User == User.Identity.Name) || User.IsInRole("Admin"))) + if (!((reservation.User == User?.Identity?.Name) || User.IsInRole("Admin"))) { - log.Warn("Jogosultsági hiba: " + User.Identity.Name); + log.Warn("Jogosultsági hiba: " + User?.Identity?.Name); return View("PermissionError"); } //Értesítés küldés var users = reservation.Resource.Users.Select(k => k.UserName).ToList(); - string message = string.Format("{0} törölte {1} foglalását {2} tól {3}-ig.", User.Identity.Name, reservation.Resource.Name, reservation.Begining, reservation.End); + string message = string.Format("{0} törölte {1} foglalását {2} tól {3}-ig.", User?.Identity?.Name, reservation.Resource.Name, reservation.Begining, reservation.End); NotificationHelper.Send(users, "Foglalás törlés", message, reservation.Resource.ImagePath, null); reservRepo.DeleteReservation(reservation.Id); diff --git a/ResoursesManager/ResoursesManager/Controllers/ResourcesController.cs b/ResoursesManager/ResoursesManager/Controllers/ResourcesController.cs index 4171847..8590632 100644 --- a/ResoursesManager/ResoursesManager/Controllers/ResourcesController.cs +++ b/ResoursesManager/ResoursesManager/Controllers/ResourcesController.cs @@ -90,10 +90,10 @@ namespace ResourcesManager.Controllers { try { - var stream = Request.Files[0].InputStream; + var stream = Request?.Files[0]?.InputStream; string path; - if (stream.Length != 0) + if (stream != null && stream.Length != 0) { var img = new WebImage(stream); string fileName = Path.GetRandomFileName(); @@ -116,13 +116,13 @@ namespace ResourcesManager.Controllers resource.ImagePath = "~/App_Data/ResourceImages/" + fileName; + stream.Flush(); + stream.Close(); } else { resource.ImagePath = "~/App_Data/ResourceImages/DefaultResource.png"; } - stream.Flush(); - stream.Close(); return resource; } @@ -174,6 +174,11 @@ namespace ResourcesManager.Controllers ModelState.AddModelError("AssetTag", "Ilyen már létezik"); return View(resource); } + if (string.IsNullOrEmpty(resource.AssetTag)) + { + ModelState.AddModelError("AssetTag", "Kötelező mező"); + return View(resource); + } if (resource.TimeLimit < 1) { ModelState.AddModelError("TimeLimit", "Nem lehet negatív"); @@ -251,6 +256,11 @@ namespace ResourcesManager.Controllers ModelState.AddModelError("AssetTag", "Ilyen már létezik"); return View(model); } + if (string.IsNullOrEmpty(resource.AssetTag)) + { + ModelState.AddModelError("AssetTag", "Kötelező mező"); + return View(resource); + } } //Kép feltöltés ellenörzése var stream = Request?.Files[0]?.InputStream; @@ -296,7 +306,7 @@ namespace ResourcesManager.Controllers //Értesítés küldés var users = model.Users.Select(k => k.UserName).ToList(); - string message = string.Format("{0} módosította {1} erőforrást.", User.Identity.Name, resource.Name); + string message = string.Format("{0} módosította {1} erőforrást.", User?.Identity?.Name, resource.Name); string url = "/Resources/Details/" + resource.Id; NotificationHelper.Send(users, "Erőforrás módosítás", message, resource.ImagePath, url); diff --git a/ResoursesManager/ResoursesManager/Controllers/StatisticsController.cs b/ResoursesManager/ResoursesManager/Controllers/StatisticsController.cs index 8536d39..1288e31 100644 --- a/ResoursesManager/ResoursesManager/Controllers/StatisticsController.cs +++ b/ResoursesManager/ResoursesManager/Controllers/StatisticsController.cs @@ -11,6 +11,7 @@ using ResourcesManager.ViewModels; using System.Data.Entity.Core.Objects; using ResourcesManager.Interfaces; using ResourcesManager.Repositories; +using ResourcesManager.Handlers; namespace ResourcesManager.Controllers { @@ -18,42 +19,57 @@ namespace ResourcesManager.Controllers { private ApplicationDbContext context; private IStatisticRepository statisticRepository; + private IResourceRepository resourceRepo; + private IUserRepository userRepo; + readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public StatisticsController() { context = new ApplicationDbContext(); - this.statisticRepository = new StatisticRepository(context); + statisticRepository = new StatisticRepository(context); + resourceRepo = new ResourceRepository(context); + userRepo = new UserRepository(context); } - public StatisticsController(IStatisticRepository statisticRepository) + public StatisticsController(IStatisticRepository statisticRepository, IResourceRepository resourceRepo, IUserRepository userRepo) { this.statisticRepository = statisticRepository; + this.resourceRepo = resourceRepo; + this.userRepo = userRepo; } public ActionResult Index(StatisticType? statTypeId, int? resId) { - if (statTypeId == null) + try { - statTypeId = Models.StatisticType.Reserv; + if (statTypeId == null) + { + statTypeId = Models.StatisticType.Reserv; + } + if (resId == null) + { + resId = resourceRepo.GetResouces().FirstOrDefault().Id; + } + var statistics = statisticRepository.GetStatistics(); + var model = new StatisticViewModel(); + var today = DateTime.Today.AddDays(-30.0); + model.ByType = statistics.Where(k => k.StatisticType == statTypeId && k.DateTime > today)?.GroupBy(l => l.DateTime.Date)?.Select(j => new ByType() { Name = (DateTime)j.Key, Value = j.Count() })?.ToList(); + model.ByResource = statistics.Where(k => k.ResourceId == resId & k.DateTime > today)?.GroupBy(l => l.DateTime.Date)?.Select(j => new ByResource() { Name = (DateTime)j.Key, Value = j.Count() })?.ToList(); + model.ByTypeCircle = statistics.GroupBy(l => l.StatisticType).Select(j => new ByTypeCircle() { Name = ((StatisticType)j.Key).ToString(), Value = j.Count() }).ToList(); + var subscibedUser = resourceRepo.GetResouces().Select(k => k.Users.Count()).Sum(); + var allUsers = userRepo.GetUsers().Count() * resourceRepo.GetResouces().Count(); + model.Subscribe = new List(); + model.Subscribe.Add(new Subscribe() { Name = "Subscribed user", Value = subscibedUser }); + model.Subscribe.Add(new Subscribe() { Name = "Unsubscibed user", Value = allUsers - subscibedUser }); + model.Resources = new SelectList(resourceRepo.GetResouces(), "Id", "Name", resId); + model.StatisticType = new SelectList(Enum.GetValues(typeof(StatisticType)).Cast(), (int)statTypeId); + return View(model); } - if (resId == null) + catch (Exception ex) { - resId = context.Resources.FirstOrDefault().Id; + log.Error(ex); + return new HttpStatusCodeResult(HttpStatusCode.InternalServerError); } - var statistics = statisticRepository.GetStatistics(); - var model = new StatisticViewModel(); - var today = DateTime.Today.AddDays(-30.0); - model.ByType = statistics.Where(k => k.StatisticType == statTypeId && k.DateTime > today).GroupBy(l => DbFunctions.TruncateTime(l.DateTime)).Select(j => new ByType() { Name = (DateTime)j.Key, Value = j.Count() }).ToList(); - model.ByResource = statistics.Where(k => k.ResourceId == resId & k.DateTime > today).GroupBy(l => DbFunctions.TruncateTime(l.DateTime)).Select(j => new ByResource() { Name = (DateTime)j.Key, Value = j.Count() }).ToList(); - model.ByTypeCircle = statistics.GroupBy(l => l.StatisticType).Select(j => new ByTypeCircle() { Name = ((StatisticType)j.Key).ToString(), Value = j.Count() }).ToList(); - var subscibedUser = context.Resources.Select(k => k.Users.Count()).Sum(); - var allUsers = context.Users.Count() * context.Resources.Count(); - model.Subscribe = new List(); - model.Subscribe.Add(new Subscribe() { Name = "Subscribed user", Value = subscibedUser }); - model.Subscribe.Add(new Subscribe() { Name = "Unsubscibed user", Value = allUsers - subscibedUser }); - model.Resources = new SelectList(context.Resources, "Id", "Name", resId); - model.StatisticType = new SelectList(Enum.GetValues(typeof(StatisticType)).Cast(), (int)statTypeId); - return View(model); } protected override void Dispose(bool disposing) @@ -61,6 +77,9 @@ namespace ResourcesManager.Controllers if (disposing) { context.Dispose(); + statisticRepository.Dispose(); + resourceRepo.Dispose(); + userRepo.Dispose(); } base.Dispose(disposing); } diff --git a/ResoursesManager/ResoursesManager/Repositories/UserRepository.cs b/ResoursesManager/ResoursesManager/Repositories/UserRepository.cs index 84dbdb5..47487fc 100644 --- a/ResoursesManager/ResoursesManager/Repositories/UserRepository.cs +++ b/ResoursesManager/ResoursesManager/Repositories/UserRepository.cs @@ -1,4 +1,5 @@ -using ResourcesManager.Interfaces; +using Microsoft.AspNet.Identity; +using ResourcesManager.Interfaces; using ResourcesManager.Models; using System; using System.Collections.Generic; diff --git a/ResoursesManager/ResoursesManager/Views/Reservations/Details.cshtml b/ResoursesManager/ResoursesManager/Views/Reservations/Details.cshtml index 483df74..f1de460 100644 --- a/ResoursesManager/ResoursesManager/Views/Reservations/Details.cshtml +++ b/ResoursesManager/ResoursesManager/Views/Reservations/Details.cshtml @@ -62,7 +62,7 @@

Vissza - @if ((Model.User == User.Identity.Name) || User.IsInRole("Admin")) + @if ((Model.User == User?.Identity?.Name) || User.IsInRole("Admin")) { @Html.ActionLink("Módosítás", "Edit", new { id = Model.Id }, new { @class = "btn btn-warning" }) diff --git a/ResoursesManager/ResoursesManager/Views/Shared/ReservationsPartial.cshtml b/ResoursesManager/ResoursesManager/Views/Shared/ReservationsPartial.cshtml index 095d5cb..9c163ea 100644 --- a/ResoursesManager/ResoursesManager/Views/Shared/ReservationsPartial.cshtml +++ b/ResoursesManager/ResoursesManager/Views/Shared/ReservationsPartial.cshtml @@ -37,7 +37,7 @@

@Html.ActionLink("Részletek", "Details", "Reservations", new { id = item.Id }, new { @class = "btn btn-info" }) - @if ((item.User == User.Identity.Name) || User.IsInRole("Admin")) + @if ((item.User == User?.Identity?.Name) || User.IsInRole("Admin")) { @Html.ActionLink("Módosítás", "Edit", "Reservations", new { id = item.Id }, new { @class = "btn btn-warning" }) @Html.ActionLink("Törlés", "Delete", "Reservations", new { id = item.Id }, new { @class = "btn btn-danger" }) diff --git a/ResoursesManager/ResoursesManager/Views/Subscribe/Index.cshtml b/ResoursesManager/ResoursesManager/Views/Subscribe/Index.cshtml index 533f446..20950de 100644 --- a/ResoursesManager/ResoursesManager/Views/Subscribe/Index.cshtml +++ b/ResoursesManager/ResoursesManager/Views/Subscribe/Index.cshtml @@ -43,7 +43,7 @@ {
@{ - var user = User.Identity.Name; + var user = User?.Identity?.Name; if (item.Users.Any(e => e.UserName == user)) { @Html.ActionLink("Leíratkozás", "Unfollow", new { ResourceId = item.Id }, new { @class = "btn btn-default" })