public Area Add(Area area)
        {
            using (var db = new CardsDBContext())
            {
                var result = db.Areas.Add(area);
                db.SaveChanges();

                return result;
            }
        }
        public CardActivity Add(CardActivity cardActivity)
        {
            using (var db = new CardsDBContext())
            {
                var result = db.CardActivities.Add(cardActivity);
                db.SaveChanges();

                return result;
            }
        }
        public Card Add(Card card)
        {
            using (var db = new CardsDBContext())
            {
                if (card.TfsID != 0 && db.Cards.FirstOrDefault(item => item.TfsID == card.TfsID) != null)
                {
                    return null;
                }

                var result = db.Cards.Add(card);
                db.SaveChanges();

                return result;
            }
        }
        public Label Add(Label label)
        {
            using (var db = new CardsDBContext())
            {
                var existingItem = db.Labels.FirstOrDefault(item => item.Name == label.Name);

                if (existingItem == null)
                {
                    var result = db.Labels.Add(label);
                    db.SaveChanges();

                    return result;
                }
                else
                {
                    return null;
                }
            }
        }
        public Label Update(Label label)
        {
            using (var db = new CardsDBContext())
            {
                var labelToUpdate = db.Labels.FirstOrDefault(item => item.ID == label.ID);
                var existingLabel = db.Labels.FirstOrDefault(item => item.Name == label.Name);

                if (labelToUpdate != null && existingLabel != null)
                {
                    labelToUpdate.Name = label.Name;
                    labelToUpdate.ColorCode = label.ColorCode;
                    labelToUpdate.ModifiedDate = label.ModifiedDate;
                    labelToUpdate.ModifiedUser = label.ModifiedUser;

                    db.SaveChanges();

                    return labelToUpdate;
                }
                else
                {
                    return null;
                }
            }
        }
        public Card Update(Card card)
        {
            using (var db = new CardsDBContext())
            {
                var cardToUpdate = db.Cards.FirstOrDefault(item => item.ID == card.ID);

                if (cardToUpdate != null)
                {
                    cardToUpdate.Name         = card.Name;
                    cardToUpdate.Description  = card.Description;
                    cardToUpdate.TfsID        = card.TfsID;
                    cardToUpdate.AreaID       = card.AreaID;
                    cardToUpdate.ModifiedDate = card.ModifiedDate;
                    cardToUpdate.ModifiedUser = card.ModifiedUser;
                    cardToUpdate.AssignedTo   = card.AssignedTo;

                    db.SaveChanges();

                    return cardToUpdate;
                }
                else
                {
                    return null;
                }
            }
        }
        public Area Update(Area area)
        {
            using (var db = new CardsDBContext())
            {
                var areaToUpdate = db.Areas.FirstOrDefault(item => item.ID == area.ID);

                if (areaToUpdate != null)
                {
                    areaToUpdate.Name         = area.Name;
                    areaToUpdate.ModifiedDate = area.ModifiedDate;
                    areaToUpdate.ModifiedUser = area.ModifiedUser;

                    db.SaveChanges();

                    return areaToUpdate;
                }
                else
                {
                    return null;
                }
            }
        }
        public void RemoveLabel(Label label)
        {
            using (var db = new CardsDBContext())
            {
                var labelToRemove = db.Labels.FirstOrDefault(item => item.ID == label.ID);

                if (labelToRemove != null)
                {
                    labelToRemove.ModifiedDate = label.ModifiedDate;
                    labelToRemove.ModifiedUser = label.ModifiedUser;
                    labelToRemove.Active       = false;

                    db.SaveChanges();
                }
            }
        }
        public void RemoveCard(Card card)
        {
            using (var db = new CardsDBContext())
            {
                var cardToUpdate = db.Cards.FirstOrDefault(item => item.ID == card.ID);

                if (cardToUpdate != null)
                {
                    cardToUpdate.ModifiedDate = card.ModifiedDate;
                    cardToUpdate.ModifiedUser = card.ModifiedUser;
                    cardToUpdate.Active = false;

                    db.SaveChanges();
                }
            }
        }
        public void RemoveArea(Area area)
        {
            using (var db = new CardsDBContext())
            {
                var itemToDelete = db.Areas.FirstOrDefault(item => item.ID == area.ID);

                itemToDelete.ModifiedDate = area.ModifiedDate;
                itemToDelete.ModifiedUser = area.ModifiedUser;
                itemToDelete.Active       = false;

                db.SaveChanges();
            }
        }