public void CreateMissingCards() { _logger.WriteLine("Creating missing cards..."); _connection.Open(); try { var allCards = EcCard.LoadAll(_connection).ToList(); var cardIds = new HashSet <string>(); foreach (var c in allCards) { cardIds.Add(c.CardIdentity); } foreach (var id in cardIds) { bool unique = true; var cards = allCards.Where(c => string.Equals(c.CardIdentity, id)).ToList(); if (cards.Count != 3) { _logger.WriteLine("{0} have {1} entries", id, cards.Count); } if (cards.Any(c => c.CardNumber != cards[0].CardNumber)) { unique = false; _logger.WriteLine("{0} have different card numbers: {1}", id, string.Join(", ", cards.Select(c => c.CardNumber))); } if (cards.Any(c => c.CustomerNumber != cards[0].CustomerNumber)) { unique = false; _logger.WriteLine("{0} have different customer numbers: {1}", id, string.Join(", ", cards.Select(c => c.CustomerNumber))); } if (unique && cards.Count < 3) { foreach (var projectId in EcCard.ProjectIds) { if (cards.Any(c => c.ProjectNumber == projectId)) { continue; } var card = EcCard.Create(cards[0].CustomerNumber, projectId, cards[0].CardNumber, cards[0].CardIdentity); card.Text = cards[0].Text; card.SetFlags(cards[0].IsActive); _logger.WriteLine("Creating new card {0}", card); card.Save(_connection); } } } } finally { _connection.Close(); } }
public void CreateMissingCards() { _logger.WriteLine("Creating missing cards..."); var cardIds = new HashSet <string>(); foreach (var c in _allCards) { cardIds.Add(c.CardIdentity); } foreach (var id in cardIds) { bool unique = true; var cards = _allCards.Where(c => string.Equals(c.CardIdentity, id)).ToList(); if (cards.Count != 3) { _logger.WriteLine("{0} have {1} entries", id, cards.Count); } if (cards.Any(c => c.CardNumber != cards[0].CardNumber)) { unique = false; _logger.WriteLine("{0} have different card numbers: {1}", id, string.Join(", ", cards.Select(c => c.CardNumber))); } if (unique && cards.Count < 3) { foreach (var projectId in EcCard.ProjectIds) { if (cards.Any(c => c.ProjectNumber == projectId)) { continue; } int newId; if (!_allCards.Any(c => c.ProjectNumber == projectId && c.ID == cards[0].CardNumber)) { newId = cards[0].CardNumber; } else { newId = _allCards.Where(c => c.ProjectNumber == projectId).Max(c => c.ID) + 1; } var card = EcCard.Create(newId, projectId, cards[0].CardNumber, cards[0].CardIdentity); card.Text = cards[0].Text; card.SetFlags(cards[0].IsActive); _allCards.Add(card); _logger.WriteLine("Creating new card {0}", card); } } } }