protected string GetRatioCapacity(Arena.Custom.SECC.Checkin.Entity.Occurrence o)
    {
        int    ratioCapacity = 0;
        string capacityValue = string.Empty;

        if (o.AttendanceTypeRatio != null)
        {
            ratioCapacity = o.CurrentVolunteers * (int)o.AttendanceTypeRatio;
            capacityValue = "(" + ratioCapacity.ToString() + ")";
        }
        else
        {
            capacityValue = "(N/A)";
        }

        return(capacityValue);
    }
    protected string RatiosText(Arena.Custom.SECC.Checkin.Entity.Occurrence o)
    {
        if (o.IsRoomClosed)
        {
            return("[room closed]");
        }

        switch (o.RatioStatus)
        {
        case Arena.Custom.SECC.Checkin.Entity.RatioStatus.OverLimit:
            return(string.Format("[{0} over]", o.CurrentAttendees - o.PeoplePerLeader * o.CurrentVolunteers));

            break;

        case Arena.Custom.SECC.Checkin.Entity.RatioStatus.CapReached:
            return("[cap reached]");

            break;

        case Arena.Custom.SECC.Checkin.Entity.RatioStatus.RatioReached:
            return("[ratio reached]");

            break;

        case Arena.Custom.SECC.Checkin.Entity.RatioStatus.NotEnoughLeaders:
            return("[too few leaders]");

            break;

        default:
            if (o.Available.HasValue && o.Available.Value < 4)
            {
                return(string.Format("[{0} remaining]", o.Available.Value));
            }
            else
            {
                return(string.Empty);
            }
            break;
        }
    }
 protected bool RatiosTextBold(Arena.Custom.SECC.Checkin.Entity.Occurrence o)
 {
     return(!o.IsRoomClosed && (o.RatioStatus == Arena.Custom.SECC.Checkin.Entity.RatioStatus.OverLimit || (o.RatioStatus == Arena.Custom.SECC.Checkin.Entity.RatioStatus.Ok && o.Available.HasValue && o.Available.Value < 4)));
 }