Exemple #1
0
        public async Task ProcessAttendees(Event eventToSync)
        {
            if (eventToSync.Platform != EventPlatform.Meetup)
            {
                return;
            }
            var meetupAttendees = await _meetupServices.GetAttendees(int.Parse(eventToSync.EventId));

            var meetupAttendeesIds = meetupAttendees.Select(s => s.Member.Id);
            var attendeesToEach    = await _context.Attendances.Include(x => x.Member).Where(x =>
                                                                                             x.EventId == eventToSync.Id
                                                                                             &&
                                                                                             meetupAttendeesIds.Contains(x.Member.MeetupId)).ToListAsync();

            foreach (var attende in meetupAttendees)
            {
                var attendace = attendeesToEach?.FirstOrDefault(x => x.Member.MeetupId == attende.Member.Id);
                if (attendace == null)
                {
                    if (attende.Member.Id != 0)
                    {
                        var newMember = await _context.Members.Where(x => x.MeetupId == attende.Member.Id).FirstOrDefaultAsync();

                        if (newMember == null)
                        {
                            newMember = new Member
                            {
                                MeetupId  = attende.Member.Id,
                                FirstName = attende.Member.Name,
                                Picture   = attende.Member.Photo?.HighresLink?.AbsolutePath == null ? "" :
                                            attende.Member.Photo?.HighresLink?.AbsoluteUri,
                                Role      = UserRole.Member,
                                Biography = attende.Member.Bio
                            }
                        }
                        ;
                        attendace = SetState(attende,
                                             new Attendance(newMember, eventToSync, AttendanceRegisterType.ExternalPage));

                        await _context.Attendances.AddAsync(attendace);
                    }
                }
                else
                {
                    attendace = SetState(attende, attendace);
                }
            }
            await _context.SaveChangesAsync();

            var percent = _context.Members.Count(x => meetupAttendeesIds.Contains(x.MeetupId)
                                                 &&
                                                 (x.Events.Any(a => !a.DoNotKnow) && x.Events.Count(s => s.Attended) * 100 /
                                                  x.Events.Count(a => !a.DoNotKnow) > 60));

            if (meetupAttendeesIds.Any())
            {
                eventToSync.EstimatedAttendancePercentage = ((decimal)percent * 100) / meetupAttendeesIds.Count();
            }
            await _context.SaveChangesAsync();
        }
        public async Task ProcessAttendees(Event eventToSync)
        {
            if (eventToSync.Platform != EventPlatform.EventBrite)
            {
                return;
            }
            var meetupAttendees = await _eventBriteServices.GetAttendees(eventToSync.EventId);

            foreach (var attendees in meetupAttendees)
            {
                var attendace = eventToSync.Attendees.FirstOrDefault(x => x.Member.Email == attendees.Profile.Email);
                if (attendace == null)
                {
                    var member = await _context.Members.FirstOrDefaultAsync(x => x.Email.ToUpper() == attendees.Profile.Email.ToUpper());

                    if (member == null)
                    {
                        member = new Member
                        {
                            FirstName = attendees.Profile.FirstName,
                            LastName  = attendees.Profile.LastName,
                            Email     = attendees.Profile.Email,
                        }
                    }
                    ;
                    if ((attendees.CheckIn))
                    {
                        attendace = new Attendance(member, eventToSync, true, AttendanceRegisterType.ExternalPage);
                    }
                    else
                    {
                        attendace = new Attendance(member, eventToSync, false, AttendanceRegisterType.ExternalPage);
                    }
                    await _context.Attendances.AddAsync(attendace);
                }
                else
                {
                    if ((attendees.CheckIn))
                    {
                        attendace.Attend();
                    }
                }
            }
            await _context.SaveChangesAsync();
        }
    }