diff --git a/ag/auktion.php b/ag/auktion.php
index 9099788..c1c30e2 100644
--- a/ag/auktion.php
+++ b/ag/auktion.php
@@ -43,21 +43,32 @@ $dir = $_GET['dir'];
$kategorie = $_GET['kategorie'];
-function stelleBietenMaskeDar($userid,$auktionsid,$gebot){
+function stelleBietenMaskeDar($userid, $auktionsid, $gebot, $anzahl){
+ $auktionsdaten = getEntryInformation($auktionsid);
+ if ( $auktionsdaten['type'] == 1 ) {
+ stelleBietenMaskeDarNormal($userid, $auktionsdaten, $gebot);
+ } else if ($auktionsdaten['type'] == 2) {
+ stelleBietenMaskeDarInverse($userid, $auktionsdaten, $gebot, $anzahl);
+ } else {
+ displayErrorMessage(NULL, 'Auktionstype nicht unterstüzt!!',displayHistoryBackLink());
+ }
+}
+
+function stelleBietenMaskeDarNormal($userid,$auktionsdaten,$gebot) {
+ if ($auktionsdaten === NULL) {
+ displayErrorMessage(NULL, 'Auktion ist nicht mehr verfügbar!!',displayHistoryBackLink());
+ return;
+ }
+
if($gebot != NULL && $gebot != ''){
- $errorMsg = biete($userid,$auktionsid,$gebot);
+ $errorMsg = biete($userid,$auktionsdaten['auktionsid'],$gebot);
if($errorMsg == ''){
echo 'Es wurde erfolgreich für das Item geboten!
';
} else{
echo 'Es ist beim Bieten ein Fehler aufgetreten: '.$errorMsg.'!
';
}
}
- $auktionsdaten = getEntryInformation($auktionsid);
- if ($auktionsdaten === NULL) {
- displayErrorMessage(NULL, 'Auktion ist nicht mehr verfügbar!!',displayHistoryBackLink());
- return;
- }
-?>
+ ?>
';
+ } else{
+ echo 'Es ist beim Bieten ein Fehler aufgetreten: '.$errorMsg.'!
';
+ }
+ }
+
+ $listing = array();
+ $qry = db_query('select range_from, range_to from inverse_auktion_gebote WHERE bieter = '.$userid.' and auktionsid = '.$auktionsdaten['auktionsid'].' order by range_from asc');
+ while ($row = mysqli_fetch_assoc($qry)) {
+ if ($row['range_from'] == $row['range_to']) {
+ $listing[] = displayMoney($row['range_from']);
+ } else {
+ $listing[] = displayMoney($row['range_from']).'-'.displayMoney($row['range_to']);
+ }
+ }
+ ?>
+
+
+
+
if($id_db_mix != '' && !is_null($id_db_mix)){
@@ -239,14 +344,24 @@ function stelleAuktionsuebersichtDar($userid,$kategorie,$itemnamepart,$entries,$
else{
echo preg_replace(array('/###ORDER###/','/###LABEL###/'), array('order=itemname&dir=ASC','Item'),$orderstring);
}
+?>
+
+
+
|
@@ -261,9 +376,9 @@ function stelleAuktionsuebersichtDar($userid,$kategorie,$itemnamepart,$entries,$
|
|
@@ -293,6 +408,7 @@ function stelleAuktionsuebersichtDar($userid,$kategorie,$itemnamepart,$entries,$
while($aktionentries[$index] != NULL){
echo "\t\t\t\t".''."\n";
echo "\t\t\t\t\t".''.displayItemLink($aktionentries[$index]['tablename'], $aktionentries[$index]['itemid'], $aktionentries[$index]['itemname']).' | '."\n";
+ echo "\t\t\t\t\t".''.($aktionentries[$index]['tablename']==1?'Normal':'Inverse').' | '."\n";
if($aktionentries[$index]['aktuellesgebot'] != NULL){
echo "\t\t\t\t\t".''.displayMoney($aktionentries[$index]['aktuellesgebot']).' | '."\n";
} else{
@@ -396,7 +512,7 @@ function zieheAuktionZurueck($userid,$auktionsid,$pay){
if(isset($user_ida['id'])){
// Abfrage der uebergebenen Aktionen
if($action == 1){ // Bieten für eine Auktion
- stelleBietenMaskeDar($user_ida['id'],$auktionsid, $gebot);
+ stelleBietenMaskeDar($user_ida['id'],$auktionsid, $gebot, $anzahl);
} else if($action == 2){ // Erstellen einer Auktion
stelleAuktionErstellenMaskeDar($user_ida['id'],$items,$anzahl,$start);
} elseif($action == 3){ // Zurueckziehen einer Auktion
diff --git a/ag/include/auktion_functions.inc.php b/ag/include/auktion_functions.inc.php
index e3cb965..d19d6fb 100644
--- a/ag/include/auktion_functions.inc.php
+++ b/ag/include/auktion_functions.inc.php
@@ -22,8 +22,9 @@ include_once(ROOT_PATH.'/include/config.inc.php');
include_once(ROOT_PATH.'/include/messagefunctions.inc.php');
include_once(ROOT_PATH.'/include/semaphore.inc.php');
include_once(ROOT_PATH.'/include/fehlerausgabe.inc.php');
+include_once(ROOT_PATH.'/include/defines.inc.php');
-
+defineIfNotDefined('AUCTION_FEE_FACTOR', 0.05);
// Funktion um das aktuelle Mindestgebot einer Auktion zu ermitteln!
// Returns Mindestgebot
@@ -63,7 +64,7 @@ function getUserAvailableMoney($userid) {
// Funktion zum bieten für eine Auktion
// Returns '' wenn alles ok, ansonsten eine Fehlerausgabe
// @Return String
-function biete($userid, $auktionsid, $gebot){
+function biete($userid, $auktionsid, $gebot, $anzahl = 0){
// Keine Kommagebote!! Immer Abrunden!!
if(!is_numeric($gebot) || floor($gebot) <= 0){
return 'Gebot ungültig!';
@@ -71,23 +72,35 @@ function biete($userid, $auktionsid, $gebot){
$gebot = floor($gebot);
$auktionsdaten = getEntryInformation($auktionsid);
- $itemname = $auktionsdaten['itemname'];
- $aktuellesgebot = $auktionsdaten['aktuellesgebot'];
- $startgebot = $auktionsdaten['startgebot'];
- $deadline = $auktionsdaten['deadline'];
- $zeitdifferenz = $auktionsdaten['zeitdifferenz'];
- $bieter = $auktionsdaten['bieter'];
- $anbieter = $auktionsdaten['anbieter'];
-
if($userid == $anbieter){
return 'Sie können nicht auf eigene Items bieten';
}
+ $zeitdifferenz = $auktionsdaten['zeitdifferenz'];
// Nun erstmal pruefen ob noch geboten werden kann
if($zeitdifferenz < 0){
return 'Deadline abgelaufen!';
}
+ $type = $auktionsdaten['type'];
+ if ($type == 1) {
+ return biete_normal($userid, $auktionsdaten, $gebot);
+ } else if ($type == 2) {
+ return biete_inverse($userid, $auktionsdaten, $gebot, $anzahl);
+ }
+ return 'Nicht unterstützer Aktionstyp!';
+}
+
+function biete_normal($userid, $auktionsdaten, $gebot) {
+ $auktionsid = $auktionsdaten['auktionsid'];
+ $itemname = $auktionsdaten['itemname'];
+ $aktuellesgebot = $auktionsdaten['aktuellesgebot'];
+ $startgebot = $auktionsdaten['startgebot'];
+ $deadline = $auktionsdaten['deadline'];
+ $zeitdifferenz = $auktionsdaten['zeitdifferenz'];
+ $bieter = $auktionsdaten['bieter'];
+ $anbieter = $auktionsdaten['anbieter'];
+
// Was ist das aktuelle startgebot?? Rufe die Funktion auf!
$klGebot = aktuellesMindestgebot($auktionsid);
@@ -128,6 +141,51 @@ function biete($userid, $auktionsid, $gebot){
// db_query($new_query);
// echo '
'.$new_query.'
';
return ''; // Leerer String, also kein Fehler!
+
+}
+
+function biete_inverse($userid, $auktionsdaten, $gebot, $gebot2) {
+ $auktionsid = $auktionsdaten['auktionsid'];
+ $itemname = $auktionsdaten['itemname'];
+ $aktuellesgebot = $auktionsdaten['aktuellesgebot'];
+ $startgebot = $auktionsdaten['startgebot'];
+ $deadline = $auktionsdaten['deadline'];
+ $zeitdifferenz = $auktionsdaten['zeitdifferenz'];
+ $bieter = $auktionsdaten['bieter'];
+ $anbieter = $auktionsdaten['anbieter'];
+
+ if(!is_numeric($gebot2) || floor($gebot2) < $gebot){
+ return 'Gebot ungültig!';
+ }
+
+ if($gebot < $startgebot){
+ return 'Es muss mindestens '.$startgebot.' geboten werden';
+ }
+
+ $fee = ($gebot2 - $gebot + 1) * $startgebot * AUCTION_FEE_FACTOR;
+
+ //Nun muss noch geprueft werden ob der User genug Geld hat und auch mit allen Geboten gesamt nicht in den Minusbereich kommt
+ $user_a = mysqli_fetch_assoc(db_query('SELECT nickname, geld FROM user WHERE id = '.$userid));
+ $usermoney = $user_a['geld'];
+ $auktionensumme = mysqli_fetch_assoc(db_query('SELECT SUM(aktuellesgebot) as summe FROM auktion WHERE bieter = '.$userid.' AND auktionsid != '.$auktionsid.' GROUP BY bieter'));
+ $auktionensumme = $auktionensumme['summe'];
+
+ $required_money = $auktionensumme + $gebot + $fee;
+
+ if($usermoney < $required_money){
+ return 'Nicht genug Geld!';
+ }
+
+
+
+ db_query('UPDATE user SET geld = geld - '.$fee.' WHERE geld >= '.$required_money);
+
+ if (db_affected_rows() == 0) {
+ return 'Fehler beim Abbuchen der Gebühr!';
+ }
+ $sql = 'INSERT INTO inverse_auktion_gebote(auktionsid, bieter, range_from, range_to) values('.$auktionsid.','.$userid.','.$gebot.','.$gebot2.')';
+ db_query($sql);
+ return ''; // Leerer String, also kein Fehler!
}
// Funktion erstellt die Optionen die Auswahl
@@ -297,7 +355,7 @@ function getAuktionEntries($kategorie,$itemnamepart,$entriesPerSite,$pageNumber,
$stringDelimiter = ' AND itemname LIKE \'%'.$itemnamepart.'%\' ';
}
$index = 0;
- $test = 'SELECT a.auktionsid, u.nickname AS anbietername, u2.nickname AS bietername, a.deadline, a.aktuellesgebot, a.startgebot, a.anzahl, a.itemname, a.bieter, a.anbieter, a.itemid, a.tablename FROM auktion AS a INNER JOIN user as u ON a.anbieter = u.id LEFT JOIN user as u2 ON a.bieter = u2.id WHERE 1 '.$kategorieDelimitier.$stringDelimiter.$priceDelimiter.' AND TIMESTAMPDIFF(Minute,now(),deadline) >= 0 ORDER BY '.$order.' '.$dir.' '.$interval;
+ $test = 'SELECT u.nickname AS anbietername, u2.nickname AS bietername, a.* FROM auktion AS a INNER JOIN user as u ON a.anbieter = u.id LEFT JOIN user as u2 ON a.bieter = u2.id WHERE 1 '.$kategorieDelimitier.$stringDelimiter.$priceDelimiter.' AND TIMESTAMPDIFF(Minute,now(),deadline) >= 0 ORDER BY '.$order.' '.$dir.' '.$interval;
$qry = db_query($test);
//echo '
'.$test.'
';
while($result = mysqli_fetch_assoc($qry)){
@@ -308,7 +366,7 @@ function getAuktionEntries($kategorie,$itemnamepart,$entriesPerSite,$pageNumber,
function getEntryInformation($auktionsid){
if(!is_numeric($auktionsid)){return;}
- $qry = db_query('SELECT u.nickname AS anbietername, u2.nickname AS bietername, a.auktionsid,a.anbieter,a.bieter,a.itemid,a.itemname,a.tablename,a.anzahl,a.startgebot,a.aktuellesgebot,a.deadline,a.startdate,a.cheatingverdacht, TIMESTAMPDIFF(Minute,now(),deadline) AS zeitdifferenz FROM auktion AS a INNER JOIN user as u ON a.anbieter = u.id LEFT JOIN user as u2 ON a.bieter = u2.id WHERE auktionsid = '.$auktionsid);
+ $qry = db_query('SELECT u.nickname AS anbietername, u2.nickname AS bietername, a.*, TIMESTAMPDIFF(Minute,now(),deadline) AS zeitdifferenz FROM auktion AS a INNER JOIN user as u ON a.anbieter = u.id LEFT JOIN user as u2 ON a.bieter = u2.id WHERE auktionsid = '.$auktionsid);
if(mysqli_num_rows($qry) == 0){ return NULL; }
return mysqli_fetch_assoc($qry);
}