public async Task <ActionResult <CardViewDTO> > MoveCard([FromBody] CardViewDTO card)
        {
            Guid userId = GetUserId();
            var  result = await _cardsService.Move(card, userId);

            return(Ok(result));
        }
        public async Task SwitchCards(int prevPosition, CardViewDTO card)
        {
            int currentPosition = card.SortBy;

            if (currentPosition < prevPosition)
            {
                var result = await _cardRepository
                             .GetAllWithSkip(card.ColumnId, currentPosition);

                for (int i = 0; i < result.Count; i++)
                {
                    if (result[i].SortBy < prevPosition)
                    {
                        result[i].SortBy++;
                        await _cardRepository.Update(result[i]);
                    }
                }
            }
            else
            {
                var result = await _cardRepository
                             .GetAllWithSkip(card.ColumnId, prevPosition + 1);

                result = result
                         .Take(currentPosition - prevPosition)
                         .ToList();

                for (int i = 0; i < result.Count; i++)
                {
                    result[i].SortBy--;
                    await _cardRepository.Update(result[i]);
                }
            }
            await db.SaveChangesAsync();
        }
        public async Task <CardViewDTO> Move(CardViewDTO movedCard, Guid userId)
        {
            var validationResult = _cardViewValidator.Validate(movedCard);

            if (!validationResult.IsValid)
            {
                throw new Exception(validationResult.ToString());
            }
            else
            {
                Card updatedCard = await _cardRepository.GetOne(movedCard.Id);

                Column column = await _columnRepository.GetOne(updatedCard.ColumnId);

                await _sortService.SwitchCards(updatedCard.SortBy, movedCard);

                updatedCard.SortBy      = movedCard.SortBy;
                updatedCard.UpdatedDate = DateTime.Now;

                var updateResult = await _cardRepository.Update(updatedCard);

                var historyObject = await _historyService.CreateHistoryObject(
                    UserActions.MoveCard,
                    userId,
                    updatedCard.Title,
                    null,
                    movedCard.ColumnId,
                    column.BoardId
                    );

                var mapperResult = _mapper.Map <Card, CardViewDTO>(updateResult);
                return(mapperResult);
            }
        }
        public async Task MoveOnNewColumn(CardViewDTO card)
        {
            int currentPosition = card.SortBy;
            var result          = await _cardRepository.GetAllWithSkip(card.ColumnId, currentPosition);

            for (int i = 0; i < result.Count; i++)
            {
                result[i].SortBy++;
            }
            await db.SaveChangesAsync();
        }