
где
id = trasactionID
type = тип транзакции (EARN = пользователь получает баллы из магазина, REDEEM = пользователь использует баллы)
expiredAt = балл срок действия (до истечения срока действия балла EARN остался 1 год)
Моя проблема в том, что мне нужно рассчитать
- оставшееся количество баллов для Пользователь. например. Если я запрошу в этот день (19 февраля 2024 г.), сколько осталось баллов. (точка истечения срока не должна рассчитываться)
- Точка истечения (в этом месяце)
Код: Выделить всё
public function calculateRemainingPoints($memberId)
{
// Fetch all transactions for the memberId
$transactions = Transaction::where('memberId', $memberId)->orderBy('created_at')->get();
// Initialize total points
$totalPoints = 0;
// Process each transaction
foreach ($transactions as $transaction) {
if ($transaction->type == 'EARN') {
// Check if the EARN points are not expired
$expiredAt = Carbon::parse($transaction->expiredAt);
$currentDate = Carbon::now();
if ($expiredAt->gt($currentDate)) {
// Accumulate EARN points
$totalPoints += $transaction->points;
}
} elseif ($transaction->type == 'REDEEM') {
// Deduct REDEEM points
$totalPoints -= $transaction->points;
}
}
return $totalPoints;
}Подробнее здесь: https://stackoverflow.com/questions/780 ... ty-program
Мобильная версия