From 7910e3687ca40f975a144ab14031dc510a66b374 Mon Sep 17 00:00:00 2001 From: "bukovenszki.tamas" Date: Sun, 28 Apr 2019 09:55:22 +0200 Subject: [PATCH] Init --- .gitignore | 4 +- ResoursesManager/ResourcesManager.sln | 31 +++ .../NotificationsControllerTests.cs | 104 +++++++++ .../ReservationsControllerTests.cs | 195 +++++++++++++++++ .../Controllers/ResourcesControllerTests.cs | 198 ++++++++++++++++++ .../Controllers/StatisticsControllerTests.cs | 61 ++++++ .../Controllers/SubscribeControllerTests.cs | 76 +++++++ .../Properties/AssemblyInfo.cs | 36 ++++ .../RepositoryTests/UserRepositoryTests.cs | 79 +++++++ .../ResourcesManagerTests.csproj | 129 ++++++++++++ .../ResourcesManagerTests/app.config | 35 ++++ .../ResourcesManagerTests/packages.config | 9 + ResoursesManager/ResoursesManager.sln | 22 -- .../Controllers/NotificationsController.cs | 33 ++- .../Controllers/ReservationsController.cs | 85 +++++--- .../Controllers/ResourcesController.cs | 89 +++++--- .../Controllers/StatisticsController.cs | 33 ++- .../Controllers/SubscribeController.cs | 62 ++++-- .../Interfaces/INotificationRepository.cs | 18 ++ .../Interfaces/IReservationRepository.cs | 18 ++ .../Interfaces/IResourceRepository.cs | 18 ++ .../Interfaces/IStatisticRepository.cs | 16 ++ .../Interfaces/IUserRepository.cs | 19 ++ .../ResoursesManager/Models/IdentityModels.cs | 12 +- .../Repositories/BaseRepository.cs | 46 ++++ .../Repositories/NotificationRepository.cs | 47 +++++ .../Repositories/RescourceRepository.cs | 48 +++++ .../Repositories/ReservationRepository.cs | 48 +++++ .../Repositories/StatisticRepository.cs | 31 +++ .../Repositories/UserRepository.cs | 44 ++++ .../ResoursesManager/ResourcesManager.csproj | 15 +- 31 files changed, 1540 insertions(+), 121 deletions(-) create mode 100644 ResoursesManager/ResourcesManager.sln create mode 100644 ResoursesManager/ResourcesManagerTests/Controllers/NotificationsControllerTests.cs create mode 100644 ResoursesManager/ResourcesManagerTests/Controllers/ReservationsControllerTests.cs create mode 100644 ResoursesManager/ResourcesManagerTests/Controllers/ResourcesControllerTests.cs create mode 100644 ResoursesManager/ResourcesManagerTests/Controllers/StatisticsControllerTests.cs create mode 100644 ResoursesManager/ResourcesManagerTests/Controllers/SubscribeControllerTests.cs create mode 100644 ResoursesManager/ResourcesManagerTests/Properties/AssemblyInfo.cs create mode 100644 ResoursesManager/ResourcesManagerTests/RepositoryTests/UserRepositoryTests.cs create mode 100644 ResoursesManager/ResourcesManagerTests/ResourcesManagerTests.csproj create mode 100644 ResoursesManager/ResourcesManagerTests/app.config create mode 100644 ResoursesManager/ResourcesManagerTests/packages.config delete mode 100644 ResoursesManager/ResoursesManager.sln create mode 100644 ResoursesManager/ResoursesManager/Interfaces/INotificationRepository.cs create mode 100644 ResoursesManager/ResoursesManager/Interfaces/IReservationRepository.cs create mode 100644 ResoursesManager/ResoursesManager/Interfaces/IResourceRepository.cs create mode 100644 ResoursesManager/ResoursesManager/Interfaces/IStatisticRepository.cs create mode 100644 ResoursesManager/ResoursesManager/Interfaces/IUserRepository.cs create mode 100644 ResoursesManager/ResoursesManager/Repositories/BaseRepository.cs create mode 100644 ResoursesManager/ResoursesManager/Repositories/NotificationRepository.cs create mode 100644 ResoursesManager/ResoursesManager/Repositories/RescourceRepository.cs create mode 100644 ResoursesManager/ResoursesManager/Repositories/ReservationRepository.cs create mode 100644 ResoursesManager/ResoursesManager/Repositories/StatisticRepository.cs create mode 100644 ResoursesManager/ResoursesManager/Repositories/UserRepository.cs diff --git a/.gitignore b/.gitignore index 3b762e3..baee1f5 100644 --- a/.gitignore +++ b/.gitignore @@ -245,4 +245,6 @@ ModelManifest.xml .fake/ [Ll]ogs/ -[Ll]ogs/* \ No newline at end of file +[Ll]ogs/* + +App_Data/ResourceImages/* \ No newline at end of file diff --git a/ResoursesManager/ResourcesManager.sln b/ResoursesManager/ResourcesManager.sln new file mode 100644 index 0000000..42a2df1 --- /dev/null +++ b/ResoursesManager/ResourcesManager.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27130.2020 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourcesManager", "ResoursesManager\ResourcesManager.csproj", "{7DA03B24-3B56-4A2F-9540-C61E94DC0434}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourcesManagerTests", "ResourcesManagerTests\ResourcesManagerTests.csproj", "{F62CF157-2386-4A3B-A512-B6961DF63604}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7DA03B24-3B56-4A2F-9540-C61E94DC0434}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7DA03B24-3B56-4A2F-9540-C61E94DC0434}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7DA03B24-3B56-4A2F-9540-C61E94DC0434}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7DA03B24-3B56-4A2F-9540-C61E94DC0434}.Release|Any CPU.Build.0 = Release|Any CPU + {F62CF157-2386-4A3B-A512-B6961DF63604}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F62CF157-2386-4A3B-A512-B6961DF63604}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F62CF157-2386-4A3B-A512-B6961DF63604}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F62CF157-2386-4A3B-A512-B6961DF63604}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {DFE12CC6-F894-4FD9-95F8-10A94508E234} + EndGlobalSection +EndGlobal diff --git a/ResoursesManager/ResourcesManagerTests/Controllers/NotificationsControllerTests.cs b/ResoursesManager/ResourcesManagerTests/Controllers/NotificationsControllerTests.cs new file mode 100644 index 0000000..4871bb3 --- /dev/null +++ b/ResoursesManager/ResourcesManagerTests/Controllers/NotificationsControllerTests.cs @@ -0,0 +1,104 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using ResourcesManager.Controllers; +using ResourcesManager.Interfaces; +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Web.Mvc; + +namespace ResourcesManager.Controllers.Tests +{ + [TestClass()] + public class NotificationsControllerTests + { + List expectedNotifications; + Mock mockNotifRepo; + NotificationsController notifController; + + [TestInitialize] + public void InitializeTestData() + { + expectedNotifications = new List { + new Notification() { Id=1, Title = "Cím", Description = "text text" }, + new Notification() { Id=2, Title = "Cím", Description = "text text", Readed = false }, + new Notification() { Id=3, Title = "Cím", Description = "text text" } + }; + mockNotifRepo = new Mock() { CallBase = true }; + + mockNotifRepo.Setup(m => m.GetNotifications()).Returns(expectedNotifications); + + mockNotifRepo.Setup(m => m.GetNotificationByID(It.IsAny())).Returns((int id) => + { + return expectedNotifications.FirstOrDefault(x => x.Id == id); + }); + + mockNotifRepo.Setup(m => m.InsertNotification(It.IsAny())).Returns((Notification notif) => + { + expectedNotifications.Add(notif); + return true; + }); + + mockNotifRepo.Setup(m => m.UpdateNotification(It.IsAny())).Returns((Notification target) => + { + var notif = expectedNotifications.FirstOrDefault(x => x.Id == target.Id); + if (notif == null) + { + return false; + } + notif.Title = target.Title; + notif.Description = target.Description; + notif.Readed = target.Readed; + notif.Logo = target.Logo; + notif.Link = target.Link; + notif.User = target.User; + notif.CreateDate = target.CreateDate; + return true; + }); + + mockNotifRepo.Setup(m => m.DeleteNotification(It.IsAny())).Returns((int id) => + { + var notif = expectedNotifications.FirstOrDefault(x => x.Id == id); + if (notif == null) + { + return false; + } + expectedNotifications.Remove(notif); + return true; + }); + } + + [TestMethod()] + public void Notification_Unread_Test() + { + var result = notifController.GetUnread(); + Assert.IsNotNull((result as ViewResult).Model); + } + + [TestMethod()] + public void Notification_Readed_Test() + { + var result = notifController.Readed(1); + + Assert.Fail(); + } + + [TestMethod()] + public void Notification_MakeReadAll_Test() + { + var result = notifController.MakeReadAll(); + + Assert.Fail(); + } + + [TestCleanup] + public void Notifications_CleanUpTestData() + { + expectedNotifications = null; + mockNotifRepo = null; + } + } +} \ No newline at end of file diff --git a/ResoursesManager/ResourcesManagerTests/Controllers/ReservationsControllerTests.cs b/ResoursesManager/ResourcesManagerTests/Controllers/ReservationsControllerTests.cs new file mode 100644 index 0000000..b3a4a02 --- /dev/null +++ b/ResoursesManager/ResourcesManagerTests/Controllers/ReservationsControllerTests.cs @@ -0,0 +1,195 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using ResourcesManager.Controllers; +using ResourcesManager.Interfaces; +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Web.Mvc; + +namespace ResourcesManager.Controllers.Tests +{ + [TestClass()] + public class ReservationsControllerTests + { + List expectedReservs; + Mock mockReservRepo; + Mock mockUserRepo; + Mock mockResourceRepo; + Mock mockStatRepo; + ReservationsController reservController; + + [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) } + }; + 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); + + mockReservRepo.Setup(m => m.GetReservations()).Returns(expectedReservs); + + mockReservRepo.Setup(m => m.GetReservationByID(It.IsAny())).Returns((int id) => + { + return expectedReservs.FirstOrDefault(x => x.Id == id); + }); + + mockReservRepo.Setup(m => m.InsertReservation(It.IsAny())).Returns((Reservation reserv) => + { + expectedReservs.Add(reserv); + return true; + }); + + mockReservRepo.Setup(m => m.UpdateReservation(It.IsAny())).Returns((Reservation target) => + { + var reserv = expectedReservs.FirstOrDefault(x => x.Id == target.Id); + if (reserv == null) + { + return false; + } + reserv.Begining = target.Begining; + reserv.End = target.End; + reserv.Resource = target.Resource; + reserv.ResourceId = target.ResourceId; + reserv.User = target.User; + return true; + }); + + mockReservRepo.Setup(m => m.DeleteReservation(It.IsAny())).Returns((int id) => + { + var resource = expectedReservs.FirstOrDefault(x => x.Id == id); + if (resource == null) + { + return false; + } + expectedReservs.Remove(resource); + return true; + }); + } + + [TestMethod()] + public void Reservation_Get_Index_Test() + { + var result = reservController.Index(); + Assert.IsNotNull((result as ViewResult).Model); + } + + [TestMethod()] + public void Reservation_Get_Week_Test() + { + var result = reservController.Week(DateTime.Now); + Assert.IsNotNull((result as ViewResult).Model); + } + + [TestMethod()] + public void Reservation_Get_Day_Test() + { + var result = reservController.Day(DateTime.Now); + Assert.IsNotNull((result as ViewResult).Model); + } + + [TestMethod()] + public void Reservation_Get_Create_Test() + { + var result = reservController.Create(1); + Assert.IsNotNull((result as ViewResult).Model); + } + + [TestMethod()] + public void Reservation_Post_Create_Ok_Test() + { + var beforeCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, beforeCount); + + reservController.Create(new Reservation() { Id = 4, Begining = DateTime.Now, End = DateTime.Now.AddHours(1) }); + + var afterCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(4, afterCount); + } + + [TestMethod()] + public void Reservation_Post_Create_Fail_Test() + { + var beforeCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, beforeCount); + + reservController.Create(new Reservation() { Id = 4, Begining = DateTime.Now }); + + var afterCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, afterCount); + } + + [TestMethod()] + public void Reservation_Get_Edit_Test() + { + var result = reservController.Edit(1); + Assert.IsNotNull((result as ViewResult).Model); + } + + [TestMethod()] + 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; + Assert.AreEqual(beforeBegin, afterBegin); + } + + [TestMethod()] + 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); + } + + [TestMethod()] + public void Reservation_Get_Delete_Test() + { + var result = reservController.Delete(1); + Assert.IsNotNull((result as ViewResult).Model); + } + + [TestMethod()] + public void Reservation_Post_Delete_Ok_Test() + { + var beforeCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, beforeCount); + + reservController.DeleteConfirmed(1); + + var afterCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(2, afterCount); + } + + [TestMethod()] + public void Reservation_Post_Delete_Fail_Test() + { + var beforeCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, beforeCount); + + reservController.DeleteConfirmed(8); + + var afterCount = ((reservController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, afterCount); + } + + [TestCleanup] + public void Resources_CleanUpTestData() + { + expectedReservs = null; + mockReservRepo = null; + mockUserRepo = null; + } + } +} \ No newline at end of file diff --git a/ResoursesManager/ResourcesManagerTests/Controllers/ResourcesControllerTests.cs b/ResoursesManager/ResourcesManagerTests/Controllers/ResourcesControllerTests.cs new file mode 100644 index 0000000..bafd0d4 --- /dev/null +++ b/ResoursesManager/ResourcesManagerTests/Controllers/ResourcesControllerTests.cs @@ -0,0 +1,198 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using ResourcesManager.Controllers; +using ResourcesManager.Interfaces; +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Data.Entity; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; +using System.Web.Mvc; + +namespace ResourcesManager.Controllers.Tests +{ + [TestClass()] + public class ResourcesControllerTests + { + List expectedResources; + Mock mockResourceRepo; + Mock mockUserRepo; + ResourcesController resourcesController; + + [TestInitialize] + public void InitializeTestData() + { + expectedResources = new List { + new Resource() { Id=1, Name = "Béla", AssetTag = "4jk5h23k", IsShared = false }, + new Resource() { Id=2, Name = "Lajos", AssetTag = "6546", IsShared = true }, + 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); + + mockResourceRepo.Setup(m => m.GetResouces()).Returns(expectedResources); + + mockResourceRepo.Setup(m => m.GetResourceByID(It.IsAny())).Returns((int id) => + { + return expectedResources.FirstOrDefault(x => x.Id == id); + }); + + mockResourceRepo.Setup(m => m.InsertResouce(It.IsAny())).Returns((Resource resource) => + { + expectedResources.Add(resource); + return true; + }); + + mockResourceRepo.Setup(m => m.UpdateResouce(It.IsAny())).Returns((Resource target) => + { + var resource = expectedResources.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; + }); + + mockResourceRepo.Setup(m => m.DeleteResouce(It.IsAny())).Returns((int id) => + { + var resource = expectedResources.FirstOrDefault(x => x.Id == id); + if (resource == null) + { + return false; + } + expectedResources.Remove(resource); + return true; + }); + } + + [TestMethod()] + public void Resources_Get_Index_Test() + { + var result = resourcesController.Index(); + Assert.IsNotNull((result as ViewResult).Model); + + } + + [TestMethod()] + public void Resources_Get_Details_Ok_Test() + { + var result = resourcesController.Details(1); + Assert.IsNotNull((result as ViewResult).Model); + } + + [TestMethod()] + public void Resources_Get_Details_Fail_Test() + { + var result = resourcesController.Details(null) as HttpStatusCodeResult; + Assert.IsNotNull(result); + Assert.AreEqual(result.StatusCode, 400); + } + + [TestMethod()] + public void Resources_Get_Create_Test() + { + var result = resourcesController.Create(); + Assert.IsNotNull(result); + } + + [TestMethod()] + public void Resources_Post_Create_Ok_Test() + { + var beforeCount = ((resourcesController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, beforeCount); + + resourcesController.Create(new Resource() {Id=4, Name = "Sanyi", AssetTag = "hh564he56", IsShared = false }); + + var afterCount = ((resourcesController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(4, afterCount); + } + + [TestMethod()] + public void Resources_Post_Create_Fail_Test() + { + var beforeCount = ((resourcesController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, beforeCount); + + resourcesController.Create(new Resource() { Name = "Sanyi", IsShared = false }); + + var afterCount = ((resourcesController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, afterCount); + } + + [TestMethod()] + public void Resources_Get_Edit_Test() + { + var result = resourcesController.Edit(1); + Assert.IsNotNull((result as ViewResult).Model); + } + + [TestMethod()] + public void Resources_Post_Edit_Ok_Test() + { + string beforeName = "Katika"; + resourcesController.Edit(new Resource() { Id = 3, Name = beforeName, AssetTag = "u547547", IsShared = false }); + object afterName = ((resourcesController.Details(3) as ViewResult).Model as Resource).Name; + Assert.AreEqual(beforeName, afterName); + } + + [TestMethod()] + public void Resources_Post_Edit_Fail_Test() + { + string beforeName = "Katika"; + resourcesController.Edit(new Resource() { Id = 3, Name = beforeName, IsShared = false }); + object afterName = ((resourcesController.Details(3) as ViewResult).Model as Resource).Name; + Assert.AreNotEqual(beforeName, afterName); + } + + [TestMethod()] + public void Resources_Get_Delete_Test() + { + var result = resourcesController.Delete(1); + Assert.AreEqual((result as ViewResult).Model, expectedResources[0]); + } + + [TestMethod()] + public void Resources_Post_Delete_Ok_Test() + { + var beforeCount = ((resourcesController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, beforeCount); + + resourcesController.DeleteConfirmed(1); + + var afterCount = ((resourcesController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(2, afterCount); + } + + [TestMethod()] + public void Resources_Post_Delete_Fail_Test() + { + var beforeCount = ((resourcesController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, beforeCount); + + resourcesController.DeleteConfirmed(8); + + var afterCount = ((resourcesController.Index() as ViewResult).Model as IEnumerable).Count(); + Assert.AreEqual(3, afterCount); + } + + [TestCleanup] + public void Resources_CleanUpTestData() + { + expectedResources = null; + mockResourceRepo = null; + mockUserRepo = null; + } + } +} \ No newline at end of file diff --git a/ResoursesManager/ResourcesManagerTests/Controllers/StatisticsControllerTests.cs b/ResoursesManager/ResourcesManagerTests/Controllers/StatisticsControllerTests.cs new file mode 100644 index 0000000..6f31437 --- /dev/null +++ b/ResoursesManager/ResourcesManagerTests/Controllers/StatisticsControllerTests.cs @@ -0,0 +1,61 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using ResourcesManager.Controllers; +using ResourcesManager.Interfaces; +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Web.Mvc; + +namespace ResourcesManager.Controllers.Tests +{ + [TestClass()] + public class StatisticsControllerTests + { + List expectedStat; + Mock mockStatRepo; + StatisticsController statController; + + [TestInitialize] + public void InitializeStatisticTestData() + { + expectedStat = new List { + new StatisticModel(){ Id= 1, ResourceId = 1, ReservationId = 1, StatisticType = StatisticType.Login, DateTime = DateTime.Now, UserId = Guid.NewGuid().ToString()}, + new StatisticModel(){ Id= 2, ResourceId = 2, ReservationId = 2, StatisticType = StatisticType.Reserv, DateTime = DateTime.Now, UserId = Guid.NewGuid().ToString()}, + 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); + + mockStatRepo.Setup(m => m.GetStatistics()).Returns(expectedStat); + + mockStatRepo.Setup(m => m.GetStatisticByID(It.IsAny())).Returns((int id) => + { + return expectedStat.FirstOrDefault(x => x.Id == id); + }); + + mockStatRepo.Setup(m => m.InsertStatistic(It.IsAny())).Returns((StatisticModel stat) => + { + expectedStat.Add(stat); + return true; + }); + } + + [TestMethod()] + public void Statistic_Get_Index_Test() + { + var result = statController.Index(StatisticType.Login, 1); + Assert.IsNotNull((result as ViewResult).Model); + } + + [TestCleanup] + public void CleanUpTestData() + { + expectedStat = null; + mockStatRepo = null; + } + } +} \ No newline at end of file diff --git a/ResoursesManager/ResourcesManagerTests/Controllers/SubscribeControllerTests.cs b/ResoursesManager/ResourcesManagerTests/Controllers/SubscribeControllerTests.cs new file mode 100644 index 0000000..57579bf --- /dev/null +++ b/ResoursesManager/ResourcesManagerTests/Controllers/SubscribeControllerTests.cs @@ -0,0 +1,76 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using ResourcesManager.Controllers; +using ResourcesManager.Interfaces; +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Web.Mvc; + +namespace ResourcesManager.Controllers.Tests +{ + [TestClass()] + public class SubscribeControllerTests + { + Mock mockResourceRepo; + Mock mockUserRepo; + Mock mockStatRepo; + SubscribeController subController; + + [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); + } + + [TestMethod()] + public void Subscribe_Get_Index_Test() + { + var result = subController.Index(); + Assert.IsNotNull((result as ViewResult).Model); + } + + [TestMethod()] + public void Subscribe_Follow_Test() + { + var result = subController.Follow(1); + var list = ((subController.Index() as ViewResult).Model as List); + Assert.Fail(); + } + + [TestMethod()] + public void Subscribe_UnFollowAll_Test() + { + var result = subController.UnFollowAll(); + Assert.Fail(); + } + + [TestMethod()] + public void Subscribe_FollowAllSubscribeTest() + { + var result = subController.UnFollowAll(); + Assert.Fail(); + } + + [TestMethod()] + public void Subscribe_Unfollow_Test() + { + var result = subController.Unfollow(1); + Assert.Fail(); + } + + [TestCleanup] + public void Resources_CleanUpTestData() + { + mockResourceRepo = null; + mockUserRepo = null; + mockStatRepo = null; + } + } +} \ No newline at end of file diff --git a/ResoursesManager/ResourcesManagerTests/Properties/AssemblyInfo.cs b/ResoursesManager/ResourcesManagerTests/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6940102 --- /dev/null +++ b/ResoursesManager/ResourcesManagerTests/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ResourcesManagerTests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ResourcesManagerTests")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f62cf157-2386-4a3b-a512-b6961df63604")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ResoursesManager/ResourcesManagerTests/RepositoryTests/UserRepositoryTests.cs b/ResoursesManager/ResourcesManagerTests/RepositoryTests/UserRepositoryTests.cs new file mode 100644 index 0000000..d8d608b --- /dev/null +++ b/ResoursesManager/ResourcesManagerTests/RepositoryTests/UserRepositoryTests.cs @@ -0,0 +1,79 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using ResourcesManager.Interfaces; +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ResourcesManagerTests.RepositoryTests +{ + [TestClass] + class UserRepositoryTests + { + List expectedUsers; + Mock mockUserRepo; + + [TestInitialize] + public void InitializeTestData() + { + expectedUsers = new List { + new ApplicationUser() { }, + new ApplicationUser() { }, + new ApplicationUser() { }, + }; + 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() + { + expectedUsers = null; + mockUserRepo = null; + } + } +} diff --git a/ResoursesManager/ResourcesManagerTests/ResourcesManagerTests.csproj b/ResoursesManager/ResourcesManagerTests/ResourcesManagerTests.csproj new file mode 100644 index 0000000..d082587 --- /dev/null +++ b/ResoursesManager/ResourcesManagerTests/ResourcesManagerTests.csproj @@ -0,0 +1,129 @@ + + + + + Debug + AnyCPU + {F62CF157-2386-4A3B-A512-B6961DF63604} + Library + Properties + ResourcesManagerTests + ResourcesManagerTests + v4.5.2 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Castle.Core.4.3.1\lib\net45\Castle.Core.dll + + + + ..\packages\MSTest.TestFramework.1.2.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll + + + ..\packages\MSTest.TestFramework.1.2.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll + + + ..\packages\Moq.4.10.1\lib\net45\Moq.dll + + + + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll + + + ..\packages\System.Threading.Tasks.Extensions.4.5.1\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll + + + ..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll + + + + + + + + + + + + + + + + + + + + + + + + + + {7DA03B24-3B56-4A2F-9540-C61E94DC0434} + ResourcesManager + + + + + + + False + + + False + + + False + + + False + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + \ No newline at end of file diff --git a/ResoursesManager/ResourcesManagerTests/app.config b/ResoursesManager/ResourcesManagerTests/app.config new file mode 100644 index 0000000..4f9a5d1 --- /dev/null +++ b/ResoursesManager/ResourcesManagerTests/app.config @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ResoursesManager/ResourcesManagerTests/packages.config b/ResoursesManager/ResourcesManagerTests/packages.config new file mode 100644 index 0000000..d2dd0b5 --- /dev/null +++ b/ResoursesManager/ResourcesManagerTests/packages.config @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/ResoursesManager/ResoursesManager.sln b/ResoursesManager/ResoursesManager.sln deleted file mode 100644 index 2af4d8e..0000000 --- a/ResoursesManager/ResoursesManager.sln +++ /dev/null @@ -1,22 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Express 14 for Web -VisualStudioVersion = 14.0.25123.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResoursesManager", "ResoursesManager\ResoursesManager.csproj", "{7DA03B24-3B56-4A2F-9540-C61E94DC0434}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7DA03B24-3B56-4A2F-9540-C61E94DC0434}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7DA03B24-3B56-4A2F-9540-C61E94DC0434}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7DA03B24-3B56-4A2F-9540-C61E94DC0434}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7DA03B24-3B56-4A2F-9540-C61E94DC0434}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/ResoursesManager/ResoursesManager/Controllers/NotificationsController.cs b/ResoursesManager/ResoursesManager/Controllers/NotificationsController.cs index d0813b2..2e4f63a 100644 --- a/ResoursesManager/ResoursesManager/Controllers/NotificationsController.cs +++ b/ResoursesManager/ResoursesManager/Controllers/NotificationsController.cs @@ -9,14 +9,27 @@ using System.Web.Mvc; using ResourcesManager.Models; using System.Web.Helpers; using System.IO; +using ResourcesManager.Interfaces; +using ResourcesManager.Repositories; namespace ResourcesManager.Controllers { [Authorize] public class NotificationsController : Controller { - private ApplicationDbContext db = new ApplicationDbContext(); + private ApplicationDbContext context = new ApplicationDbContext(); + private INotificationRepository notifRepo; readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + public NotificationsController() + { + context = new ApplicationDbContext(); + notifRepo = new NotificationRepository(context); + } + + public NotificationsController(INotificationRepository notifRepo) + { + this.notifRepo = notifRepo; + } public ActionResult Readed(int? id, string link = null) { @@ -27,8 +40,9 @@ namespace ResourcesManager.Controllers logger.Warn("BadRequest"); } - db.Notifications.First(n => n.Id == id).Readed = true; - db.SaveChanges(); + var notif = notifRepo.GetNotificationByID((int)id); + notif.Readed = true; + notifRepo.UpdateNotification(notif); if (string.IsNullOrEmpty(link) || link == "null") { return Redirect(Request.UrlReferrer.ToString()); @@ -48,7 +62,7 @@ namespace ResourcesManager.Controllers { try { - return Json(db.Notifications.OrderByDescending(k => k.CreateDate).Where(m => m.Readed == false && (m.User == User.Identity.Name || m.User == null)).ToList(), JsonRequestBehavior.AllowGet); + 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) { @@ -61,8 +75,12 @@ namespace ResourcesManager.Controllers { try { - db.Notifications.Where(k => k.Readed == false && (k.User == User.Identity.Name || k.User == null)).ToList().ForEach(k => k.Readed = true); - db.SaveChanges(); + 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; + notifRepo.UpdateNotification(item); + } } catch (Exception ex) { @@ -75,7 +93,8 @@ namespace ResourcesManager.Controllers { if (disposing) { - db.Dispose(); + context.Dispose(); + notifRepo.Dispose(); } base.Dispose(disposing); } diff --git a/ResoursesManager/ResoursesManager/Controllers/ReservationsController.cs b/ResoursesManager/ResoursesManager/Controllers/ReservationsController.cs index 3b6c74f..18a883e 100644 --- a/ResoursesManager/ResoursesManager/Controllers/ReservationsController.cs +++ b/ResoursesManager/ResoursesManager/Controllers/ReservationsController.cs @@ -10,14 +10,36 @@ using ResourcesManager.Models; using Microsoft.AspNet.Identity; using System.IO; using ResourcesManager.Helpers; +using ResourcesManager.Interfaces; +using ResourcesManager.Handlers; +using ResourcesManager.Repositories; namespace ResourcesManager.Controllers { [Authorize] public class ReservationsController : Controller { - private ApplicationDbContext db = new ApplicationDbContext(); + private ApplicationDbContext context; + private IReservationRepository reservRepo; + private IUserRepository userRepo; + private IResourceRepository resourceRepo; + private IStatisticRepository statRepo; readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + public ReservationsController() + { + context = new ApplicationDbContext(); + reservRepo = new ReservationRepository(context); + userRepo = new UserRepository(context); + resourceRepo = new ResourceRepository(context); + statRepo = new StatisticRepository(context); + } + public ReservationsController(IReservationRepository reservRepo, IUserRepository userRepo, IResourceRepository resourceRepo, IStatisticRepository statRepo) + { + this.reservRepo = reservRepo; + this.userRepo = userRepo; + this.resourceRepo = resourceRepo; + this.statRepo = statRepo; + } public ActionResult Index(int? year = null, int? month = null, int? resourceId = null) { @@ -45,8 +67,8 @@ namespace ResourcesManager.Controllers model.Start = startOfMonth; model.End = endOfMonth; - var reservations = db.Reservations - .Include(x => x.Resource) + var reservations = reservRepo.GetReservations() + .ToList() .OrderBy(x => x.Begining) .Where(x => x.Begining > startOfMonth && x.Begining < endOfMonth) .ToList(); @@ -69,8 +91,8 @@ namespace ResourcesManager.Controllers var startDay = date.AddDays(startShift); var endDay = date.AddDays(endShift); - var reservations = db.Reservations - .Include(x => x.Resource) + var reservations = reservRepo.GetReservations() + .ToList() .OrderBy(x => x.Begining) .Where(x => x.Begining > startDay && x.Begining < endDay) .ToList(); @@ -97,8 +119,8 @@ namespace ResourcesManager.Controllers try { var end = day.AddDays(1); - var reservations = db.Reservations - .Include(x => x.Resource) + var reservations = reservRepo.GetReservations() + .ToList() .OrderBy(x => x.Begining) .Where(x => x.Begining > day && x.Begining < end) .ToList(); @@ -125,7 +147,7 @@ namespace ResourcesManager.Controllers log.Warn("BadRequest"); return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } - Reservation reservation = db.Reservations.Find(id); + Reservation reservation = reservRepo.GetReservationByID((int)id); if (reservation == null) { log.Warn("HttpNotFound"); @@ -147,13 +169,13 @@ namespace ResourcesManager.Controllers model.Reservation.Begining = DateTime.Now.AddHours(1); model.Reservation.End = DateTime.Now.AddHours(2); model.Reservation.ResourceId = (int)resourceId; - model.Reservation.Resource = db.Resources.Find(resourceId); + model.Reservation.Resource = resourceRepo.GetResourceByID((int)resourceId); } else { model.Reservation.Begining = (DateTime)time; model.Reservation.End = ((DateTime)time).AddHours(1); - model.Resources = db.Resources.ToList(); + model.Resources = resourceRepo.GetResouces().ToList(); } return View(model); } @@ -170,7 +192,7 @@ namespace ResourcesManager.Controllers { try { - model.Resource = db.Resources.Include(k => k.Users).FirstOrDefault(k => k.Id == model.ResourceId); + model.Resource = resourceRepo.GetResourceByID(model.ResourceId); model.User = User.Identity.Name; if (model.Resource.TimeLimit != null) { @@ -182,22 +204,22 @@ namespace ResourcesManager.Controllers if (difference > timelimit) { ModelState.AddModelError("", "Túl lépted az idő limitet!"); - return View(new ReservationCreateViewModel() { Reservation = model, Resources = db.Resources.ToList() }); + return View(new ReservationCreateViewModel() { Reservation = model, Resources = resourceRepo.GetResouces().ToList().ToList() }); } } if (model.Begining > DateTime.Now.AddHours(-1) && model.Begining < DateTime.Now) { ModelState.AddModelError("", "Legalább egy órával a kezdés előtt le kell foglalnod!"); - return View(new ReservationCreateViewModel() { Reservation = model, Resources = db.Resources.ToList() }); + return View(new ReservationCreateViewModel() { Reservation = model, Resources = resourceRepo.GetResouces().ToList() }); } if (model.Begining >= model.End) { ModelState.AddModelError("", "A kezdő időpont nem lehet hamarabb mint a befejező!"); - return View(new ReservationCreateViewModel() { Reservation = model, Resources = db.Resources.ToList() }); + return View(new ReservationCreateViewModel() { Reservation = model, Resources = resourceRepo.GetResouces().ToList() }); } - var data = db.Reservations.ToList(); + var data = reservRepo.GetReservations().ToList(); foreach (var item in data) { if (item.ResourceId == model.ResourceId) @@ -205,13 +227,13 @@ namespace ResourcesManager.Controllers if (item.Begining < model.End && item.End > model.Begining) { ModelState.AddModelError("", "Ez az időpont már foglalt"); - return View(new ReservationCreateViewModel() { Reservation = model, Resources = db.Resources.ToList() }); + return View(new ReservationCreateViewModel() { Reservation = model, Resources = resourceRepo.GetResouces().ToList() }); } } } - db.Reservations.Add(model); - db.Statistic.Add(new StatisticModel() + reservRepo.InsertReservation(model); + statRepo.InsertStatistic(new StatisticModel() { ReservationId = model.Id, ResourceId = model.ResourceId, @@ -219,7 +241,6 @@ namespace ResourcesManager.Controllers StatisticType = StatisticType.Reserv, DateTime = DateTime.Now }); - db.SaveChanges(); log.Info("Új Foglalás: " + model.ToString()); //Értesítés küldés @@ -245,7 +266,7 @@ namespace ResourcesManager.Controllers log.Warn("BadRequest"); return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } - Reservation reservation = db.Reservations.Find(id); + Reservation reservation = reservRepo.GetReservationByID((int)id); if (reservation == null) { log.Warn("HttpNotFound"); @@ -278,7 +299,7 @@ namespace ResourcesManager.Controllers log.Warn("Jogosultsági hiba: " + User.Identity.Name); return View("PermissionError"); } - var resource = db.Resources.Include(k => k.Users).FirstOrDefault(k => k.Id == reservation.ResourceId); + var resource = resourceRepo.GetResourceByID(reservation.ResourceId); if (resource.TimeLimit != null) { TimeSpan difference = reservation.End.Subtract(reservation.Begining); @@ -298,7 +319,7 @@ namespace ResourcesManager.Controllers return View(reservation); } - var data = db.Reservations.ToList(); + var data = reservRepo.GetReservations(); foreach (var item in data) { if (item.ResourceId == reservation.ResourceId) @@ -315,11 +336,11 @@ namespace ResourcesManager.Controllers } - var r = db.Reservations.First(f => f.Id == reservation.Id); + var r = reservRepo.GetReservationByID(reservation.Id); r.Begining = reservation.Begining; r.End = reservation.End; - db.Statistic.Add(new StatisticModel() + statRepo.InsertStatistic(new StatisticModel() { ReservationId = r.Id, ResourceId = r.ResourceId, @@ -327,7 +348,6 @@ namespace ResourcesManager.Controllers StatisticType = StatisticType.ReservartionModified, DateTime = DateTime.Now }); - db.SaveChanges(); log.Info("Új foglalás: " + r.ToString()); //Értesítés küldés @@ -355,7 +375,7 @@ namespace ResourcesManager.Controllers log.Warn("BadRequest"); return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } - Reservation reservation = db.Reservations.Find(id); + Reservation reservation = reservRepo.GetReservationByID((int)id); if (!((reservation.User == User.Identity.Name) || User.IsInRole("Admin"))) { log.Warn("Jogosultsági hiba: " + User.Identity.Name); @@ -381,7 +401,7 @@ namespace ResourcesManager.Controllers { try { - var reservation = db.Reservations.Include("Resource.Users").First(i => i.Id == id); + var reservation = reservRepo.GetReservationByID(id); if (!((reservation.User == User.Identity.Name) || User.IsInRole("Admin"))) { log.Warn("Jogosultsági hiba: " + User.Identity.Name); @@ -392,8 +412,8 @@ namespace ResourcesManager.Controllers 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); - db.Reservations.Remove(reservation); - db.Statistic.Add(new StatisticModel() + reservRepo.DeleteReservation(reservation.Id); + statRepo.InsertStatistic(new StatisticModel() { ReservationId = reservation.Id, ResourceId = reservation.ResourceId, @@ -401,7 +421,6 @@ namespace ResourcesManager.Controllers StatisticType = StatisticType.ReservationDelete, DateTime = DateTime.Now }); - db.SaveChanges(); log.Info("Foglalás törölve id: " + id); } catch (Exception ex) @@ -417,7 +436,11 @@ namespace ResourcesManager.Controllers { if (disposing) { - db.Dispose(); + context.Dispose(); + reservRepo.Dispose(); + resourceRepo.Dispose(); + statRepo.Dispose(); + userRepo.Dispose(); } base.Dispose(disposing); } diff --git a/ResoursesManager/ResoursesManager/Controllers/ResourcesController.cs b/ResoursesManager/ResoursesManager/Controllers/ResourcesController.cs index 579b9c4..4171847 100644 --- a/ResoursesManager/ResoursesManager/Controllers/ResourcesController.cs +++ b/ResoursesManager/ResoursesManager/Controllers/ResourcesController.cs @@ -16,15 +16,46 @@ using System.Web.Helpers; using System.Net.Mime; using Microsoft.AspNet.SignalR; using ResourcesManager.Helpers; +using ResourcesManager.Interfaces; +using ResourcesManager.Handlers; +using ResourcesManager.Repositories; namespace ResourcesManager.Controllers { [System.Web.Mvc.Authorize] public class ResourcesController : Controller { - private ApplicationDbContext db = new ApplicationDbContext(); + ApplicationDbContext context; + private IResourceRepository resourceRepo; + private IUserRepository userRepo; + private IStatisticRepository statisticRepo; readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + public ResourcesController() + { + context = new ApplicationDbContext(); + resourceRepo = new ResourceRepository(context); + userRepo = new UserRepository(context); + statisticRepo = new StatisticRepository(context); + } + + public ResourcesController(IResourceRepository resouceRepo) + { + this.resourceRepo = resouceRepo; + } + + public ResourcesController(IResourceRepository resouceRepo, IUserRepository userRepo) + { + this.resourceRepo = resouceRepo; + this.userRepo = userRepo; + } + public ResourcesController(IResourceRepository resouceRepo, IUserRepository userRepo, IStatisticRepository statisticRepository) + { + this.resourceRepo = resouceRepo; + this.userRepo = userRepo; + this.statisticRepo = statisticRepository; + } + public ActionResult GetImage(string path) { try @@ -104,7 +135,7 @@ namespace ResourcesManager.Controllers public ActionResult Index() { - return View(db.Resources.ToList()); + return View(resourceRepo.GetResouces()); } public ActionResult Details(int? id) @@ -114,7 +145,7 @@ namespace ResourcesManager.Controllers log.Warn("BadRequest"); return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } - Resource resource = db.Resources.Include("Users").FirstOrDefault(e => e.Id == id); + Resource resource = resourceRepo.GetResourceByID((int)id); if (resource == null) { log.Warn("HttpNotFound"); @@ -138,7 +169,7 @@ namespace ResourcesManager.Controllers { try { - if (db.Resources.Any(m => m.AssetTag == resource.AssetTag)) + if (resourceRepo.GetResouces().Any(m => m.AssetTag == resource.AssetTag)) { ModelState.AddModelError("AssetTag", "Ilyen már létezik"); return View(resource); @@ -151,16 +182,15 @@ namespace ResourcesManager.Controllers try { - resource.Users = db.Users.ToList(); - db.Resources.Add(pictureUploadTo(resource)); - db.Statistic.Add(new StatisticModel() + resource.Users = userRepo.GetUsers().ToList(); + resourceRepo.InsertResouce(pictureUploadTo(resource)); + statisticRepo.InsertStatistic(new StatisticModel() { ResourceId = resource.Id, UserId = User.Identity.GetUserId(), StatisticType = StatisticType.ResourceCreate, DateTime = DateTime.Now }); - db.SaveChanges(); } catch (Exception e) { @@ -168,14 +198,14 @@ namespace ResourcesManager.Controllers return new HttpStatusCodeResult(HttpStatusCode.InternalServerError); } - var allUser = db.Users.Select(k => k.UserName).ToList(); - string message = string.Format("{0} létrehozta {1} erőforrást.", User.Identity.Name, resource.Name); + var allUser = userRepo.GetUsers().Select(k => k.UserName).ToList(); + string message = string.Format("{0} létrehozta {1} erőforrást.", User?.Identity?.Name, resource.Name); string url = "/Resources/Details/" + resource.Id; NotificationHelper.Send(allUser, "Új erőforrás", message, resource.ImagePath, url); } catch (Exception ex) { - log.Error("", ex); + log.Error("", ex); return new HttpStatusCodeResult(HttpStatusCode.InternalServerError); } @@ -193,7 +223,7 @@ namespace ResourcesManager.Controllers log.Warn("BadRequest"); return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } - Resource resource = db.Resources.Find(id); + Resource resource = resourceRepo.GetResourceByID((int)id); if (resource == null) { log.Warn("HttpNotFound"); @@ -212,8 +242,8 @@ namespace ResourcesManager.Controllers try { //Leltári azonosító ellenőrzés - var model = db.Resources.Include("Users").FirstOrDefault(m => m.Id == resource.Id); - var resources = db.Resources.ToList(); + var model = resourceRepo.GetResourceByID(resource.Id); + var resources = resourceRepo.GetResouces().ToList(); foreach (var item in resources) { if (resource.AssetTag == item.AssetTag && (resource.AssetTag != model.AssetTag)) @@ -223,10 +253,10 @@ namespace ResourcesManager.Controllers } } //Kép feltöltés ellenörzése - var stream = Request.Files[0].InputStream; - string oldPath = db.Resources.Find(resource.Id).ImagePath; + var stream = Request?.Files[0]?.InputStream; + string oldPath = resourceRepo.GetResourceByID(resource.Id).ImagePath; string path; - if (stream.Length != 0) + if (stream != null && stream.Length != 0) { //Kép mentése var image = new WebImage(stream); @@ -246,24 +276,23 @@ namespace ResourcesManager.Controllers pictureDelete(Server.MapPath(oldPath)); } log.Info("PictureDeleted: " + oldPath); + stream.Flush(); + stream.Close(); } - stream.Flush(); - stream.Close(); //Adattagok módosítása model.AssetTag = resource.AssetTag; model.Description = resource.Description; model.Name = resource.Name; model.TimeLimit = resource.TimeLimit; - db.Entry(model).State = EntityState.Modified; - db.Statistic.Add(new StatisticModel() + resourceRepo.UpdateResouce(model); + statisticRepo.InsertStatistic(new StatisticModel() { ResourceId = resource.Id, UserId = User.Identity.GetUserId(), StatisticType = StatisticType.ResourceModified, DateTime = DateTime.Now }); - db.SaveChanges(); //Értesítés küldés var users = model.Users.Select(k => k.UserName).ToList(); @@ -291,7 +320,7 @@ namespace ResourcesManager.Controllers return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } - Resource resource = db.Resources.Find(id); + Resource resource = resourceRepo.GetResourceByID((int)id); if (resource == null) { log.Warn("HttpNotFound"); @@ -308,22 +337,21 @@ namespace ResourcesManager.Controllers { try { - Resource resource = db.Resources.Include("Users").FirstOrDefault(m => m.Id == id); + Resource resource = resourceRepo.GetResourceByID(id); //Értesítés küldés var users = resource.Users.Select(k => k.UserName).ToList(); - string message = string.Format("{0} törölte {1} erőforrást.", User.Identity.Name, resource.Name); + string message = string.Format("{0} törölte {1} erőforrást.", User?.Identity?.Name, resource.Name); NotificationHelper.Send(users, "Erőforrás törlés", message, null, null); - db.Resources.Remove(resource); - db.Statistic.Add(new StatisticModel() + resourceRepo.DeleteResouce(resource.Id); ; + statisticRepo.InsertStatistic(new StatisticModel() { ResourceId = resource.Id, UserId = User.Identity.GetUserId(), StatisticType = StatisticType.ResourceDelete, DateTime = DateTime.Now }); - db.SaveChanges(); pictureDelete(resource.ImagePath); } catch (Exception ex) @@ -340,7 +368,10 @@ namespace ResourcesManager.Controllers { if (disposing) { - db.Dispose(); + context.Dispose(); + resourceRepo.Dispose(); + statisticRepo.Dispose(); + userRepo.Dispose(); } base.Dispose(disposing); } diff --git a/ResoursesManager/ResoursesManager/Controllers/StatisticsController.cs b/ResoursesManager/ResoursesManager/Controllers/StatisticsController.cs index ac6205d..8536d39 100644 --- a/ResoursesManager/ResoursesManager/Controllers/StatisticsController.cs +++ b/ResoursesManager/ResoursesManager/Controllers/StatisticsController.cs @@ -9,12 +9,26 @@ using System.Web.Mvc; using ResourcesManager.Models; using ResourcesManager.ViewModels; using System.Data.Entity.Core.Objects; +using ResourcesManager.Interfaces; +using ResourcesManager.Repositories; namespace ResourcesManager.Controllers { public class StatisticsController : Controller { - private ApplicationDbContext db = new ApplicationDbContext(); + private ApplicationDbContext context; + private IStatisticRepository statisticRepository; + + public StatisticsController() + { + context = new ApplicationDbContext(); + this.statisticRepository = new StatisticRepository(context); + } + + public StatisticsController(IStatisticRepository statisticRepository) + { + this.statisticRepository = statisticRepository; + } public ActionResult Index(StatisticType? statTypeId, int? resId) { @@ -24,19 +38,20 @@ namespace ResourcesManager.Controllers } if (resId == null) { - resId = db.Resources.FirstOrDefault().Id; + resId = context.Resources.FirstOrDefault().Id; } + var statistics = statisticRepository.GetStatistics(); var model = new StatisticViewModel(); var today = DateTime.Today.AddDays(-30.0); - model.ByType = db.Statistic.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 = db.Statistic.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 = db.Statistic.GroupBy(l => l.StatisticType).Select(j => new ByTypeCircle() { Name = ((StatisticType)j.Key).ToString(), Value = j.Count() }).ToList(); - var subscibedUser = db.Resources.Select(k => k.Users.Count()).Sum(); - var allUsers = db.Users.Count() * db.Resources.Count(); + 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(db.Resources, "Id", "Name", resId); + model.Resources = new SelectList(context.Resources, "Id", "Name", resId); model.StatisticType = new SelectList(Enum.GetValues(typeof(StatisticType)).Cast(), (int)statTypeId); return View(model); } @@ -45,7 +60,7 @@ namespace ResourcesManager.Controllers { if (disposing) { - db.Dispose(); + context.Dispose(); } base.Dispose(disposing); } diff --git a/ResoursesManager/ResoursesManager/Controllers/SubscribeController.cs b/ResoursesManager/ResoursesManager/Controllers/SubscribeController.cs index 766818d..ddc0056 100644 --- a/ResoursesManager/ResoursesManager/Controllers/SubscribeController.cs +++ b/ResoursesManager/ResoursesManager/Controllers/SubscribeController.cs @@ -1,5 +1,8 @@ using Microsoft.AspNet.Identity; +using ResourcesManager.Handlers; +using ResourcesManager.Interfaces; using ResourcesManager.Models; +using ResourcesManager.Repositories; using System; using System.Collections.Generic; using System.Linq; @@ -12,12 +15,30 @@ namespace ResourcesManager.Controllers [Authorize] public class SubscribeController : Controller { - private ApplicationDbContext db = new ApplicationDbContext(); + private ApplicationDbContext context; + private IResourceRepository resourceRepo; + private IUserRepository userRepo; + private IStatisticRepository statisticRepo; readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + public SubscribeController() + { + context = new ApplicationDbContext(); + resourceRepo = new ResourceRepository(context); + userRepo = new UserRepository(context); + statisticRepo = new StatisticRepository(context); + } + + public SubscribeController(IResourceRepository resouceRepo, IUserRepository userRepo, IStatisticRepository statisticRepository) + { + this.resourceRepo = resouceRepo; + this.userRepo = userRepo; + this.statisticRepo = statisticRepository; + } + public ActionResult Index() { - return View(db.Resources.ToList()); + return View(resourceRepo.GetResouces()); } public ActionResult Follow(int? resourceId) @@ -30,16 +51,17 @@ namespace ResourcesManager.Controllers return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } - var user = db.Users.Find(User.Identity.GetUserId()); - db.Resources.Find(resourceId).Users.Add(user); - db.Statistic.Add(new StatisticModel() + var user = userRepo.GetUserByID(User.Identity.GetUserId()); + var res = resourceRepo.GetResourceByID((int)resourceId); + res.Users.Add(user); + resourceRepo.UpdateResouce(res); + statisticRepo.InsertStatistic(new StatisticModel() { ResourceId = (int)resourceId, UserId = User.Identity.GetUserId(), StatisticType = StatisticType.Subscribe, DateTime = DateTime.Now }); - db.SaveChanges(); } catch (Exception e) { @@ -54,18 +76,17 @@ namespace ResourcesManager.Controllers { try { - var user = db.Users.Find(User.Identity.GetUserId()); - foreach (var item in db.Resources) + var user = userRepo.GetUserByID(User.Identity.GetUserId()); + foreach (var item in resourceRepo.GetResouces()) { item.Users.Remove(user); } - db.Statistic.Add(new StatisticModel() + statisticRepo.InsertStatistic(new StatisticModel() { UserId = User.Identity.GetUserId(), StatisticType = StatisticType.SubscribeAll, DateTime = DateTime.Now }); - db.SaveChanges(); } catch (Exception e) { @@ -79,18 +100,17 @@ namespace ResourcesManager.Controllers { try { - var user = db.Users.Find(User.Identity.GetUserId()); - foreach (var item in db.Resources) + var user = userRepo.GetUserByID(User.Identity.GetUserId()); + foreach (var item in resourceRepo.GetResouces()) { item.Users.Add(user); } - db.Statistic.Add(new StatisticModel() + statisticRepo.InsertStatistic(new StatisticModel() { UserId = User.Identity.GetUserId(), StatisticType = StatisticType.UnsubscirbeAll, DateTime = DateTime.Now }); - db.SaveChanges(); } catch (Exception e) { @@ -109,16 +129,17 @@ namespace ResourcesManager.Controllers log.Warn("BadRequest"); return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } - var user = db.Users.Find(User.Identity.GetUserId()); - db.Resources.Find(resourceId).Users.Remove(user); - db.Statistic.Add(new StatisticModel() + var user = userRepo.GetUserByID(User.Identity.GetUserId()); + var res = resourceRepo.GetResourceByID((int)resourceId); + res.Users.Remove(user); + resourceRepo.UpdateResouce(res); + statisticRepo.InsertStatistic(new StatisticModel() { ResourceId = (int)resourceId, UserId = User.Identity.GetUserId(), StatisticType = StatisticType.Unsubscirbe, DateTime = DateTime.Now }); - db.SaveChanges(); } catch (Exception e) { @@ -132,7 +153,10 @@ namespace ResourcesManager.Controllers { if (disposing) { - db.Dispose(); + context.Dispose(); + resourceRepo.Dispose(); + statisticRepo.Dispose(); + userRepo.Dispose(); } base.Dispose(disposing); } diff --git a/ResoursesManager/ResoursesManager/Interfaces/INotificationRepository.cs b/ResoursesManager/ResoursesManager/Interfaces/INotificationRepository.cs new file mode 100644 index 0000000..c066846 --- /dev/null +++ b/ResoursesManager/ResoursesManager/Interfaces/INotificationRepository.cs @@ -0,0 +1,18 @@ +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ResourcesManager.Interfaces +{ + public interface INotificationRepository : IDisposable + { + IEnumerable GetNotifications(); + Notification GetNotificationByID(int id); + bool InsertNotification(Notification notification); + bool DeleteNotification(int id); + bool UpdateNotification(Notification notification); + } +} diff --git a/ResoursesManager/ResoursesManager/Interfaces/IReservationRepository.cs b/ResoursesManager/ResoursesManager/Interfaces/IReservationRepository.cs new file mode 100644 index 0000000..34e3d6f --- /dev/null +++ b/ResoursesManager/ResoursesManager/Interfaces/IReservationRepository.cs @@ -0,0 +1,18 @@ +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ResourcesManager.Interfaces +{ + public interface IReservationRepository : IDisposable + { + IEnumerable GetReservations(); + Reservation GetReservationByID(int id); + bool InsertReservation(Reservation reservation); + bool DeleteReservation(int id); + bool UpdateReservation(Reservation reservation); + } +} diff --git a/ResoursesManager/ResoursesManager/Interfaces/IResourceRepository.cs b/ResoursesManager/ResoursesManager/Interfaces/IResourceRepository.cs new file mode 100644 index 0000000..4b5331d --- /dev/null +++ b/ResoursesManager/ResoursesManager/Interfaces/IResourceRepository.cs @@ -0,0 +1,18 @@ +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ResourcesManager.Interfaces +{ + public interface IResourceRepository : IDisposable + { + IEnumerable GetResouces(); + Resource GetResourceByID(int id); + bool InsertResouce(Resource resource); + bool DeleteResouce(int id); + bool UpdateResouce(Resource resource); + } +} diff --git a/ResoursesManager/ResoursesManager/Interfaces/IStatisticRepository.cs b/ResoursesManager/ResoursesManager/Interfaces/IStatisticRepository.cs new file mode 100644 index 0000000..0d7beab --- /dev/null +++ b/ResoursesManager/ResoursesManager/Interfaces/IStatisticRepository.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ResourcesManager.Models; + +namespace ResourcesManager.Interfaces +{ + public interface IStatisticRepository : IDisposable + { + IEnumerable GetStatistics(); + StatisticModel GetStatisticByID(int id); + bool InsertStatistic(StatisticModel statistic); + } +} diff --git a/ResoursesManager/ResoursesManager/Interfaces/IUserRepository.cs b/ResoursesManager/ResoursesManager/Interfaces/IUserRepository.cs new file mode 100644 index 0000000..9de9bd5 --- /dev/null +++ b/ResoursesManager/ResoursesManager/Interfaces/IUserRepository.cs @@ -0,0 +1,19 @@ +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ResourcesManager.Interfaces +{ + public interface IUserRepository : IDisposable + { + IEnumerable GetUsers(); + ApplicationUser GetUserByID(string id); + void InsertUser(ApplicationUser resource); + void DeleteUser(string id); + void UpdateUser(ApplicationUser resource); + void Save(); + } +} diff --git a/ResoursesManager/ResoursesManager/Models/IdentityModels.cs b/ResoursesManager/ResoursesManager/Models/IdentityModels.cs index 758eb24..ff641c6 100644 --- a/ResoursesManager/ResoursesManager/Models/IdentityModels.cs +++ b/ResoursesManager/ResoursesManager/Models/IdentityModels.cs @@ -29,7 +29,7 @@ namespace ResourcesManager.Models } } - public class ApplicationDbContext : IdentityDbContext + public class ApplicationDbContext : IdentityDbContext, IDataContext { public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false) { @@ -37,7 +37,7 @@ namespace ResourcesManager.Models } public DbSet Reservations { get; set; } - public DbSet Resources { get; set; } + public IDbSet Resources { get; set; } public DbSet Notifications { get; set; } public DbSet Statistic { get; set; } @@ -157,4 +157,12 @@ namespace ResourcesManager.Models base.Seed(context); } } + + public interface IDataContext + { + DbSet Reservations { get; set; } + IDbSet Resources { get; set; } + DbSet Notifications { get; set; } + DbSet Statistic { get; set; } + } } \ No newline at end of file diff --git a/ResoursesManager/ResoursesManager/Repositories/BaseRepository.cs b/ResoursesManager/ResoursesManager/Repositories/BaseRepository.cs new file mode 100644 index 0000000..cfb0330 --- /dev/null +++ b/ResoursesManager/ResoursesManager/Repositories/BaseRepository.cs @@ -0,0 +1,46 @@ +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace ResourcesManager.Repositories +{ + public class BaseRepository : IDisposable + { + protected ApplicationDbContext Context; + public BaseRepository(ApplicationDbContext context) + { + Context = context; + } + + public virtual void Save() + { + Context.SaveChanges(); + } + + #region IDisposable Support + private bool disposed = false; + + protected virtual void Dispose(bool disposing) + { + if (!disposed) + { + if (disposing) + { + Context.Dispose(); + } + } + disposed = true; + } + + public void Dispose() + { + if (Context != null) + { + Context.Dispose(); + } + } + #endregion + } +} \ No newline at end of file diff --git a/ResoursesManager/ResoursesManager/Repositories/NotificationRepository.cs b/ResoursesManager/ResoursesManager/Repositories/NotificationRepository.cs new file mode 100644 index 0000000..6d3be78 --- /dev/null +++ b/ResoursesManager/ResoursesManager/Repositories/NotificationRepository.cs @@ -0,0 +1,47 @@ +using ResourcesManager.Interfaces; +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Data.Entity; +using System.Linq; +using System.Web; + +namespace ResourcesManager.Repositories +{ + public class NotificationRepository : BaseRepository, INotificationRepository + { + public NotificationRepository(ApplicationDbContext context) : base(context) { } + + public bool DeleteNotification(int id) + { + var notification = Context.Notifications.Find(id); + Context.Notifications.Remove(notification); + Save(); + return true; + } + + public Notification GetNotificationByID(int id) + { + return Context.Notifications.Find(id); + } + + public IEnumerable GetNotifications() + { + return Context.Notifications; + } + + public bool InsertNotification(Notification notification) + { + Context.Notifications.Add(notification); + Save(); + return true; + } + + public bool UpdateNotification(Notification notification) + { + Context.Entry(notification).State = EntityState.Modified; + Save(); + return true; + } + } +} \ No newline at end of file diff --git a/ResoursesManager/ResoursesManager/Repositories/RescourceRepository.cs b/ResoursesManager/ResoursesManager/Repositories/RescourceRepository.cs new file mode 100644 index 0000000..0e09056 --- /dev/null +++ b/ResoursesManager/ResoursesManager/Repositories/RescourceRepository.cs @@ -0,0 +1,48 @@ +using ResourcesManager.Interfaces; +using ResourcesManager.Models; +using ResourcesManager.Repositories; +using System; +using System.Collections.Generic; +using System.Data.Entity; +using System.Linq; +using System.Web; + +namespace ResourcesManager.Handlers +{ + public class ResourceRepository : BaseRepository, IResourceRepository + { + public ResourceRepository(ApplicationDbContext context): base(context){} + + public bool DeleteResouce(int id) + { + var resource = Context.Resources.Find(id); + Context.Resources.Remove(resource); + Save(); + return true; + } + + public Resource GetResourceByID(int id) + { + return Context.Resources.Find(id); + } + + public IEnumerable GetResouces() + { + return Context.Resources; + } + + public bool InsertResouce(Resource resource) + { + Context.Resources.Add(resource); + Save(); + return true; + } + + public bool UpdateResouce(Resource resouce) + { + Context.Entry(resouce).State = EntityState.Modified; + Save(); + return true; + } + } +} \ No newline at end of file diff --git a/ResoursesManager/ResoursesManager/Repositories/ReservationRepository.cs b/ResoursesManager/ResoursesManager/Repositories/ReservationRepository.cs new file mode 100644 index 0000000..b6a05e6 --- /dev/null +++ b/ResoursesManager/ResoursesManager/Repositories/ReservationRepository.cs @@ -0,0 +1,48 @@ +using ResourcesManager.Interfaces; +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Data.Entity; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ResourcesManager.Repositories +{ + public class ReservationRepository : BaseRepository, IReservationRepository + { + public ReservationRepository(ApplicationDbContext context) : base(context) { } + + public bool DeleteReservation(int id) + { + var reservation = Context.Reservations.Find(id); + Context.Reservations.Remove(reservation); + Save(); + return true; + } + + public Reservation GetReservationByID(int id) + { + return Context.Reservations.Find(id); + } + + public IEnumerable GetReservations() + { + return Context.Reservations; + } + + public bool InsertReservation(Reservation reservation) + { + Context.Reservations.Add(reservation); + Save(); + return true; + } + + public bool UpdateReservation(Reservation reservation) + { + Context.Entry(reservation).State = EntityState.Modified; + Save(); + return true; + } + } +} diff --git a/ResoursesManager/ResoursesManager/Repositories/StatisticRepository.cs b/ResoursesManager/ResoursesManager/Repositories/StatisticRepository.cs new file mode 100644 index 0000000..b6108a7 --- /dev/null +++ b/ResoursesManager/ResoursesManager/Repositories/StatisticRepository.cs @@ -0,0 +1,31 @@ +using ResourcesManager.Interfaces; +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace ResourcesManager.Repositories +{ + public class StatisticRepository : BaseRepository, IStatisticRepository + { + public StatisticRepository(ApplicationDbContext context) : base(context) { } + + public StatisticModel GetStatisticByID(int id) + { + return Context.Statistic.Find(id); + } + + public IEnumerable GetStatistics() + { + return Context.Statistic; + } + + public bool InsertStatistic(StatisticModel statistic) + { + Context.Statistic.Add(statistic); + Save(); + return true; + } + } +} \ No newline at end of file diff --git a/ResoursesManager/ResoursesManager/Repositories/UserRepository.cs b/ResoursesManager/ResoursesManager/Repositories/UserRepository.cs new file mode 100644 index 0000000..84dbdb5 --- /dev/null +++ b/ResoursesManager/ResoursesManager/Repositories/UserRepository.cs @@ -0,0 +1,44 @@ +using ResourcesManager.Interfaces; +using ResourcesManager.Models; +using System; +using System.Collections.Generic; +using System.Data.Entity; +using System.Linq; +using System.Web; + +namespace ResourcesManager.Repositories +{ + public class UserRepository : BaseRepository, IUserRepository + { + public UserRepository(ApplicationDbContext context) : base(context) { } + + public void DeleteUser(string id) + { + var user = Context.Users.Find(id); + Context.Users.Remove(user); + Save(); + } + + public ApplicationUser GetUserByID(string id) + { + return Context.Users.Find(id); + } + + public IEnumerable GetUsers() + { + return Context.Users; + } + + public void InsertUser(ApplicationUser user) + { + Context.Users.Add(user); + Save(); + } + + public void UpdateUser(ApplicationUser user) + { + Context.Entry(user).State = EntityState.Modified; + Save(); + } + } +} \ No newline at end of file diff --git a/ResoursesManager/ResoursesManager/ResourcesManager.csproj b/ResoursesManager/ResoursesManager/ResourcesManager.csproj index f9ef15a..5fa3839 100644 --- a/ResoursesManager/ResoursesManager/ResourcesManager.csproj +++ b/ResoursesManager/ResoursesManager/ResourcesManager.csproj @@ -229,7 +229,18 @@ Global.asax + + + + + + + + + + + @@ -576,7 +587,9 @@ - + + +