Example #1
0
        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 }));
            }
        }
Example #3
0
        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));
            }
        }
Example #4
0
        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));
            }
        }
Example #5
0
        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);
            }
        }