예제 #1
0
        public async Task <ActionResult> ConfirmInvite(int userId, int projectId, string code)
        {
            var userDTO = await _authorizationService.FindByIdAsync(userId.ToString());

            if (_authorizationService.IsTokenExpired(userDTO, code))
            {
                return(View("CrashedLink"));
            }
            var projectViewModel = _mapper.Map <ProjectViewModel>(_projectService.GetProjectById(projectId));

            projectViewModel.RoleInProject = BLL.Enum.RoleInProjectEnum.Member;

            ViewBag.ActionDetermination = "Edit";
            if (_authorizationService.IsProjectMember(userId, projectId))
            {
                ViewBag.ActionResult = "You are already a member of this project";
                return(View("Edit", projectViewModel));
            }
            var projectAddedViewModel = _mapper.Map <ProjectViewModel>(_projectService.AddProjectMember(userId, projectId));

            projectAddedViewModel.RoleInProject = BLL.Enum.RoleInProjectEnum.Member;

            // Получаем контекст хаба
            var context =
                Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext <InviteNotificationHub>();

            var ss = context.Clients.All as List <string>;

            // отправляем сообщение
            context.Clients.All.displayMessage(userDTO.UserName + " joined to #" + projectId + " project");

            ViewBag.ActionResult = "You have joined to project just now";
            return(View("Edit", projectAddedViewModel));
        }