diff options
Diffstat (limited to 'views/mods/mod_ticket/order_view.phtml')
| -rw-r--r-- | views/mods/mod_ticket/order_view.phtml | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/views/mods/mod_ticket/order_view.phtml b/views/mods/mod_ticket/order_view.phtml new file mode 100644 index 0000000..06a16aa --- /dev/null +++ b/views/mods/mod_ticket/order_view.phtml @@ -0,0 +1,125 @@ +<?php + + declare(strict_types=1); + + /** + * @author: Daniel Schmitzer (daniel@maennchen1.de) + * @date: 03.12.23 + * @time: 15:14 + */ + + namespace wpsgTicket; + + /** @var \wpsg_order $oOrder */ + $oOrder = \wpsg_order::getInstance(intval($this->view['data']['id'])); + + $data = []; + + foreach ($oOrder->getOrderProducts() as $oOrderProduct) { + + if (intval($oOrderProduct->getMeta('ticket_id', false, 0)) > 0) { + + for ($amount_index = 0; $amount_index < $oOrderProduct->getAmount(); $amount_index++) { + + $oTicketBooking = TicketBooking::getInstanceByBookingKey(TicketBooking::encodeBookingKey($oOrderProduct->getId(), $amount_index)); + + $data[] = $oTicketBooking->toJSON(); + + } + + } + + } + +?> + +<?php echo wpsg_drawForm_AdminboxStart(__('Ticketbuchungen', 'wpsg')); ?> + <div id="order_view_app"> + + <table> + <thead> + <tr> + <th class="col_ticket"><?php echo __('Ticket', 'wpsg'); ?></th> + <th class="col_product"><?php echo __('Ticket Produkt', 'wpsg'); ?></th> + <th class="col_date"><?php echo __('Datum / Zeitraum', 'wpsg'); ?></th> + <th class="col_state"><?php echo __('Status', 'wpsg'); ?></th> + </tr> + </thead> + <tbody v-for="(row, i) in data"> + <tr> + <td class="col_ticket"> + <a :href="row.urls.pdf" target="_blank">{{row.label}}</a> + </td> + <td class="col_product"> + <a :href="row.urls.product_edit">{{row.ticket_product_label}}</a> + </td> + <td class="col_date">{{row.ticket_data.label}}</td> + <td class="col_state"> + <span :class="{'text-red': row.state_code === <?php echo TicketBooking::STATUS_UNAVAILABLE; ?>, 'text-green': row.state_code === <?php echo TicketBooking::STATUS_AVAILABLE; ?>}">{{row.state_label}}</span> + <span v-if="row.is_send" :title="row.is_send_tooltip" class="ml-4 glyphicon glyphicon-send text-green"></span> + </td> + </tr> + <template v-if="row.arProductVars.length > 0"> + <template v-for="(pv_data, pv_id) of row.arProductVars"> + <tr> + <td colspan="2"> + {{pv_data['name']}}: + </td> + <td colspan="2"> + {{pv_data['value']}} + </td> + </tr> + </template> + </template> + </tbody> + </table> + + <br /> + + <div class="flex items-center gap-2"> + + <a href="<?php echo \add_query_arg([ + 'action' => 'wpsg_ticket', + 'ticket_action' => 'export', + 'order_id' => $oOrder->getId() + ], \admin_url('admin-ajax.php')); ?>" target="_blank" class="button"><?php echo __('Terminübersicht exportieren', 'wpsg'); ?></a> + + <a href="<?php echo \add_query_arg([ + 'action' => 'wpsg_ticket', + 'ticket_action' => 'resend', + 'order_id' => $oOrder->getId() + ], \admin_url('admin-ajax.php')); ?>" class="button"><?php echo __('Tickets per E-Mail an Kunden versenden', 'wpsg'); ?></a> + + </div> + + </div> + <style> + + #order_view_app table { width:100%; } + #order_view_app table tr td { padding:0.25rem 0.5rem 0.25rem 0; border-bottom:1px solid #DEDEDE; } + #order_view_app table tr th { border-bottom:1px solid black; } + #order_view_app .text-red { color:red; } + #order_view_app .text-green { color:green; } + #order_view_app .flex { display:flex; } + #order_view_app .items-center { align-items:center; } + #order_view_app .ml-4 { margin-left:1rem; } + #order_view_app .gap-2 { gap:0.5rem; } + + </style> +<?php echo wpsg_drawForm_AdminboxEnd(); ?> + +<script type="module"> + + const wpsgSettings = { + baseUrl: '<?php echo WPSG_URL; ?>' + }; + + import { order_view } from '<?php echo WPSG_URL; ?>mods/mod_ticket/assets/js/wpsg_order_view.js'; + + order_view(wpsgSettings, <?php echo json_encode([ + 'order_id' => $oOrder->getId(), + 'data' => $data, + 'ajax_url' => \admin_url('admin-ajax.php') + ]); ?>); + +</script> |
