Skip to content

Commit 15b358f

Browse files
committed
checkin
1 parent 6919c8a commit 15b358f

File tree

6 files changed

+103
-14
lines changed

6 files changed

+103
-14
lines changed

README.md

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,51 @@
7272
}
7373

7474
return "$result";
75-
}
75+
}
76+
77+
/**
78+
* Update ticket ID with the provided status
79+
* @param type $ticketID
80+
*/
81+
function checkin($ticketID) {
82+
$status = "Checked In";
83+
84+
global $wpdb;
85+
$table_name = $wpdb->prefix . 'fooevents_check_in';
86+
87+
$events_query = new WP_Query( array('post_type' => array('event_magic_tickets'), 'meta_query' => array( array( 'key' => 'WooCommerceEventsTicketID', 'value' => $ticketID ) )) );
88+
$ticket = $events_query->get_posts();
89+
$ticket = $ticket[0];
90+
91+
$eventID = get_post_meta($ticket->ID, 'WooCommerceEventsProductID', true);
92+
93+
$timestamp = current_time('timestamp');
94+
95+
$statusChanged = false;
96+
97+
$currentStatus = get_post_meta($ticket->ID, 'WooCommerceEventsStatus', true);
98+
$result['oldStatus'] = $currentStatus;
99+
100+
if ( $currentStatus != $status ) {
101+
102+
$statusChanged = true;
103+
104+
update_post_meta( $ticket->ID, 'WooCommerceEventsStatus', strip_tags( $status ));
105+
106+
}
107+
108+
$wpdb->insert($table_name, array(
109+
'tid' => $ticket->ID,
110+
'eid' => $eventID,
111+
'day' => 1,
112+
'uid' => get_current_user_id(),
113+
'status' => $status,
114+
'checkin' => $timestamp
115+
));
116+
117+
$result['response'] = $statusChanged ? 'Status updated' : 'Status unchanged';
118+
return $result;
119+
}
76120

77121

78122

@@ -132,6 +176,29 @@
132176
exit();
133177
}
134178

179+
/**
180+
* Update ticket status
181+
*/
182+
public function fooevents_callback_checkin(WP_REST_Request $request) {
183+
$authorize_result = $this->fooevents_is_authorized_user($request->get_headers());
184+
185+
if ( $authorize_result && is_object($authorize_result) && is_a($authorize_result, 'WP_User') ) {
186+
error_reporting(0);
187+
ini_set('display_errors', 0);
188+
189+
$ticketID = $request->get_param("id");
190+
$status = $request->get_param("param3");
191+
192+
$output = checkin($ticketID);
193+
194+
echo json_encode($output);
195+
} else {
196+
echo json_encode($authorize_result);
197+
}
198+
199+
exit();
200+
}
201+
135202
### Kódrészlet amit le ki kell egészíteni:
136203

137204
$rest_api_endpoints = array('login_status',
@@ -147,7 +214,8 @@
147214

148215
'get_check_in',
149216
150-
'update_coupon'
217+
'update_coupon',
218+
'checkin'
151219
);
152220

153221
### Az elejére el kell helyezni a cross origin engedélyezéséhez:

docs/main.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/_services/data.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@ export class DataService {
2525
return this.http.post<any>(`${environment.apiUrl}/delete_test_tickets`, null);
2626
}
2727

28+
//TODO
2829
updateTicket(ticketId: string, attendeeName: string, attendeeId: string, accompanist: string) {
2930
return this.http.post<any>(`${environment.apiUrl}/update_ticket?id=` + ticketId + `&name=` + attendeeName + `&attendee-id=` + attendeeId + `&accompanist=` + accompanist, null);
3031
}
3132

33+
//TODO
3234
resendTicket(ticketId: string) {
3335
return this.http.post<any>(`${environment.apiUrl}/send_ticket?id=` + ticketId, null);
3436
}

src/app/home/home.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export class HomeComponent implements OnInit {
4949

5050
interval(15 * 1000)
5151
.subscribe(() => { if (this.autoRefresh) { this.loadData(); } });
52-
interval(60 * 60 * 1000)
52+
interval(30 * 60 * 1000)
5353
.subscribe(() => { if (this.autoRefresh) { this.hardReload(); } });
5454
}
5555

src/app/home/ticket-dialog/checkin.dialog.html

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,18 @@ <h1 mat-dialog-title>Beléptetés</h1>
2727
</button>
2828
</mat-form-field>
2929
</form>
30-
<div *ngIf="selectedTicket" style="text-align: center;">
31-
Név: {{selectedTicket.attendeeName}}<br>
32-
ID: {{selectedTicket.attendeeId}}<br>
33-
Kísérő: {{selectedTicket.accompanist}}<br>
34-
Státusz: {{selectedTicket.WooCommerceEventsStatus}}
30+
<div *ngIf="selectedTicket" style="text-align: center;line-height: 32px;font-size: 30px;">
31+
Név: <b>{{selectedTicket.attendeeName}}</b><br>
32+
ID: <b>{{selectedTicket.attendeeId}}</b><br>
33+
Státusz: {{oldStatus}}->{{selectedTicket.WooCommerceEventsStatus}}<br>
34+
Kísérő: {{selectedTicket.accompanist}}<br>
35+
Meghívó ID: {{selectedTicket.WooCommerceEventsTicketID}}
3536
</div>
3637
</div>
3738
<div mat-dialog-actions>
3839
<button mat-button (click)="onNoClick()">Bezárás</button>
39-
<mat-checkbox class="example-margin" [(ngModel)]="codeReader">Code reader</mat-checkbox>
40+
<button mat-raised-button color="accent" aria-label="Not Checked In" (click)="updateStatus('Not Checked In')" *ngIf="selectedTicket">
41+
Cancel Check In <mat-icon>check_circle_outline</mat-icon>
42+
</button>
43+
<mat-checkbox class="example-margin" [(ngModel)]="codeReader" style="margin-left: 10px;margin-top: 10px;">Code reader</mat-checkbox>
4044
</div>

src/app/home/ticket-dialog/checkin.dialog.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export class CheckinDialog implements AfterViewInit {
2121
selectedTicket: Ticket;
2222
codeReader = true;
2323
color = "white";
24+
oldStatus : string;
2425

2526
@ViewChild('search') private searchRef: ElementRef;
2627

@@ -53,11 +54,25 @@ export class CheckinDialog implements AfterViewInit {
5354

5455
checkIn(id: string) {
5556
this.selectedTicket = this.data.tickets.filter(ticket => ticket.WooCommerceEventsTicketID === id)[0];
56-
this.color = this.selectedTicket.WooCommerceEventsStatus == "Not Checked In" ? "green" : "yellow";
57-
/*this.dataService.checkin(id).subscribe(result => {
58-
this.selectedTicket = result;
57+
this.color = this.selectedTicket.WooCommerceEventsStatus == "Not Checked In" ? "white" : "yellow";
58+
this.oldStatus = "?";
59+
this.dataService.checkin(id).subscribe(result => {
60+
this.oldStatus = result.oldStatus;
61+
62+
if(result.response == "Status updated" && result.oldStatus == "Not Checked In") {
63+
this.color = "lawngreen";
64+
this.selectedTicket.WooCommerceEventsStatus = "Checked In";
65+
} else {
66+
this.color = "red";
67+
}
5968
this.searchRef.nativeElement.focus();
60-
});*/
69+
});
70+
}
71+
72+
updateStatus(status: string) {
73+
this.dataService.updateStatus(this.selectedTicket.WooCommerceEventsTicketID, status).subscribe(result => {
74+
this.selectedTicket.WooCommerceEventsStatus = status;
75+
});
6176
}
6277

6378
onNoClick(): void {

0 commit comments

Comments
 (0)