public void AddParticipantsGroupToEvent(string eventName, ParticipantsGroup participantsGroup) { var eventData = GetEventByName(eventName); if (eventData == null) { eventData = new Event(eventName, DateTime.Now); _events.Add(eventData); } var existingParticipantGroup = eventData.Participants.FirstOrDefault(p => p.Name == participantsGroup.Name); if (existingParticipantGroup == null) { eventData.Participants.Add(participantsGroup); } else if (existingParticipantGroup.IsSure != participantsGroup.IsSure) { existingParticipantGroup.IsSure = participantsGroup.IsSure; } else if (participantsGroup.Count > 1) { existingParticipantGroup.Count += participantsGroup.Count; } _storage.Save(_events); }
public void RemoveParticipantGroupFromEvent(string eventName, ParticipantsGroup participantInfo) { var eventData = GetEventByName(eventName); if (eventData == null) { return; } var existingParticipant = eventData.Participants.FirstOrDefault(p => p.Name == participantInfo.Name); if (existingParticipant != null) { if (participantInfo.Count >= existingParticipant.Count) { eventData.Participants.Remove(existingParticipant); } else { existingParticipant.Count -= participantInfo.Count; } } _storage.Save(_events); }
private bool HandleUpdates(int gameId, ParticipantsGroup existingGroup, ParticipantsGroup updatedGroup) { if (existingGroup.State != updatedGroup.State) { if (existingGroup.State == ParticipantState.Accepted && updatedGroup.State == ParticipantState.Declined) { if (updatedGroup.Count >= existingGroup.Count) { existingGroup.State = ParticipantState.Declined; } else { existingGroup.Count -= updatedGroup.Count; } } else { existingGroup.State = updatedGroup.State; } participantMapper.UpdateParticipant(gameId, existingGroup); return(true); } else if (updatedGroup.State == ParticipantState.Accepted && updatedGroup.Count > 1) { existingGroup.Count += updatedGroup.Count; participantMapper.UpdateParticipant(gameId, existingGroup); return(true); } return(false); }
public bool UpdateParticipantsGroupState(string gameTitle, ParticipantsGroup participantsGroup) { if (participantsGroup == null) { throw new ArgumentException($"{nameof(participantsGroup)} is null"); } var game = gameMapper.GetLatestGameByTitle(gameTitle); if (game == null) { return(false); } var existingGroup = participantMapper.GetParticipantByName(game.Id, participantsGroup.Name); if (existingGroup == null) { participantMapper.AddParticipant(game.Id, participantsGroup); return(participantsGroup.State == ParticipantState.Accepted || participantsGroup.State == ParticipantState.NotSured); } else { return(HandleUpdates(game.Id, existingGroup, participantsGroup)); } }
private bool ExecutionWillUpdateCurrentCount(ParticipantsGroup participantsGroup) { if (participantsGroup.Name != Message.AuthorName) { return(true); } var existingParticipantsGroup = EventsRepository.GetParticipantsGroup(Message.ChatName, participantsGroup.Name); return(existingParticipantsGroup != null); }
public void AddParticipant(int gameId, ParticipantsGroup participantsGroup) { if (!participants.ContainsKey(gameId)) { participants.Add(gameId, new List <ParticipantsGroup> { participantsGroup }); } else { participants[gameId].Add(participantsGroup); } }
public static ParticipantsGroup GetParticipantsGroupFromMessage(ChatMessage message) { var participantsGroup = new ParticipantsGroup(); var countSymbols = _notSureSymbols.Concat(_increaseCountSymbols).Concat(_decreaseCountSymbols); var messageText = message.Text; foreach (var symbol in countSymbols) { messageText = messageText.Replace(symbol, ""); } var messageParts = messageText.TrimStart().Split(' '); if (IsSimpleCountMessage(message.Text)) { participantsGroup.Name = message.Author.Name; participantsGroup.Count = 1; } else if (char.IsDigit(messageParts[0][0])) { participantsGroup.Count = int.Parse(messageParts[0]); if (messageParts.Length > 1) { var participantName = messageParts[1]; for (var i = 2; i < messageParts.Length; i++) { participantName += " " + messageParts[i]; } participantsGroup.Name = participantName; } else { participantsGroup.Name = "вместе с " + message.Author.Name; } } else { participantsGroup.Name = string.Join(" ", messageParts); participantsGroup.Count = 1; } participantsGroup.State = GetStateFromMessage(message.Text); return(participantsGroup); }
public void AddParticipant(int gameId, ParticipantsGroup participantsGroup) { if (participantsGroup == null) { throw new ArgumentException($"{nameof(participantsGroup)} is null"); } var sqlQuery = @" INSERT INTO game_participants (GameId, Name, StateId, Count) VALUES (@GameId, @Name, @StateId, @Count)"; var queryParams = new { GameId = gameId, participantsGroup.Name, StateId = GetStateId(participantsGroup.State), participantsGroup.Count }; dbConnectionProvider.Connection.Execute(sqlQuery, queryParams); }
public void UpdateParticipant(int gameId, ParticipantsGroup participantsGroup) { if (participantsGroup == null) { throw new ArgumentException($"{nameof(participantsGroup)} is null"); } var sqlQuery = @" UPDATE game_participants SET StateId = @StateId, Count = @Count WHERE GameId = @GameId AND Name = @Name"; var queryParams = new { GameId = gameId, participantsGroup.Name, StateId = GetStateId(participantsGroup.State), participantsGroup.Count }; dbConnectionProvider.Connection.Execute(sqlQuery, queryParams); }
public void UpdateParticipant(int gameId, ParticipantsGroup participantsGroup) { var participant = participants[gameId].FirstOrDefault(x => x.Name == participantsGroup.Name); participant = participantsGroup; }