示例#1
0
        private QueryResponse <BoardDto> HandleGettingBoard(string userId, UserBoard userBoard)
        {
            QueryResponse <BoardDto> result;

            _userBoardRepository.UpdateBoardTimeVisited(userBoard);
            var board = userBoard.Board;

            board.Lists = board.Lists.Where(x => !x.IsDeleted).ToList();
            foreach (var x in board.Lists)
            {
                x.Cards = x.Cards.Where(c => !c.IsDeleted).ToList();
            }
            var boardDto = _mapper.Map <Board, BoardDto>(board,
                                                         opts => opts.AfterMap((src, dest) => dest.IsOwner = src.OwnerId == userId));

            boardDto.ObfuscatedId = _obfuscator.Obfuscate(boardDto.Id);

            foreach (var boardList in boardDto.Lists)
            {
                foreach (var card in boardList.Cards)
                {
                    card.ObfuscatedId = _obfuscator.Obfuscate(card.Id);
                }
            }

            result = new QueryResponse <BoardDto>
            {
                ResponseDto    = boardDto,
                HttpStatusCode = HttpStatusCode.OK
            };
            return(result);
        }
示例#2
0
        public async Task <MemberDto> ConnectUserWithBoard(AddMemberDto addMemberDto, string userId)
        {
            if (!_boardRepository.IsOwner(addMemberDto.BoardId, userId) ||
                _userBoardRepository.IsMember(addMemberDto.BoardId, addMemberDto.MemberId) ||
                await _userManager.FindByIdAsync(addMemberDto.MemberId) == null)
            {
                return(null);
            }

            UserBoard addedUserBoard;

            if (_userBoardRepository.GetUserBoard(addMemberDto.BoardId, addMemberDto.MemberId) == null)
            {
                var userBoard = new UserBoard
                {
                    BoardId = addMemberDto.BoardId,
                    UserId  = addMemberDto.MemberId
                };
                addedUserBoard = _userBoardRepository.CreateUserBoard(userBoard);
            }
            else
            {
                addedUserBoard = _userBoardRepository.ChangeUserBoardState(addMemberDto.BoardId, addMemberDto.MemberId);
            }
            var result = _mapper.Map <MemberDto>(addedUserBoard.User);

            return(result);
        }
示例#3
0
        //public void Delete(UserBoard data)
        //{
        //    _unitOfWork.Repository<UserBoard>().Delete(data);
        //    _unitOfWork.Save();
        //}

        //public IEnumerable<UserBoard> Get()
        //{
        //    return _unitOfWork.Repository<UserBoard>().Get().ToList();
        //}

        //public IEnumerable<UserBoard> Get(int id)
        //{
        //    return _unitOfWork.Repository<UserBoard>().Get((i) => i.BoardId == id, null , a => a.AspNetUser, b => b.Board).ToList();
        //}

        //public UserBoard GetById(int id)
        //{
        //    return _unitOfWork.Repository<UserBoard>().Get(data => data.Id == id).FirstOrDefault();
        //}
        //public Board GetBoardById(int id)
        //{
        //    return _unitOfWork.Repository<Board>().Get(data => data.Id == id).FirstOrDefault();
        //}

        //public UserBoard GetFirstOrDefault()
        //{
        //    return _unitOfWork.Repository<UserBoard>().Get().FirstOrDefault();
        //}

        public void Insert(UserBoard data)
        {
            data.Id = new Random().Next();

            _unitOfWork.Repository <UserBoard>().Insert(data);
            _unitOfWork.SaveChanges();
        }
 public void UpdateBoardTimeVisited(UserBoard userBoard)
 {
     userBoard.LastTimeVisited = DateTime.UtcNow;
     _context.Attach(userBoard);
     _context.Entry(userBoard).Property(x => x.LastTimeVisited).IsModified = true;
     _context.SaveChanges();
 }
示例#5
0
        public IActionResult Create(Board board)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var newBoard = new Board()
            {
                Name = board.Name
            };

            _unitOfWork.Board.Add(newBoard);
            _unitOfWork.Save();


            var newUserBoard = new UserBoard()
            {
                BoardId = newBoard.Id,
                UserId  = Convert.ToInt32(_userManager.GetUserId(HttpContext.User))
            };

            _unitOfWork.UserBoard.Add(newUserBoard);
            _unitOfWork.Save();

            return(RedirectToAction("Index"));
        }
示例#6
0
        private void LookForMatches(UserBoard player, ITargetBlock <Match> playerBlock)
        {
            foreach (var opponent in _players.Values)
            {
                // Do not match with yourself!
                if (opponent.Username == player.Username)
                {
                    continue;
                }

                // Match with the first person who has the same GameType
                if (opponent.Board.GameTypeId != player.Board.GameTypeId)
                {
                    continue;
                }

                var opponentBlock = _blocks[opponent.Username];

                // Remove opponent from match making.
                Remove(opponent.Username);

                // Remove player from match making.
                Remove(player.Username);

                // Notify both async waiting contexts that a match has been found.
                var playerGoesFirst = FlipCoin();
                playerBlock.Post(new Match(player, opponent, playerGoesFirst));
                opponentBlock.Post(new Match(opponent, player, !playerGoesFirst));

                // Stop searching through the players.
                break;
            }
        }
        public async Task <IActionResult> AddUserToBoard(int id, [FromBody] UserIdAndName value)
        {
            var board = await _dataContext.Boards.Include(x => x.Users).FirstOrDefaultAsync(x => x.Id == id);

            var user = await _dataContext.Users.FirstOrDefaultAsync(x => x.Username == value.Username);

            var existingUsers = board.Users.Select(u => u.UserId);

            if (user != null)
            {
                foreach (var i in existingUsers)
                {
                    if (i == user.Id)
                    {
                        return(NotFound("User already added"));
                    }
                }

                var userBoard = new UserBoard
                {
                    Board = board,
                    User  = user
                };
                board.Users.Add(userBoard);
                _dataContext.SaveChanges();
                return(Ok());
            }
            else
            {
                return(NotFound("User doesent exist"));
            }
        }
示例#8
0
        public IActionResult NewBoard(int userid)
        {
            var model = new UserBoard {
                UserId = userid
            };

            return(PartialView("CreateBoardModalPartial", model));
        }
示例#9
0
        public ActionResult Delete(int id)
        {
            UserBoard userBoard = db.UserBoards.Find(id);
            var       boardId   = userBoard.BoardId;

            db.UserBoards.Remove(userBoard);
            db.SaveChanges();
            return(RedirectToAction("Index", "UserBoards", new { id = boardId }));
        }
 public UserBoard CreateUserBoard(UserBoard userBoard)
 {
     _userBoards.Add(userBoard);
     _context.SaveChanges();
     _context.Entry(userBoard).Reference(x => x.Board).Load();
     _context.Entry(userBoard.Board).Reference(x => x.Owner).Load();
     _context.Entry(userBoard).Reference(x => x.User).Load();
     return(userBoard);
 }
示例#11
0
        public async Task <ActionResult <BoardDTO> > addOrRemoveCollaborators(int boardid, int userid, Boolean add)
        {
            Console.WriteLine("id user envoyé de deleteUser " + userid);
            var board = await _context.Boards.FindAsync(boardid);

            var user = await _context.Users.FindAsync(userid);

            List <Card> authorCard = new List <Card>();

            var boardUser = new UserBoard();

            boardUser.Board = board;
            boardUser.User  = user;
            if (add)
            {
                _context.UserBoards.Add(boardUser);
                _context.SaveChanges();
            }
            else
            {
                Console.WriteLine("nombre de liste envoyé de deleteUser " + board.BoardId);
                if (board.Lists != null)
                {
                    foreach (var l in board.Lists)
                    {
                        if (l.Cards.Count() != 0)
                        {
                            foreach (var c in l.Cards)
                            {
                                if (c.Collaborators.Count() != 0)
                                {
                                    foreach (var uc in c.CardUsers)
                                    {
                                        if (uc.User == user)
                                        {
                                            _context.UserCards.Remove(uc);
                                        }
                                    }
                                }
                                if (c.Author == user)
                                {
                                    authorCard.Add(c);
                                }
                            }
                        }
                    }
                }
                foreach (var ac in authorCard)
                {
                    await this.cardsControlleur.Delete(ac.CardId);
                }
                _context.UserBoards.Remove(boardUser);
                _context.SaveChanges();
            }
            return(board.ToDTO());
        }
示例#12
0
        //[ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "BoardId,UserId")] UserBoard userBoard)
        {
            if (ModelState.IsValid)
            {
                _service.Insert(userBoard);
                return(RedirectToAction("Index", new { id = userBoard.BoardId }));
            }

            return(new HttpNotFoundResult("Failed"));
        }
示例#13
0
 public void CompleteSelection(int distance, string dir)
 {
     selection          = UserBoard.GetColumn(anchorLocation, distance, dir);
     selectionDirection = dir;
     board.ResetPieces(potentialSelection);
     potentialSelection.Clear();
     board.Select(selection);
     potentialMovesSumito = board.GetMoves(selection, selectionDirection);
     // Debug.Log(potentialMoves.Count);
     ChangeButtonsStatus(true);
 }
示例#14
0
        public async Task RemoveBoard(UserBoard board)
        {
            var images = _context.BoardImages.Where(c => c.BoardId == board.Id);

            if (images != null && images.Count() > 0)
            {
                _context.BoardImages.RemoveRange(images);
            }
            _context.UserBoards.Remove(board);
            await _context.SaveChangesAsync();
        }
示例#15
0
        /// <summary>
        /// Search the logged in user's Boards
        /// </summary>
        /// <returns></returns>
        public UserBoard SearchBoardsAsync(string query)
        {
            UserBoard SearchBoard  = new UserBoard();
            string    fields       = "id,name,url,image,creator,created_at,counts,privacy,reason,description";
            JObject   httpResponse = null;

            JObject payload = new JObject();

            httpResponse = this._httpClient.GetData(this._domain + _version + "/me/search/boards/?fields=" + fields + "&query=" + query, "GET", this._accessToken);
            SearchBoard  = JsonConvert.DeserializeObject <UserBoard>(httpResponse["data"].ToString());
            return(SearchBoard);
        }
示例#16
0
        //[ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "BoardId,UserId")] UserBoard userBoard)
        {
            userBoard.Id = new Random().Next();
            if (ModelState.IsValid)
            {
                db.UserBoards.Add(userBoard);
                db.SaveChanges();
                return(RedirectToAction("Index", new { id = userBoard.BoardId }));
            }

            return(new HttpNotFoundResult("Failed"));
        }
示例#17
0
        public UserBoard GetBoard(long board)
        {
            UserBoard userboard    = new UserBoard();
            string    fields       = "id,name,url,image,creator,created_at,counts,privacy,reason,description";
            JObject   httpResponse = null;

            JObject payload = new JObject();

            httpResponse = this._httpClient.GetData(this._domain + _version + "/boards/" + board + "/?fields=" + fields, "GET", this._accessToken);
            userboard    = JsonConvert.DeserializeObject <UserBoard>(httpResponse["data"].ToString());
            return(userboard);
        }
示例#18
0
        /// <summary>
        /// Edit a Board
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>

        public UserBoard EditBoard(long boardid, string boardname, string boarddescription)
        {
            UserBoard boardcreate  = new UserBoard();
            JObject   httpResponse = null;
            JObject   payload      = new JObject();

            payload.Add(new JProperty("name", boardname));
            payload.Add(new JProperty("description", boarddescription));
            httpResponse = this._httpClient.UpdateData(this._domain + _version + "/boards/" + boardid + "/? ", "PATCH", payload.ToString(), this._accessToken);
            boardcreate  = JsonConvert.DeserializeObject <UserBoard>(httpResponse["data"].ToString());
            return(boardcreate);
        }
示例#19
0
 public int Create(UserBoard userBoard)
 {
     userBoard.Id = new Random().Next();
     try
     {
         db.UserBoards.Add(userBoard);
         db.SaveChanges();
         return(RetunMsg_Success);
     }
     catch
     {
         return(RetunMsg_Failed);
     }
 }
示例#20
0
        /// <summary>
        /// Create a Board
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public UserBoard CreateBoard(string name)
        {
            UserBoard boardcreate  = new UserBoard();
            JObject   httpResponse = null;
            JObject   payload      = new JObject();

            payload.Add(new JProperty("name", name));
            httpResponse = this._httpClient.PostData(this._domain + _version + "/boards/?", "POST", payload.ToString(), this._accessToken);
            string         response = "";
            CreateResponse Response = new CreateResponse();

            boardcreate = JsonConvert.DeserializeObject <UserBoard>(httpResponse["data"].ToString());
            return(boardcreate);
        }
示例#21
0
        private void FireOpponentMissileEasy()
        {
            // fire opponent missile
            bool done = false;

            while (done == false)
            {
                int rowNumber            = rand.Next(Battlefield.FIELD_SIZE);
                int columnNumber         = rand.Next(Battlefield.FIELD_SIZE);
                FireMissileStatus status = UserBoard.FireMissile(columnNumber, rowNumber);
                if (status == FireMissileStatus.Hit || status == FireMissileStatus.Miss)
                {
                    done = true;
                }
            }
        }
示例#22
0
        public int Delete(int id, out int boardId)
        {
            UserBoard userBoard = db.UserBoards.Find(id);

            boardId = userBoard.BoardId;
            try
            {
                db.UserBoards.Remove(userBoard);
                db.SaveChanges();
                return(RetunMsg_Success);
            }
            catch
            {
                return(RetunMsg_Failed);
            }
        }
示例#23
0
        public async Task <Match> FindMatchAsync(UserBoard player)
        {
            if (!_players.TryAdd(player.Username, player))
            {
                return(null);
            }

            var block = new WriteOnceBlock <Match>(null);

            if (!_blocks.TryAdd(player.Username, block))
            {
                _players.Remove(player.Username);
                return(null);
            }

            LookForMatches(player, block);
            return(await block.ReceiveAsync());
        }
示例#24
0
        public void CreateNewBoard(Board board, string userName)
        {
            var currentUserId = Context.Users.Single(x => x.UserName == userName).Id;

            Context.Boards.Add(board);
            Context.SaveChanges();

            var userBoard = new UserBoard()
            {
                BoardId = board.Id,
                UserId  = currentUserId
            };

            Context.UserBoards.Add(userBoard);
            Context.SaveChanges();

            AddDefaultColumsToBoard(board.Id);
        }
示例#25
0
        public async Task <UserBoard> AddUserBoard(int id, UserBoard board)
        {
            var request = new HttpRequestMessage(new HttpMethod("POST"),
                                                 _remoteServiceBaseUrl + "/userboards");

            request.Content = new StringContent(JsonConvert.SerializeObject(board),
                                                Encoding.UTF8, "application/json");

            try
            {
                var response = await _httpClient.SendAsync(request);

                return(await response.Content.ReadAsAsync <UserBoard>());
            }
            catch (Exception e)
            {
                return(null);
            }
        }
示例#26
0
        public async Task <IActionResult> AddBoardorChannel(int id, bool isChannel, string name = "Новая доска/канал", string descr = "Здесь должно было быть описание")
        {
            if (isChannel)
            {
                var channel = new Channel()
                {
                    UserId = id, Name = name, Description = descr, Date = DateTime.Now
                };
                var createdChannel = await _gateway.AddUserChannel(id, channel);

                if (createdChannel != null)
                {
                    var fullchannel = new Models.ChannelWithImages()
                    {
                        channel = createdChannel
                    };
                    return(View("~/Views/Profiles/Channel.cshtml", fullchannel));
                }
                _logger.LogInformation($"%%% couldnt add the channel");
                return(BadRequest());
            }
            else
            {
                var board = new UserBoard()
                {
                    UserId = id, BoardName = name, Description = descr
                };
                var createdBoard = await _gateway.AddUserBoard(id, board);

                if (createdBoard != null)
                {
                    var fullboard = new Models.BoardWithImages()
                    {
                        board = createdBoard
                    };
                    return(View("~/Views/Profiles/Board.cshtml", fullboard));
                }
                _logger.LogInformation($"%%% couldnt add the board");
                return(BadRequest());
            }
        }
示例#27
0
        public async Task <BoardDTO> CreateBoardAsync(BoardDTO boardDTO)
        {
            var board = new Board
            {
                Title = boardDTO.Title,
                Date  = DateTime.UtcNow
            };

            db.Boards.Add(board);
            await db.SaveChangesAsync();

            foreach (UserDTO user in boardDTO.Participants)
            {
                var userBoard = new UserBoard
                {
                    UserId  = user.Id,
                    BoardId = board.Id
                };
                db.UserBoards.Add(userBoard);
            }
            await db.SaveChangesAsync();

            return(db.Boards
                   .Include(b => b.UserBoards)
                   .ThenInclude(ub => ub.User)
                   .Where(b => b.Id == board.Id)
                   .Select(b => new BoardDTO
            {
                Id = b.Id,
                Title = b.Title,
                Date = b.Date,
                Participants = b.UserBoards.Select(ub => new UserDTO
                {
                    Id = ub.UserId,
                    Name = ub.User.Name
                })
                               .ToList()
            })
                   .FirstOrDefault());
        }
示例#28
0
        private UserBoard InitializeUserBoard(FirstBoardDto boardDto, string userId)
        {
            var hash      = Guid.NewGuid().ToString("N");
            var userBoard = new UserBoard
            {
                UserId = userId,
                Board  = new Board
                {
                    Name    = boardDto.BoardName,
                    OwnerId = userId,
                    Lists   = new List <List>(),
                    Hash    = hash
                }
            };
            var result = TryInitializeFirstList(boardDto, out List list);

            if (result)
            {
                userBoard.Board.Lists.Add(list);
            }
            return(userBoard);
        }
示例#29
0
        public void FireOpponentMissile()
        {
            if (EasyMode == true)
            {
                FireOpponentMissileEasy();
            }
            else
            {
                FireOpponentMissileDifficult();
            }

            // check if the game is done
            if (UserBoard.AreAllShipsSunken())
            {
                GameOver = true;
                MessageBox.Show("Computer won the game!", "Game Over", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else if (ComputerBoard.AreAllShipsSunken())
            {
                GameOver = true;
                MessageBox.Show("You won the game!", "Game Over", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
示例#30
0
        /// <summary>
        /// Follow a Board
        /// </summary>
        /// <param name="BoardId"></param>
        /// <returns></returns>
        ///

        public string FollowBoard(long BoardId)
        {
            UserBoard boardcreate  = new UserBoard();
            JObject   httpResponse = null;
            JObject   payload      = new JObject();

            payload.Add(new JProperty("board", BoardId));
            httpResponse = this._httpClient.PostData(this._domain + _version + "/me/following/boards/?", "POST", payload.ToString(), this._accessToken);
            string         response = "";
            CreateResponse Response = new CreateResponse();

            Response = JsonConvert.DeserializeObject <CreateResponse>(httpResponse.ToString());
            response = Response.StatusDescription;
            if (Response.StatusCode == 200)
            {
                return("Created Successfully");
            }

            else
            {
                return(response);
            }
        }