예제 #1
0
        public IActionResult EditCardPosition([FromBody] EditCardPositionDto cardDto)
        {
            var userId     = User.GetUserId();
            var editedCard = _cardService.EditCardPosition(cardDto, userId);

            if (editedCard == null)
            {
                return(NotFound());
            }
            return(NoContent());
        }
예제 #2
0
        public CardDto EditCardPosition(EditCardPositionDto cardDto, string userId)
        {
            if (!_cardRepository.IsOwner(cardDto.Id, userId))
            {
                return(null);
            }
            if (!_listRepository.IsMember(cardDto.ListId, userId) || !_listRepository.IsMember(cardDto.NewListId, userId))
            {
                return(null);
            }

            var cardToEdit = _cardRepository.GetCard(cardDto.Id);

            if (cardToEdit.ListId != cardDto.ListId)
            {
                return(null);
            }

            List <Card> cardsWithPositionToUpdate;

            if (cardDto.ListId != cardDto.NewListId)
            {
                cardsWithPositionToUpdate = GetCardsWithPositionToDecrease(cardToEdit.ListId, cardToEdit.Position);
                cardsWithPositionToUpdate.AddRange(GetCardsWithPositionToIncrease(cardDto.NewListId, cardDto.NewPosition - 1));
            }
            else
            {
                cardsWithPositionToUpdate = GetCardsWithPositionToUpdate(cardDto.ListId, cardToEdit.Position, cardDto.NewPosition);
            }

            cardToEdit.ListId   = cardDto.NewListId;
            cardToEdit.Position = cardDto.NewPosition;
            cardsWithPositionToUpdate.Add(cardToEdit);
            _cardRepository.UpdateCardsPosition(cardsWithPositionToUpdate);

            var result = _mapper.Map <CardDto>(cardToEdit);

            return(result);
        }