public void UpdateCardPosition(UpdateCardPositionDto updateCardPositionDto)
        {
            using (var db = new PGSBoardContext())
            {
                if (updateCardPositionDto.ListId == updateCardPositionDto.OldListId)                                             // first case when you sort cart in the same list
                {
                    var currentListCard          = db.Cards.Where(card => card.ListId == updateCardPositionDto.ListId).ToList(); // take whole card from list, just one call to db
                    var cardToUpdate             = currentListCard.Single(card => card.Id == updateCardPositionDto.CardId);      // take  card to Update (card which we drage and drop)
                    var cardChangedAutomatically =                                                                               // select card which have to change position after our drag and drop move
                                                   currentListCard.Single(card => card.PositionCardId == updateCardPositionDto.PositionCard);

                    cardChangedAutomatically.PositionCardId = cardChangedAutomatically.PositionCardId > cardToUpdate.PositionCardId // 2 cases: First, if you take card from up to down then position card which have to change  will be smaller about -1
                        ? cardChangedAutomatically.PositionCardId - 1                                                               // Second, if you take card from down to up, then position card which have to change will be larger about +1
                        : cardChangedAutomatically.PositionCardId + 1;
                    cardToUpdate.PositionCardId = updateCardPositionDto.PositionCard;                                               // update position card which we drag and drop
                    db.SaveChanges();
                }
                else // second case when you sort( drag some card) to another list
                {
                    var cards         = db.Cards.Where(card => card.ListId == updateCardPositionDto.ListId || card.ListId == updateCardPositionDto.OldListId).ToList(); //take card from two lists
                    var cardToUpdate  = cards.Single(card => card.Id == updateCardPositionDto.CardId); // take our card which we drag and drop
                    var prevCardsList =
                        cards
                        .Where(card => card.ListId == updateCardPositionDto.OldListId && //take old list, where was our card
                               card.PositionCardId > cardToUpdate.PositionCardId && // take all card which had larger position
                               card.Id != updateCardPositionDto.CardId).ToList(); // don't take card which we drag and drop
                    var nextCardsList =
                        cards
                        .Where(card => card.ListId == updateCardPositionDto.ListId && // take new list, where we drop our card
                               card.PositionCardId >= updateCardPositionDto.PositionCard).ToList();

                    foreach (var prevCard in prevCardsList)
                    {
                        prevCard.PositionCardId = prevCard.PositionCardId - 1; // old list, reduce position about -1
                    }

                    foreach (var nextCard in nextCardsList)
                    {
                        nextCard.PositionCardId = nextCard.PositionCardId + 1; // new list increase position card about 1
                    }
                    cardToUpdate.ListId         = updateCardPositionDto.ListId;
                    cardToUpdate.PositionCardId = updateCardPositionDto.PositionCard; //update dropped position card

                    db.SaveChanges();
                }
            }
        }
Exemple #2
0
 public int DeleteCard(DeleteCardDto dto)
 {
     using (var db = new PGSBoardContext())
     {
         var cardToRemove = db.Cards.Single(card => card.Id == dto.CardId);
         db.Cards.Remove(cardToRemove);
         return(db.SaveChanges() == 1 ? dto.CardId : 0);
     }
 }
 public int DeleteList(DeleteListDto deleteListDto)
 {
     using (var db = new PGSBoardContext())
     {
         var listToRemove = db.Lists.Single(list => list.Id == deleteListDto.ListId);
         db.Lists.Remove((listToRemove));
         return(db.SaveChanges() == 1 ? deleteListDto.ListId : 0);
     }
 }
 public int DeleteBoard(DeleteBoardDto deleteBoardDto)
 {
     using (var db = new PGSBoardContext())
     {
         var boardToRemove = db.Boards.Single(board => board.Id == deleteBoardDto.Id);
         db.Boards.Remove(boardToRemove);
         return(db.SaveChanges() == 1 ? deleteBoardDto.Id : 0);
     }
 }
Exemple #5
0
        public void AddList(CreateListDto dto)
        {
            var list = new List
            {
                Name    = dto.Name,
                BoardId = dto.BoardId
            };

            using (var db = new PGSBoardContext())
            {
                db.Lists.Add(list);
                db.SaveChanges();
            }
        }
Exemple #6
0
        public void AddBoard(CreateBoardFormDto dto)
        {
            var board = new Board
            {
                Name        = dto.Name,
                Description = dto.Description
            };

            using (var db = new PGSBoardContext())
            {
                db.Boards.Add(board);
                db.SaveChanges();
            }
        }
Exemple #7
0
        public void AddCard(CreateCardDto dto)
        {
            var card = new Card
            {
                Name        = dto.Name,
                Description = dto.Description,
                ListId      = dto.ListId
            };

            using (var db = new PGSBoardContext())
            {
                db.Cards.Add(card);
                db.SaveChanges();
            }
        }
        public void ChangePositionCardBeforeDelete(DeleteCardDto dto) // reduce position cards after delete
        {
            using (var db = new PGSBoardContext())
            {
                var cards        = db.Cards.Where(card => card.ListId == dto.ListId || card.Id == dto.CardId).ToList();
                var cardToDelete = cards.Single(card => card.Id == dto.CardId);
                var cardToUpdate = cards.Where(card => card.Id != dto.CardId && card.PositionCardId > cardToDelete.PositionCardId).ToList();

                foreach (var card in cardToUpdate)
                {
                    card.PositionCardId = card.PositionCardId - 1;
                }
                db.SaveChanges();
            }
        }