Exemplo n.º 1
0
        public async Task AddBadges(List <EventEntity> eventEntities)
        {
            foreach (var eventEntity in eventEntities)
            {
                if (!eventEntity.Administrator.Badges.Any(x => x.BadgeId == (long)BadgeNames.CreatedEvent))
                {
                    await _badgeRepository.AddBadgeToPerson(eventEntity.Administrator, BadgeNames.CreatedEvent);
                }

                foreach (var participant in eventEntity.Participants.Where(x => x.ParticipantStatusId == (long)ParticipantStatus.Active))
                {
                    if (!participant.Person.Badges.Any(x => x.BadgeId == (long)BadgeNames.ParticipatedInEvent))
                    {
                        await _badgeRepository.AddBadgeToPerson(participant.Person, BadgeNames.ParticipatedInEvent);
                    }
                    foreach (var type in eventEntity.EventTypes)
                    {
                        switch (type.EventTypeId)
                        {
                        case (long)EventType.Party:
                            if (!participant.Person.Badges.Any(x => x.BadgeId == (long)BadgeNames.ParticipatedInParty))
                            {
                                await _badgeRepository.AddBadgeToPerson(participant.Person, BadgeNames.ParticipatedInParty);
                            }
                            break;

                        case (long)EventType.Culture:
                            if (!participant.Person.Badges.Any(x => x.BadgeId == (long)BadgeNames.ParticipatedInCulture))
                            {
                                await _badgeRepository.AddBadgeToPerson(participant.Person, BadgeNames.ParticipatedInCulture);
                            }
                            break;

                        case (long)EventType.Sport:
                            if (!participant.Person.Badges.Any(x => x.BadgeId == (long)BadgeNames.ParticipatedInSport))
                            {
                                await _badgeRepository.AddBadgeToPerson(participant.Person, BadgeNames.ParticipatedInSport);
                            }
                            break;

                        case (long)EventType.Nature:
                            if (!participant.Person.Badges.Any(x => x.BadgeId == (long)BadgeNames.ParticipatedInNature))
                            {
                                await _badgeRepository.AddBadgeToPerson(participant.Person, BadgeNames.ParticipatedInNature);
                            }
                            break;

                        case (long)EventType.Communication:
                            if (!participant.Person.Badges.Any(x => x.BadgeId == (long)BadgeNames.ParticipatedInCommunication))
                            {
                                await _badgeRepository.AddBadgeToPerson(participant.Person, BadgeNames.ParticipatedInCommunication);
                            }
                            break;

                        case (long)EventType.Game:
                            if (!participant.Person.Badges.Any(x => x.BadgeId == (long)BadgeNames.ParticipatedInGame))
                            {
                                await _badgeRepository.AddBadgeToPerson(participant.Person, BadgeNames.ParticipatedInGame);
                            }
                            break;

                        case (long)EventType.Study:
                            if (!participant.Person.Badges.Any(x => x.BadgeId == (long)BadgeNames.ParticipatedInStudy))
                            {
                                await _badgeRepository.AddBadgeToPerson(participant.Person, BadgeNames.ParticipatedInStudy);
                            }
                            break;

                        case (long)EventType.Food:
                            if (!participant.Person.Badges.Any(x => x.BadgeId == (long)BadgeNames.ParticipatedInFood))
                            {
                                await _badgeRepository.AddBadgeToPerson(participant.Person, BadgeNames.ParticipatedInFood);
                            }
                            break;

                        case (long)EventType.Concert:
                            if (!participant.Person.Badges.Any(x => x.BadgeId == (long)BadgeNames.ParticipatedInConcert))
                            {
                                await _badgeRepository.AddBadgeToPerson(participant.Person, BadgeNames.ParticipatedInConcert);
                            }
                            break;

                        case (long)EventType.Travel:
                            if (!participant.Person.Badges.Any(x => x.BadgeId == (long)BadgeNames.ParticipatedInTravel))
                            {
                                await _badgeRepository.AddBadgeToPerson(participant.Person, BadgeNames.ParticipatedInTravel);
                            }
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
        }