public ClassSignup(Guid id, DanceRole role, string partnerEmail, int priority)
 {
     Id           = id;
     Role         = role;
     PartnerEmail = partnerEmail;
     Priority     = priority;
 }
Exemple #2
0
 public PresenceRoleModel(DanceRole role, IEnumerable <EventSignup> signups, int count)
 {
     Role         = role;
     Participants = signups
                    .Where(s => s.Status == Status.AcceptedAndPayed || s.Status == Status.Approved)
                    .Select(s => new ParticipantsModel(s, count))
                    .OrderBy(p => p.FullName)
                    .ToReadOnlyCollection();
 }
Exemple #3
0
        public bool TestShouldAutoAccept(int autoAcceptCount, int signupCount, DanceRole role)
        {
            var model = new Data.Event
            {
                SignupOptions = new EventSignupOptions
                {
                    AutoAcceptedSignups = autoAcceptCount
                },
                Signups =
                {
                    GenerateSignups(signupCount)
                }
            };

            return(model.ShouldAutoAccept(role));
        }
Exemple #4
0
        public async Task <IActionResult> EditSignup(Guid id, [FromForm] DanceRole role, [FromForm] string partnerEmail)
        {
            var signup = await _database.EventSignups
                         .Include(e => e.AuditLog)
                         .SingleOrDefaultAsync(e => e.Id == id);

            var user = await GetCurrentUser();

            if (ModelState.IsValid)
            {
                signup.AuditLog.Add($"Admin edited\n\n{signup.Role} -> {role}\n\n{signup.PartnerEmail} -> {partnerEmail}", user);

                signup.Role         = role;
                signup.PartnerEmail = partnerEmail?.Trim().Normalize().ToUpperInvariant();

                await _database.SaveChangesAsync();
            }

            return(RedirectToAction(nameof(View), new { id = signup.EventId }));
        }
Exemple #5
0
        public static EventSignup AddEventSignup(this MemberUser user, Guid id, DanceRole role, string partnerEmail, bool autoAccept, int priority = 1)
        {
            var status = autoAccept ? Status.Approved : Status.Pending;
            var signup = new EventSignup
            {
                EventId      = id,
                Priority     = priority,
                Role         = role,
                PartnerEmail = partnerEmail?.Trim().Normalize().ToUpperInvariant(),
                Status       = status,
                SignedUpAt   = TimeProvider.UtcNow,
                AuditLog     =
                {
                    { $"Signed up as {role}{(partnerEmail is string ? $" with partner {partnerEmail}" : "")}, status is {status}", user }
                }
            };

            user.EventSignups.Add(signup);

            return(signup);
        }
Exemple #6
0
        public async Task <IActionResult> EditSignup(Guid id, [FromForm] DanceRole role, [FromForm] string partnerEmail, [FromForm] Guid?eventId)
        {
            var signup = await _database.EventSignups
                         .Include(e => e.AuditLog)
                         .FirstOrDefaultAsync(e => e.Id == id);

            var user = await GetCurrentUser();

            if (ModelState.IsValid)
            {
                partnerEmail = partnerEmail?.Trim().Normalize().ToUpperInvariant();
                var log = "Admin edited";
                if (signup.Role != role)
                {
                    signup.Role = role;
                    log        += $"\n\n{signup.Role} -> {role}";
                }

                if (signup.PartnerEmail != partnerEmail)
                {
                    signup.PartnerEmail = partnerEmail;
                    log += $"\n\n{signup.PartnerEmail} -> {partnerEmail}";
                }

                if (eventId.HasValue && signup.EventId != eventId)
                {
                    signup.EventId = eventId.Value;
                    log           += $"\n\n{signup.EventId} -> {eventId}";
                }

                signup.AuditLog.Add(log, user);
                await _database.SaveChangesAsync();
            }

            return(RedirectToAction(nameof(View), new { id = eventId ?? signup.EventId }));
        }
Exemple #7
0
 public static bool ShouldAutoAccept(this Data.Event model, DanceRole role)
 => model.SignupOptions.AutoAcceptedSignups > model.Signups.Count(s => s.Role == role);