public void Estimate(PokerUser user, int estimation, int messageId = 0) { var session = GetSession(user); if (!EnsureSession(user)) { return; } if (session.Poker == null) { messageSender.NoPokerRunning(user); return; } if (!session.CanUserEstimate(user)) { messageSender.EstimationAlreadyCounted(user); } session.Estimate(user, estimation, messageId); if (messageId != 0) { messageSender.UpdateEstimation(user, estimation, messageId); } if (!session.IsEstimationCompleted()) { return; } messageSender.SendPokerResult(session, session.Poker.ToString()); session.ClearPoker(); }