Hallo!
Ich stehe bei der Entwicklung einer Webseite vor einem Problem über welches ich mir seit Tagen den Kopf zerbreche. Mir machen "Denkspiele" solcher Art Spaß, aber dieses überschreitet ein wenig meine Hirnkapazität als Hobby-Webdesigner, deswegen hoffe ich hier professionelle Hilfe zu bekommen.
Auf meiner Webseite sollen Benutzer eine Art premium Mitgliedschaft kaufen können. Dieses Produkt biete ich in 6 verschiedenen Paketen von 1 bis 6 Jahren Mitgliedschaft an.
Hier ein Einblick in die Tabelle "payments":
(ledeglich Test-Datensätze)
Ein Benutzer, welcher keine Premium-Mitgliedschaft hat, hat in meiner Datenbank einen "user_status" von "1".
Premium Mitglieder sollen einen Status von "2" haben. Den Status von "2" kann ein Benutzer jedoch nicht in der Datenbank haben, er errechnet sich ledeglich in PHP abhängig davon, ob er eine Zahlung in der Vergangenheit gemacht hat und diese momentan noch nicht abgelaufen ist.
So weit also noch nicht allzu kompliziert umzusetzen.
Ich möchte dem Benutzer jedoch die Möglichkeit bieten, seinen Premium-Status zu verlängern während er noch Premium Status hat. Diese neue Zahlung soll ihre Gültigkeit also folglich erst dann beginnen, wenn wenn die Laufzeit der alten Zahlung abgelaufen ist.
In meiner Datenbank möchte ich jedoch auf ein weiteres Feld wie "gültig ab" verzichten, da womöglich alte Zahlungen annuliert werden und die neuere dann sofort greifen soll. Außerdem denke ich, dass das eine unsaubere Lösung wäre, da ja der Ablauf dr Premium Mitgliedschaft immer abhängig von allen Zahlungen berechnet werden kann.
Ich habe hier mal ein Beispiel gemacht..
In diesem Beispiel ist veranschaulicht, dass ein Benutzer mitte 2014 mal ein Jahr Premium Mitgliedschaft gekauft hat. Danach war er kurz wieder Basis-Mitglied, und hat kurz vor 2015 ein 2-Jahres Paket gekauft. Dieses würde 2017 ablaufen, davor hat er jedoch erneut 1 Jahr gekauft, und dann erneut 1 Jahr. Seine Mitgliedschaft läuft also erst irgendwann 2019 ab, nicht 2018 wie es in der Grafik steht. Die Zahlungen sollen sich also aneinanderreihen.
Hier eine Grafik, wie die Zahlungen theoretisch aneinandergereiht werden sollen, um das tatsächliche Verfallsdatum zu berechnen.
In PHP habe ich eine Klasse für Zahlungen, diese beinhaltet Informationen wie: Zahlungsdatum, Produkt-Laufzeit und relatives Verfallsdatum (relativ, da das Verfallsdatum ja von früher getätigten, noch aktiven Zahlungen abhängig ist).
Hier also mein Ansatz:
Leider stehe ich total auf dem Schlauch wie ich das nun zu berechnen habe...
Ich hoffe das war einigermaßen verstädnlich und jemand kann mir einen Denkanstoß geben!
Tausen Dank im vorraus schonmal!
Ich stehe bei der Entwicklung einer Webseite vor einem Problem über welches ich mir seit Tagen den Kopf zerbreche. Mir machen "Denkspiele" solcher Art Spaß, aber dieses überschreitet ein wenig meine Hirnkapazität als Hobby-Webdesigner, deswegen hoffe ich hier professionelle Hilfe zu bekommen.
Auf meiner Webseite sollen Benutzer eine Art premium Mitgliedschaft kaufen können. Dieses Produkt biete ich in 6 verschiedenen Paketen von 1 bis 6 Jahren Mitgliedschaft an.
Hier ein Einblick in die Tabelle "payments":
(ledeglich Test-Datensätze)
Ein Benutzer, welcher keine Premium-Mitgliedschaft hat, hat in meiner Datenbank einen "user_status" von "1".
Premium Mitglieder sollen einen Status von "2" haben. Den Status von "2" kann ein Benutzer jedoch nicht in der Datenbank haben, er errechnet sich ledeglich in PHP abhängig davon, ob er eine Zahlung in der Vergangenheit gemacht hat und diese momentan noch nicht abgelaufen ist.
So weit also noch nicht allzu kompliziert umzusetzen.
Ich möchte dem Benutzer jedoch die Möglichkeit bieten, seinen Premium-Status zu verlängern während er noch Premium Status hat. Diese neue Zahlung soll ihre Gültigkeit also folglich erst dann beginnen, wenn wenn die Laufzeit der alten Zahlung abgelaufen ist.
In meiner Datenbank möchte ich jedoch auf ein weiteres Feld wie "gültig ab" verzichten, da womöglich alte Zahlungen annuliert werden und die neuere dann sofort greifen soll. Außerdem denke ich, dass das eine unsaubere Lösung wäre, da ja der Ablauf dr Premium Mitgliedschaft immer abhängig von allen Zahlungen berechnet werden kann.
Ich habe hier mal ein Beispiel gemacht..
In diesem Beispiel ist veranschaulicht, dass ein Benutzer mitte 2014 mal ein Jahr Premium Mitgliedschaft gekauft hat. Danach war er kurz wieder Basis-Mitglied, und hat kurz vor 2015 ein 2-Jahres Paket gekauft. Dieses würde 2017 ablaufen, davor hat er jedoch erneut 1 Jahr gekauft, und dann erneut 1 Jahr. Seine Mitgliedschaft läuft also erst irgendwann 2019 ab, nicht 2018 wie es in der Grafik steht. Die Zahlungen sollen sich also aneinanderreihen.
Hier eine Grafik, wie die Zahlungen theoretisch aneinandergereiht werden sollen, um das tatsächliche Verfallsdatum zu berechnen.
In PHP habe ich eine Klasse für Zahlungen, diese beinhaltet Informationen wie: Zahlungsdatum, Produkt-Laufzeit und relatives Verfallsdatum (relativ, da das Verfallsdatum ja von früher getätigten, noch aktiven Zahlungen abhängig ist).
Hier also mein Ansatz:
Code:
<?php
private
function determine_status($id)
{
// user status in db can never be 2 or 3, those are calculated from payments
if ($id == 1)
{
// get all payments to this user
$payments_received = array();
foreach($this->user->payments as $payment)
{
if ($payment->benefited_id == $this->user->id)
{
array_push($payments_received, $payment);
}
}
// chain all payments
$payment_chains = array();
foreach($payments_received as $payment_received)
{
}
}
else
{
return $id;
}
}
Leider stehe ich total auf dem Schlauch wie ich das nun zu berechnen habe...
Ich hoffe das war einigermaßen verstädnlich und jemand kann mir einen Denkanstoß geben!
Tausen Dank im vorraus schonmal!