public ClassSignup(Guid id, DanceRole role, string partnerEmail, int priority) { Id = id; Role = role; PartnerEmail = partnerEmail; Priority = priority; }
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(); }
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)); }
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 })); }
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); }
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 })); }
public static bool ShouldAutoAccept(this Data.Event model, DanceRole role) => model.SignupOptions.AutoAcceptedSignups > model.Signups.Count(s => s.Role == role);