Пример #1
0
        public ActionResult Respond(InviteResponseViewModel vm)
        {
            /// TODO: Handle Response.Success == false
            vm.InviteUser = _scrumInviteService.Respond(vm.Id, vm.Email, vm.Key, vm.Accept).Response;

            return(View(vm));
        }
        public IActionResult SendInviteAnswer([FromBody] InviteResponseViewModel model)
        {
            //Получаем из токена username
            var username = User.Identity.Name;
            int group_id = model.GroupId;

            //Ищем администратора
            var user = _context.Users
                       .Include(u => u.UserGroups)
                       .ThenInclude(ug => ug.Group)
                       .FirstOrDefault(u => u.Username == username);

            //Ищем данную группу
            var group = _context.Groups
                        .Include(g => g.UserGroups)
                        .ThenInclude(ug => ug.User)
                        .FirstOrDefault(g => g.Id == group_id);

            //Если все существует
            if (user != null && group != null)
            {
                var request = _context.Invites
                              .Include(ppr => ppr.User)
                              .Include(ppr => ppr.Group)
                              .FirstOrDefault(ppr => ppr.Group.Id == group_id && ppr.User.Username == user.Username);


                //Если такой запрос существует, то принимаем либо отвергаем запрос
                if (request != null)
                {
                    var accepted = model.Accepted;

                    if (accepted)
                    {
                        group.UserGroups.Add(new UserGroup
                        {
                            User  = user,
                            Group = group
                        });
                        _context.SaveChanges();
                    }

                    //Удаляем запрос
                    _context.Invites.Remove(request);
                    _context.SaveChanges();
                }
                else
                {
                    Unauthorized();
                }

                return(Ok());
            }
            else
            {
                return(Unauthorized());
            }
        }