public ActionResult <MissionTaskViewModel> GetSpecificMission(int missionId) { try { if (!unitOfWork.MissionRepository.Exists(missionId)) { throw new ArgumentException(ErrorMessage.MissionDoesNotExistError); } Mission mission = unitOfWork.MissionRepository.GetById(missionId); List <TaskViewModel> tasksViewModelList = GetAllTasks(mission.MissionId); List <UserViewModel> usersVM = new List <UserViewModel>(); List <MissionMember> missionMembers = unitOfWork.MissionMemberRepository.GetAllByMissionId(missionId); foreach (MissionMember missionMember in missionMembers) { User userInMission = unitOfWork.UserRepository.GetById(missionMember.UserId); UserViewModel userVm = new UserViewModel { UserId = userInMission.UserId, UserName = userInMission.UserName, EMail = userInMission.EMail }; usersVM.Add(userVm); } MissionTaskViewModel missionVM = new MissionTaskViewModel { MissionName = mission.MissionName, MissionId = mission.MissionId, MissionColor = mission.Color, StartDate = mission.Start, Description = mission.Description, Customer = unitOfWork.CustomerRepository.GetById(mission.CustomerId).Name, IsMember = true, Tasks = tasksViewModelList, Users = usersVM }; return(missionVM); } catch (ArgumentException e) { return(StatusCode(StatusCodes.Status400BadRequest, e.Message)); } }
public ActionResult <List <MissionTaskViewModel> > GetFavoriteMissions() { try { List <FavoriteMission> favoriteMissionList = unitOfWork.FavoriteMissionRepository.GetFavoriteMissionsById(user.UserId); List <MissionTaskViewModel> missionTaskViewModel = new List <MissionTaskViewModel>(); List <TaskViewModel> tasksViewModelList; for (int i = 0; i < favoriteMissionList.Count; i++) { Mission mission = unitOfWork.MissionRepository.GetById(favoriteMissionList[i].MissionId); tasksViewModelList = new List <TaskViewModel>(); foreach (Task task in unitOfWork.TaskRepository.GetAllByMissionId(mission.MissionId)) { TaskViewModel taskVM = new TaskViewModel { TaskId = task.TaskId, MissionId = task.MissionId, UserId = task.UserId, Name = task.Name, Description = task.Description, }; tasksViewModelList.Add(taskVM); } MissionTaskViewModel missionsVM = new MissionTaskViewModel { MissionName = mission.MissionName, MissionId = mission.MissionId, MissionColor = mission.Color, Description = mission.Description, Customer = unitOfWork.CustomerRepository.GetById(mission.CustomerId).Name, Tasks = tasksViewModelList }; missionTaskViewModel.Add(missionsVM); } return(missionTaskViewModel); } catch (Exception) { return(StatusCode(500, new { message = ErrorMessage.DatabaseCommunicationError })); } }
public ActionResult <List <MissionTaskViewModel> > GetUserMissions(int taskId) { try { List <MissionMember> missionMemberList = unitOfWork.MissionMemberRepository.GetAllByUserId(user.UserId); List <MissionTaskViewModel> missionTaskViewModel = new List <MissionTaskViewModel>(); List <TaskViewModel> tasksViewModelList; if (taskId != 0) { Task taskSelected = unitOfWork.TaskRepository.GetById(taskId); int idx = missionMemberList.FindIndex(f => f.MissionId == taskSelected.MissionId); if (idx < 0) { missionMemberList.Add(new MissionMember { UserId = user.UserId, MissionId = (int)taskSelected.MissionId }); } } for (int i = 0; i < missionMemberList.Count; i++) { Mission mission = unitOfWork.MissionRepository.GetById(missionMemberList[i].MissionId); tasksViewModelList = GetAllTasks(mission.MissionId); MissionTaskViewModel missionsVM = new MissionTaskViewModel { MissionName = mission.MissionName, MissionId = mission.MissionId, MissionColor = mission.Color, StartDate = mission.Start, Description = mission.Description, Customer = unitOfWork.CustomerRepository.GetById(mission.CustomerId).Name, IsMember = true, Tasks = tasksViewModelList }; missionTaskViewModel.Add(missionsVM); } return(missionTaskViewModel); } catch (Exception) { return(StatusCode(500, ErrorMessage.DatabaseCommunicationError)); } }
public ActionResult <IEnumerable <MissionTaskViewModel> > GetAllMissionsBySearchString(string searchString) { try { List <MissionTaskViewModel> missionTasksViewModelList = new List <MissionTaskViewModel>(); if (searchString.Trim().Length == 0) { return(missionTasksViewModelList); } string lowerCaseSearchString = searchString.ToLower(); List <Mission> missionList = unitOfWork.MissionRepository.Search <Mission>(x => x.MissionName.ToLower(), lowerCaseSearchString); List <Customer> customerList = unitOfWork.CustomerRepository.Search <Customer>(x => x.Name.ToLower(), lowerCaseSearchString); List <Mission> missionsLinkedToCustomerID = new List <Mission>(); foreach (var customer in customerList) { List <Mission> allByCustomerId = unitOfWork.MissionRepository.GetAllByCustomerId(customer.CustomerId); missionsLinkedToCustomerID.Concat(allByCustomerId); } foreach (var missionMission in missionList) { foreach (var customerMission in missionsLinkedToCustomerID) { if (missionMission.MissionId == customerMission.MissionId) { missionList.Remove(missionMission); } } } missionList.Concat(missionsLinkedToCustomerID); List <MissionMember> mmList = unitOfWork.MissionMemberRepository.GetAllByUserId(user.UserId); foreach (var mission in missionList) { MissionTaskViewModel missionsVM = new MissionTaskViewModel { MissionName = mission.MissionName, MissionId = mission.MissionId, MissionColor = mission.Color, StartDate = mission.Start, Description = mission.Description, Customer = unitOfWork.CustomerRepository.GetById(mission.CustomerId).Name, Tasks = GetAllTasks(mission.MissionId), IsMember = false, }; if (mmList.FirstOrDefault(n => n.MissionId == mission.MissionId) != null) { missionsVM.IsMember = true; } ; missionTasksViewModelList.Add(missionsVM); } return(missionTasksViewModelList); } catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError, ErrorMessage.DatabaseCommunicationError)); } }
public void GetUserMissions_Validation_Test(int id, bool exists, ActionResult <List <MissionTaskViewModel> > expected, int expCode) { //Arrange User dbUser = new User { UserId = 1, UserName = "******", Password = "******", EMail = "*****@*****.**" }; Mission dbMission = new Mission { Created = new DateTime(2020, 8, 5), Description = "Project1 for DHL", Finished = null, MissionName = "DHL Project1", Color = "#F0D87B", Start = new DateTime(2020, 8, 6), Status = 1, UserId = 1, CustomerId = 1 }; Task dbTask = new Task { UserId = 1, MissionId = 1, Status = 0, ActualHours = null, Created = new DateTime(2020, 10, 5), Description = "DHL Project 1 Task1", EstimatedHour = 8.30, Invoice = InvoiceType.Invoicable, Name = "Task1 DHL Project1", Start = new DateTime(2020, 10, 6), Finished = null }; TaskViewModel dbTaskViewModel = new TaskViewModel(); MissionTaskViewModel dbMissionTaskViewModel = new MissionTaskViewModel(); Customer dbCustomer = new Customer { Name = "DHL", Created = new DateTime(2020, 8, 5) }; Mock <IUserRepository> userRepoMock = new Mock <IUserRepository>(); userRepoMock.Setup(u => u.GetById(It.IsAny <int>())).Returns(dbUser); Mock <IMissionRepository> missionRepoMock = new Mock <IMissionRepository>(); missionRepoMock.Setup(m => m.GetById(It.IsAny <int>())).Returns(dbMission); Mock <ITaskRepository> taskRepoMock = new Mock <ITaskRepository>(); taskRepoMock.Setup(t => t.GetById(It.IsAny <int>())).Returns(dbTask); taskRepoMock.Setup(t => t.Exists(It.IsAny <int>())).Returns(exists); Mock <ICustomerRepository> customerRepoMock = new Mock <ICustomerRepository>(); customerRepoMock.Setup(c => c.GetById(It.IsAny <int>())).Returns(dbCustomer); Mock <IMissionMemberRepository> missionMemberRepoMock = new Mock <IMissionMemberRepository>(); Mock <IUnitOfWork> mockUOF = new Mock <IUnitOfWork>(); mockUOF.Setup(uow => uow.UserRepository).Returns(userRepoMock.Object); mockUOF.Setup(uow => uow.MissionRepository).Returns(missionRepoMock.Object); mockUOF.Setup(uow => uow.TaskRepository).Returns(taskRepoMock.Object); mockUOF.Setup(uow => uow.CustomerRepository).Returns(customerRepoMock.Object); mockUOF.Setup(uow => uow.MissionMemberRepository).Returns(missionMemberRepoMock.Object); var controller = new MissionController(mockUOF.Object, httpContextAccessorMock); //Act var result = controller.GetUserMissions(id); //Assert if (expected.GetType() != StatusCodes.Status500InternalServerError.GetType()) { Assert.IsType(expected.GetType(), result); } else { Assert.Equal(expCode, (result.Result as StatusCodeResult).StatusCode); } }