public TeamMatchEvent(int team, bool isCpt, int mult, MatchEvent ev)
     : base(ev)
 {
     teamId     = team;
     isCaptain  = isCpt;
     multiplier = mult;
 }
Ejemplo n.º 2
0
        public void ComboMatchesEvents_EqualCards()
        {
            // Ensure two yellow cards are matched

            var events = new MatchEvent[]
            {
                // Two yellow cards
                new MatchEvent {
                    Id = 11, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 8
                },
                new MatchEvent {
                    Id = 12, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 20
                },
            };

            // Two yellow cards generate a red card
            var combo = new AutoSanctionCardConfig {
                Card1Type = 1, Card2Type = 1, Penalty = new PenaltyConfig {
                    Type1 = 2
                }
            };

            var result = AutoSanctionDispatcher.ComboAppliesToMatchEvents(combo, events, out MatchEvent ev1, out MatchEvent ev2);

            Assert.IsTrue(result);
        }
Ejemplo n.º 3
0
        public void ComboMatchesEvents_InverseMatch()
        {
            // Ensure blue + yellow matches yellow + blue combo

            var events = new MatchEvent[]
            {
                // Blue + yellow
                new MatchEvent {
                    Id = 11, IdMatch = 1001, Type = (int)MatchEventType.Card3, IdPlayer = 101, MatchMinute = 8
                },
                new MatchEvent {
                    Id = 12, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 20
                },
            };

            // Yellow + Blue generate red card
            var combo = new AutoSanctionCardConfig {
                Card1Type = 1, Card2Type = 3, Penalty = new PenaltyConfig {
                    Type1 = 2
                }
            };

            var result = AutoSanctionDispatcher.ComboAppliesToMatchEvents(combo, events, out MatchEvent ev1, out MatchEvent ev2);

            Assert.IsTrue(result);
        }
Ejemplo n.º 4
0
        public void ComboMatchesEvents_Negative1()
        {
            // Ensure blue + yellow doesn't match yellow + yellow

            var events = new MatchEvent[]
            {
                new MatchEvent {
                    Id = 11, IdMatch = 1001, Type = (int)MatchEventType.Card3, IdPlayer = 101, MatchMinute = 8
                },
                new MatchEvent {
                    Id = 12, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 20
                },
            };

            // Yellow + Yellow generate red card
            var combo = new AutoSanctionCardConfig {
                Card1Type = 1, Card2Type = 1, Penalty = new PenaltyConfig {
                    Type1 = 2
                }
            };

            var result = AutoSanctionDispatcher.ComboAppliesToMatchEvents(combo, events, out MatchEvent ev1, out MatchEvent ev2);

            Assert.IsFalse(result);
        }
 public long AddMatchEvent(MatchEvent matchEvent)
 {
     using (var c = DbFactory.Get())
     {
         return(c.Insert <MatchEvent>(matchEvent));
     }
 }
Ejemplo n.º 6
0
        public void ComboMatchesEvents_Larger()
        {
            // Ensure yellow, yellow, blue, yellow matches blue alone

            var events = new MatchEvent[]
            {
                new MatchEvent {
                    Id = 11, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 8
                },
                new MatchEvent {
                    Id = 12, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 20
                },
                new MatchEvent {
                    Id = 11, IdMatch = 1001, Type = (int)MatchEventType.Card3, IdPlayer = 101, MatchMinute = 8
                },
                new MatchEvent {
                    Id = 12, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 20
                },
            };

            // Blue alone generates red card
            var combo = new AutoSanctionCardConfig {
                Card1Type = 3, Card2Type = 0, Penalty = new PenaltyConfig {
                    Type1 = 2
                }
            };

            var result = AutoSanctionDispatcher.ComboAppliesToMatchEvents(combo, events, out MatchEvent ev1, out MatchEvent ev2);

            Assert.IsTrue(result);
        }
Ejemplo n.º 7
0
 public bool basicEquals(MatchEvent other)
 {
     return(type == other.type &&
            footballerId == other.footballerId &&
            pointDifference == other.pointDifference &&
            number == other.number);
 }
        public void GroupPlayerEvents22()
        {
            var events = new MatchEvent[]
            {
                new MatchEvent {
                    Id = 11, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 8
                },
                new MatchEvent {
                    Id = 12, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 20
                },
                new MatchEvent {
                    Id = 13, IdMatch = 1001, Type = (int)MatchEventType.Card3, IdPlayer = 102, MatchMinute = 20
                },
                new MatchEvent {
                    Id = 14, IdMatch = 1001, Type = (int)MatchEventType.Card2, IdPlayer = 102, MatchMinute = 30
                },
            };

            var result = AutoSanctionDispatcher.GroupPlayerEvents(events);

            Assert.AreEqual(2, result.Count);
            Assert.AreEqual(2, result[101].Count);
            Assert.AreEqual(2, result[102].Count);

            Assert.AreEqual(events[0], result[101][0]);
            Assert.AreEqual(events[1], result[101][1]);
            Assert.AreEqual(events[2], result[102][0]);
            Assert.AreEqual(events[3], result[102][1]);
        }
        public MatchEvent CreateMatchEvent(int minute, Event @event, Match match, Team team)
        {
            var matchEvent = new MatchEvent {
                Event = @event, Minute = minute, Team = team
            };

            //hmm, checking on description is not the best approach
            if (@event.Description.Equals("Goal"))
            {
                if (match.HomeTeam == team)
                {
                    match.HomeGoals += 1;
                }
                else
                {
                    match.AwayGoals += 1;
                }
                _logger.LogInformation($"{minute} - {@event.Description} {matchEvent.Team}! {match.Score}");
            }
            else
            {
                //red card decrease strength??
                _logger.LogInformation($"{minute} - {@event.Description} {matchEvent.Team}");
            }

            return(matchEvent);
        }
        public void ComboMatchesEvents_Single()
        {
            var events = new MatchEvent[]
            {
                // Two yellow cards
                new MatchEvent {
                    Id = 11, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 8
                },
                new MatchEvent {
                    Id = 12, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 20
                },
                new MatchEvent {
                    Id = 13, IdMatch = 1001, Type = (int)MatchEventType.Card3, IdPlayer = 101, MatchMinute = 20
                },
                new MatchEvent {
                    Id = 14, IdMatch = 1001, Type = (int)MatchEventType.Card2, IdPlayer = 101, MatchMinute = 30
                },
            };

            var combos = new AutoSanctionCardConfig[]
            {
                new AutoSanctionCardConfig {
                    Card1Type = 1, Card2Type = 1, Penalty = new PenaltyConfig {
                        Type1 = 2
                    }
                },
            };

            var result = AutoSanctionDispatcher.GetCardCombosForMatchEvents(combos, events);

            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(combos[0], result[0]);
        }
Ejemplo n.º 11
0
 public static Entities.MatchEvent ToEntity(this MatchEvent matchEvent) =>
 new Entities.MatchEvent()
 {
     UserId         = matchEvent.UserId.Value,
     MatchId        = matchEvent.MatchId.Value,
     EventTime      = matchEvent.EventTime,
     MatchEventType = (int)matchEvent.MatchEventType
 };
Ejemplo n.º 12
0
        public MatchStatsDetailPage(MatchEvent matchEvent)
        {
            this.MatchEvent = matchEvent;

            InitializeComponent();

            NavigationPage.SetHasNavigationBar(this, true);
        }
Ejemplo n.º 13
0
        protected void rptEvents_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            MatchEventDTO ev        = e.Item.DataItem as MatchEventDTO;
            MatchEvent    meControl = e.Item.FindControl("me") as MatchEvent;

            meControl.Player1 = ev.Player1;
            meControl.Player2 = ev.Player2;
        }
 private static EventData ConvertToEventData(FootballGameEntity gameEntity, MatchEvent @event)
 {
     return(new EventData
     {
         FootballGameId = gameEntity.Id,
         SerializedEvent = JsonConvert.SerializeObject(@event),
         Type = @event.GetType().FullName
     });
 }
Ejemplo n.º 15
0
 public void CopyDTOToDbObject(MatchEvent dbObj)
 {
     dbObj.Match_Id      = Match_Id;
     dbObj.MatchEvent_Id = MatchEvent_Id;
     dbObj.Event_Cd      = Event_Cd;
     dbObj.Player1_Id    = Player1_Id;
     dbObj.Player2_Id    = Player2_Id;
     dbObj.EventFlags    = EventFlags;
     dbObj.Minute        = Minute;
 }
Ejemplo n.º 16
0
 public MatchEvent(MatchEvent other)
 {
     dateTime        = other.dateTime;
     type            = other.type;
     typeString      = other.typeString;
     footballerId    = other.footballerId;
     footballerName  = other.footballerName;
     pointDifference = other.pointDifference;
     number          = other.number;
 }
        public void GroupPlayerEvents_Empty()
        {
            var events = new MatchEvent[]
            {
            };

            var result = AutoSanctionDispatcher.GroupPlayerEvents(events);

            Assert.AreEqual(0, result.Count);
        }
Ejemplo n.º 18
0
        private Tweet FindMatchingTweet(TweetMatcher matcher, MatchEvent matchEvent)
        {
            var tweets        = matcher.Find(matchEvent);
            var selectedTweet = tweets
                                .Except(_elements.Select(e => e.Tweet))
                                .OrderByDescending(t => t.Popularity)
                                .LastOrDefault();

            return(selectedTweet ?? Tweet.Null);
        }
Ejemplo n.º 19
0
        protected override void OnBindingContextChanged()
        {
            base.OnBindingContextChanged();

            MatchEvent matchEvent = this.BindingContext as MatchEvent;
            Team       homeTeam   = matchEvent.HomeTeam;
            Team       guestTeam  = matchEvent.GuestTeam;

            homeTeamImage.Source  = ImageSource.FromResource(homeTeam.Icon, typeof(MatchOverviewPage).GetTypeInfo().Assembly);
            guestTeamImage.Source = ImageSource.FromResource(guestTeam.Icon, typeof(MatchOverviewPage).GetTypeInfo().Assembly);
        }
Ejemplo n.º 20
0
        private static BinaryExpression GetExpression(MatchEvent criteria, ParameterExpression p)
        {
            var streamNameMatches = Expression.Equal(
                Expression.Property(p, "StreamName"),
                Expression.Constant(criteria.StreamName));
            var typeMatches = Expression.Equal(
                Expression.Property(p, "Type"),
                Expression.Constant(criteria.Type));

            return(Expression.AndAlso(streamNameMatches, typeMatches));
        }
Ejemplo n.º 21
0
 public int Insert(MatchEvent matchEvent)
 {
     return(Add(INSERT, new Dictionary <string, object>
     {
         { "matchId", matchEvent.MatchId },
         { "teamId", matchEvent.TeamId },
         { "minute", matchEvent.Minute },
         { "playerId", matchEvent.PlayerId },
         { "eventType", matchEvent.EventType }
     }));
 }
        public void GetCardComboNewCards_OnlyLast()
        {
            // Several events already happened to same player, yellow arrives.
            // Check that a new event is returned with a red card, and only that.

            var events = new MatchEvent[]
            {
                new MatchEvent {
                    Id = 11, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 8
                },
                new MatchEvent {
                    Id = 12, IdMatch = 1001, Type = (int)MatchEventType.Card3, IdPlayer = 101, MatchMinute = 8
                },
                new MatchEvent {
                    Id = 13, IdMatch = 1001, Type = (int)MatchEventType.Card4, IdPlayer = 101, MatchMinute = 8
                },
                new MatchEvent {
                    Id = 14, IdMatch = 1001, Type = (int)MatchEventType.Card5, IdPlayer = 101, MatchMinute = 8
                },
                new MatchEvent {
                    Id = 15, IdMatch = 1001, Type = (int)MatchEventType.Card1, IdPlayer = 101, MatchMinute = 30
                }
            };

            var combos = new AutoSanctionCardConfig[]
            {
                new AutoSanctionCardConfig {
                    Card1Type = 1, Card2Type = 1, Penalty = new PenaltyConfig {
                        Type1 = 2
                    }, AddYellowCards = 0
                },
                new AutoSanctionCardConfig {
                    Card1Type = 3, Card2Type = 0, Penalty = new PenaltyConfig {
                        Type1 = 5
                    }
                },
            };

            var newEvent = events[4];

            var result = AutoSanctionDispatcher.GetCardCombosNewCards(events, combos, newEvent);

            Assert.AreEqual(2, result.Count());

            var resultEvents = result.ToList();

            Assert.AreEqual((int)MatchEventType.Card2, resultEvents[0].Type);

            var ev2 = resultEvents[1];

            Assert.AreEqual((int)MatchEventType.AddToPdrData1, ev2.Type);
            Assert.AreEqual(-2, ev2.IntData1);
        }
Ejemplo n.º 23
0
        public IEnumerable <Tweet> Find(MatchEvent @event)
        {
            var range      = TimeSpan.FromMinutes(5);
            var startRange = _footballGame.MatchStart
                             .Add(@event.When)
                             .Add(_delta);

            var endRange = startRange.Add(range);

            return(_tweets
                   .Where(t => t.Date < endRange && t.Date > startRange));
        }
Ejemplo n.º 24
0
        public Boolean sendMessage()
        {
            try
            {
                MatchEventKey key = new MatchEventKey();
                key.MatchId = 1;
                List <Attributes> attributes = new List <Attributes>();
                attributes.Add(Attributes.Blocked);
                attributes.Add(Attributes.BigChance);

                MatchEvent value = new MatchEvent();
                value.Operation         = Operation.Add;
                value.EventId           = 12345;
                value.MatchId           = 1;
                value.PhaseId           = Phase.a2;
                value.Type              = Type.Assist;
                value.Attributes        = attributes;
                value.TeamFromId        = 564;
                value.TeamToId          = 458;
                value.PlayerFromId      = 10756;
                value.PlayerToId        = 15783;
                value.TimeUTC           = "2018-09-12T06:55:59.919";
                value.Minute            = 45;
                value.Second            = 13;
                value.InjuryMinute      = 44;
                value.PositionX         = 0.541211f;
                value.PositionY         = 0.342281f;
                value.GoalGatePositionX = 0.144251f;
                value.GoalGatePositionY = 0.264641f;
                value.GoalGatePositionZ = 0.0f;
                Console.WriteLine(value.ToString());

                Message <MatchEventKey, MatchEvent> message = new Message <MatchEventKey, MatchEvent>();
                message.Key   = key;
                message.Value = value;
                Task <DeliveryReport <MatchEventKey, MatchEvent> > task = producer.ProduceAsync(topicName, message);

                task.Wait();

                if (task.IsCompleted)
                {
                    return(true);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error while sending message to topic", e);
                return(false);
            }

            return(false);
        }
Ejemplo n.º 25
0
 private void UpdateMatchEvent(MatchEvent matchEvent, MatchEventPersonViewModel viewModel)
 {
     if (viewModel.PersonPrimaryKey != matchEvent.PersonPrimaryKey ||
         viewModel.MatchEventInRunningType.ToMatchEventType() != matchEvent.MatchEventType ||
         viewModel.Minute != matchEvent.Minute ||
         viewModel.Extra != matchEvent.Extra)
     {
         matchEvent.PersonPrimaryKey = (Guid)viewModel.PersonPrimaryKey;
         matchEvent.MatchEventType   = (MatchEventType)viewModel.MatchEventInRunningType.ToMatchEventType();
         matchEvent.Minute           = viewModel.Minute;
         matchEvent.Extra            = viewModel.Extra;
     }
 }
Ejemplo n.º 26
0
 public MatchEventDTO ConvertDBObjectToDTO(MatchEvent dbObj)
 {
     return(new MatchEventDTO
     {
         Match_Id = dbObj.Match_Id,
         MatchEvent_Id = dbObj.MatchEvent_Id,
         EventFlags = dbObj.EventFlags,
         Event_Cd = dbObj.Event_Cd,
         Player2_Id = dbObj.Player2_Id,
         Player1_Id = dbObj.Player1_Id,
         Minute = dbObj.Minute
     });
 }
Ejemplo n.º 27
0
        public static MatchEvent New(string matchId, EventType eventOccurred, TeamId teamIndex, string team1, string team2, int?playerId)
        {
            var matchEvent = new MatchEvent
            {
                MatchId  = matchId,
                Action   = eventOccurred.ToString(),
                TeamId   = (int)teamIndex,
                Team1    = team1,
                Team2    = team2,
                PlayerId = playerId
            };

            return(matchEvent);
        }
Ejemplo n.º 28
0
        public void AddMatchEvent(MatchEvent matchEvent)
        {
            var newMatchEvent = new MatchEvent
            {
                EventMinute   = matchEvent.EventMinute,
                IsForHomeTeam = matchEvent.IsForHomeTeam,
                MatchId       = matchEvent.Match.MatchId,
                PlayerId      = matchEvent.Player?.PlayerId,
                EventType     = matchEvent.EventType
            };

            _context.MatchEvents.Add(newMatchEvent);
            _context.SaveChanges();
        }
Ejemplo n.º 29
0
        public static IEnumerable <long> CreateMatchEvents(IDbConnection c, IDbTransaction t, IEnumerable <MatchEvent> events)
        {
            var result = new List <long>();

            if (events != null)
            {
                foreach (var ev in events)
                {
                    var(_, me) = MatchEvent.Create(c, t, ev);
                    result.Add(me.Id);
                }
            }

            return(result);
        }
        private static async Task CreateEvent(IDbConnection c, IDbTransaction t, Match dbMatch, List <MatchEvent> events, Models.Db.Team team, Models.Db.Player player, MatchEventType type, int minuteOffset)
        {
            var ev = new MatchEvent
            {
                IdDay       = dbMatch.IdDay,
                IdMatch     = dbMatch.Id,
                IdTeam      = (team != null ? team.Id : 0),
                IdPlayer    = (player != null ? player.Id : 0),
                MatchMinute = new Random().Next(0 + minuteOffset, 45 + minuteOffset),
                Type        = (int)type,
            };

            ev.Id = await c.InsertAsync(ev, t);

            events.Add(ev);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ExclusiveEventStoreCatchupQuery"/> class.
        /// </summary>
        /// <param name="dbContext">The event store database context to execute the query against.</param>
        /// <param name="lockResourceName">Name of the lock. Multiple instances compete with other instances having the same <paramref name="lockResourceName" />.</param>
        /// <param name="getStartAtId">The id of the first event to query.</param>
        /// <param name="matchEvents">Specifies the event types to include the query. If none are specified, all events are queried.</param>
        public ExclusiveEventStoreCatchupQuery(EventStoreDbContext dbContext, string lockResourceName, Func<long> getStartAtId, MatchEvent[] matchEvents)
        {
            this.dbContext = dbContext;
            this.lockResourceName = lockResourceName;

            if (TryGetAppLock())
            {
                startAtId = getStartAtId();
                IQueryable<StorableEvent> eventQuery = dbContext.Events;

                matchEvents = matchEvents ?? new[] { new MatchEvent() };

                // if specific event types are requested, we can optimize the event store query
                // if Event or IEvent are requested, we don't filter -- this requires reading every event
                if (matchEvents.Any())
                {
                    var eventTypes = matchEvents.Select(m => m.Type).Distinct().ToArray();
                    var aggregates = matchEvents.Select(m => m.StreamName).Distinct().ToArray();

                    if (!aggregates.Contains(MatchEvent.Wildcard))
                    {
                        var aggregateWildCard = aggregates.Any(string.IsNullOrWhiteSpace) ||
                                                                aggregates.Contains(MatchEvent.Wildcard);

                        var eventWildCard = eventTypes.Any(string.IsNullOrWhiteSpace) ||
                                                                eventTypes.Contains(MatchEvent.Wildcard);

                        eventQuery = eventQuery.Where(e => (aggregateWildCard || aggregates.Contains(e.StreamName)) &&
                                                           (eventWildCard || eventTypes.Contains(e.Type)));
                    }
                }

                this.eventQuery = eventQuery;
                
                expectedNumberOfEvents = eventQuery.Count(e => e.Id >= startAtId);
                events = DurableStreamFrom(eventQuery, startAtId);
            }
            else
            {
                events = Enumerable.Empty<StorableEvent>();
            }
        }
 private static void ProcessEvents(Match match, HattrickDataMatch htMatch)
 {
     foreach (var htMatchEvent in htMatch.EventList)
     {
         MatchEvent matchEvent = new MatchEvent();
         matchEvent.EventIndex = short.Parse(htMatchEvent.Index);
         matchEvent.EventText = htMatchEvent.EventText;
         matchEvent.EventTypeID = short.Parse(htMatchEvent.EventTypeID);
         matchEvent.EventVariation = short.Parse(htMatchEvent.EventVariation);
         matchEvent.Minute = short.Parse(htMatchEvent.Minute);
         matchEvent.ObjectPlayerID = string.IsNullOrEmpty(htMatchEvent.ObjectPlayerID) ? (int?)null : int.Parse(htMatchEvent.ObjectPlayerID);
         matchEvent.SubjectPlayerID = string.IsNullOrEmpty(htMatchEvent.SubjectPlayerID) ? (int?)null : int.Parse(htMatchEvent.SubjectPlayerID);
         matchEvent.SubjectTeamID = string.IsNullOrEmpty(htMatchEvent.SubjectTeamID) ? (int?)null : int.Parse(htMatchEvent.SubjectTeamID);
         match.AddMatchEvent(matchEvent);
     }
 }
Ejemplo n.º 33
0
 private void MakeEvent(MatchEvent ev)
 {
     if (MatchEvent != null)
     {
         MatchEvent(ev);
     }
 }