Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update/check in #84

Merged
merged 2 commits into from
Mar 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions src/components/CheckIn.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,33 +33,33 @@
console.error('Check In API Error', err);

const errData = {},
{ ticket, guest, event } = err.responseBody || {};
guest = err.responseBody;

switch(err.statusCode) {
case 404:
errData.message = 'Ticket not found';
break;

case 409:
errData.message = `Guest already checked in at ${format(new Date(guest.checkedIn), 'HH:mm')}`;
errData.message = `Guest already checked in at ${format(new Date(guest.checkInTime), 'HH:mm')}`;
errData.context = <p><Link to={`/guests/${guest.id}`}>See details for {`${guest.firstName} ${guest.lastName}`}</Link></p>;
break;

case 410:
errData.message = 'Event no longer available';
errData.context = <p>Ticket is for {event.name} - {format(new Date(event.date), 'M/dd/yy')}</p>;
errData.context = <p>Ticket is for {guest.eventName} - {format(new Date(guest.eventDate), 'M/dd/yy')}</p>;
break;

case 412:
errData.message = 'Event has not started';
errData.context = <p>Check In for {event.name} available at {format(new Date(event.date), 'M/dd/yy - HH:mm')}</p>;
errData.context = <p>Check In for {guest.eventName} available at {format(new Date(guest.eventDate), 'M/dd/yy - HH:mm')}</p>;
break;

case 423:
errData.message = 'Ticket no longer valid';
errData.context = <p>
Ticket status is {ticket.status},&nbsp;
<Link to={`/guests/${guest.id}`}>Guest status is {guest.status}</Link> {guest.checkedIn && `and has already checked in at ${format(new Date(guest.checkedIn), 'HH:mm')}`}
Ticket status is {guest.status},&nbsp;
<Link to={`/guests/${guest.id}`}>Guest status is {guest.status}</Link> {guest.checkedIn && `and has already checked in at ${format(new Date(guest.checkInTime), 'HH:mm')}`}
</p>;
break;

Expand Down Expand Up @@ -101,16 +101,16 @@
document.addEventListener('keydown', handleKeydown);

return () => document.removeEventListener('keydown', handleKeydown);
}, []);

Check warning on line 104 in src/components/CheckIn.js

View workflow job for this annotation

GitHub Actions / build

React Hook useEffect has a missing dependency: 'checkInWithToken'. Either include it or remove the dependency array

return (
<div className="check-in">
<div className={classnames('status', {inputting, success: checkInResponse, error: checkInError, vip: !!checkInResponse?.guest?.vip})} onClick={reset}>
<div className={classnames('status', {inputting, success: checkInResponse, error: checkInError, vip: checkInResponse?.admissionTier === 'vip'})} onClick={reset}>
<p className="status-text">
{inputting
? 'Scanning...'
: checkInResponse
? `${checkInResponse.guest.firstName} ${checkInResponse.guest.lastName}${checkInResponse.guest.vip ? ' - VIP' : ''}`
? `${checkInResponse.firstName} ${checkInResponse.lastName}${checkInResponse.admissionTier === 'vip' ? ' - VIP 🕺' : ''}`
: checkInError?.message || 'Ready!'
}
</p>
Expand Down
14 changes: 8 additions & 6 deletions src/components/Dashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,17 +103,19 @@ const Dashboard = () => {
<h5 data-tooltip="Total guests on the list for this event">Total Attendance</h5>
<p>{formatThousands(totalGuests + (add2020Stats ? totalGuests2020 : 0))}</p>
</div>
{event.status === 'active' &&
{event.status === 'active' && checkScope(user.role, 'write') &&
<div className="guests-today">
<h5 data-tooltip="Paying guests added today">Guests Today</h5>
<p>{guestsToday}</p>
</div>
}

<div className="comped">
<h5>Comped Guests</h5>
<p>{formatThousands(totalCompedGuests + (add2020Stats ? totalCompedGuests2020 : 0))}</p>
</div>
{checkScope(user.role, 'write') &&
<div className="comped">
<h5>Comped Guests</h5>
<p>{formatThousands(totalCompedGuests + (add2020Stats ? totalCompedGuests2020 : 0))}</p>
</div>
}

<div className="vip">
<h5>VIP Guests</h5>
Expand All @@ -126,7 +128,7 @@ const Dashboard = () => {
</div>
</div>
</div>
{checkScope(user.role, 'read') &&
{checkScope(user.role, 'write') &&
<div className="extended-stats">
{!!extendedStats && extendedStats.eventId === event.id
? <>
Expand Down
12 changes: 7 additions & 5 deletions src/components/EventsChart.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ ChartJS.register(CategoryScale, LineElement, PointElement, LinearScale, Title, T
const availableTypes = [
{
id: 'openingSales',
name: 'Opening Day Ticket Sales'
name: 'Opening Day Tickets'
},
{
id: 'tickets',
name: 'Daily Ticket Sales'
name: 'Daily Tickets'
},
{
id: 'ticketsAcc',
name: 'Acc. Ticket Sales'
name: 'Acc. Tickets'
},
{
id: 'checkIns',
Expand All @@ -34,9 +34,10 @@ const availableTypes = [
const generateDailyTicketsSeries = chartData => ({
// Set this 8 hours in the future since the ISO strings come back at 00:00 UTC
// This avoids using a timezone package since we can assume most dashboard viewing is in PT
labels: chartData.map(({ date }) => format((new Date(date)).setUTCHours(8), 'M/dd')),
// Also, skip the opening day of sales (which blows the scale off)
labels: chartData.slice(1).map(({ date }) => format((new Date(date)).setUTCHours(8), 'M/dd')),
datasets: [{
data: chartData.map(({ tickets }) => tickets),
data: chartData.slice(1).map(({ tickets }) => tickets),
label: 'Daily Tickets Sold',
lineTension: 0.3,
fill: false,
Expand Down Expand Up @@ -151,6 +152,7 @@ const EventsChart = () => {
))}
</select>
</div>
{graphType === 'tickets' && <small>(excludes {ticketsChartData[0].tickets} from opening day)</small>}
<div className="chart-wrapper">
<Line
data={data}
Expand Down
Loading