Comus Party 1.0.0
Application web de mini-jeux en ligne
Chargement...
Recherche...
Aucune correspondance
invoice.dao.php
Aller à la documentation de ce fichier.
1<?php
9
10namespace ComusParty\Models;
11
12use DateMalformedStringException;
13use DateTime;
14use PDO;
15
21{
26 private ?PDO $pdo;
27
28
33 public function __construct(?PDO $pdo)
34 {
35 $this->pdo = $pdo;
36 }
37
44 public function findById(?int $id): ?Invoice
45 {
46 $stmt = $this->pdo->prepare(
47 'SELECT *
48 FROM ' . DB_PREFIX . 'invoice
49 WHERE id = :id');
50 $stmt->bindParam(':id', $id);
51 $stmt->execute();
52 $stmt->setFetchMode(PDO::FETCH_ASSOC);
53 $invoice = $stmt->fetch();
54 if ($invoice === false) {
55 return null;
56 }
57 return $this->hydrate($invoice);
58 }
59
65 public function hydrate(array $invoiceTab): Invoice
66 {
67 $invoice = new Invoice();
68 $invoice->setId($invoiceTab['id']);
69 $invoice->setCreatedAt(new DateTime($invoiceTab['created_at']));
70 $invoice->setPlayerUuid($invoiceTab['player_uuid']);
71 switch ($invoiceTab['payment_type']) {
72 case 'card':
73 $invoice->setPaymentType(PaymentType::Card);
74 break;
75 case 'paypal':
76 $invoice->setPaymentType(PaymentType::PayPal);
77 break;
78 case 'comuscoins':
79 $invoice->setPaymentType(PaymentType::ComusCoins);
80 break;
81 default:
82 break;
83 }
84 return $invoice;
85 }
86
92 public function createInvoice(string $player_uuid, string $payment_type): void
93 {
94 $stmt = $this->pdo->prepare(
95 'INSERT INTO ' . DB_PREFIX . 'invoice (player_uuid, payment_type)
96 VALUES (:player_uuid, :payment_type)');
97 $stmt->bindParam(':player_uuid', $player_uuid);
98 $stmt->bindParam(':payment_type', $payment_type);
99 $stmt->execute();
100
101 $invoice = $this->getPdo()->lastInsertId();
102 }
103
108 public function getPdo(): ?PDO
109 {
110 return $this->pdo;
111 }
112
117 public function setPdo(?PDO $pdo): void
118 {
119 $this->pdo = $pdo;
120 }
121
128 public function createInvoiceWithArticles(string $player_uuid, string $payment_type, array $articles): void
129 {
130 $stmt = $this->pdo->prepare(
131 'INSERT INTO ' . DB_PREFIX . 'invoice (player_uuid, payment_type)
132 VALUES (:player_uuid, :payment_type)'
133 );
134 $stmt->bindParam(':player_uuid', $player_uuid);
135 $stmt->bindParam(':payment_type', $payment_type);
136 $stmt->execute();
137
138 $invoiceId = $this->pdo->lastInsertId();
139
140 $stmt = $this->pdo->prepare(
141 'INSERT INTO ' . DB_PREFIX . 'invoice_row (invoice_id, article_id) VALUES (:invoice_id, :article_id)'
142 );
143 foreach ($articles as $article) {
144 $stmt->bindParam(':invoice_id', $invoiceId);
145 $stmt->bindParam(':article_id', $article);
146 $stmt->execute();
147 }
148 }
149
150}
createInvoice(string $player_uuid, string $payment_type)
Crée une facture dans la base de données.
hydrate(array $invoiceTab)
getPdo()
Retourne la connexion à la base de données.
findById(?int $id)
Retourne un objet Invoice (ou null) à partir de l'ID passé en paramètre.
createInvoiceWithArticles(string $player_uuid, string $payment_type, array $articles)
Crée une facture avec des articles dans la base de données.
setPdo(?PDO $pdo)
Modifie la connexion à la base de données.
__construct(?PDO $pdo)
Le constructeur de la classe InvoiceDAO.
@ ComusCoins
Paiement par carte bancaire.
const DB_PREFIX
Préfixe des tables de la base de données.
Definition db.php:52