Calcola il salario dell'utente su diversi tassi di cambio in PHP Laravel

Non riesco a capire (e scrivere) l'algorithm che deve convertire il salario dell'utente da Euro a USD o ALL (albanese Lek).

Con questo codice, ottengo tutti gli utenti che fanno parte di un progetto (ulteriori informazioni possono essere trovate qui )

function calculatingWages($project_id) { $project = Project::find($project_id); $projectStartDate = Carbon::parse($project->start_date)->startOfDay(); $projectEndDate = Carbon::parse($project->end_date)->endOfDay(); $usersOfProject = $project->users()->get(); $userWages = UserWage::whereIn('user_id',$usersOfProject->pluck('id')->toArray())->whereBetween('start_date',[ $projectStartDate,$projectEndDate])->whereBetween('end_date',[ $projectStartDate,$projectEndDate])->get(); $wages = []; $sumTotalWage=0; foreach ($userWages as $userWage){ $wage= $userWage->value; $wageDate = $userWage->end_date; $wageCurrency = $userWage->currency; convertingALL($userWage->value, $userWage->currency, $userWage->end_date); arrays_push($wages,$wage,$wageDate, $wageCurrency); } } 

questo fa il trucco, ottiene gli stipendi degli utenti, la data di fine del salario e la loro valuta. Ora presso Exchanges, admin aggiunge uno scambio each ultimo giorno del mese,

L'utente può avere lo stesso salario per 5 mesi, ma durante quei mesi, il tasso di cambio può cambiare, quindi voglio calcolare il prezzo totale dopo essere stato moltiplicato con le tariffe di each mese.

per la moltiplicazione ho progettato questo codice:

  $getCurrency = Exchange::all()->last()->get(); // Added like this so it wont show error, but will do with carbon, like Carbon::lastDayOfMonth $dollar = $getCurrency->dollar_lek; $euro = $getCurrency->euro_lek; if ($currency == 'ALL') { $value = $value; } elseif ($currency == 'USD') { $value = $value * $dollar; } else { $value = $value * $euro; } 

Ma non riesco a capire come get each mese quel salario e moltiplicarlo con il valore dello scambio per quel mese.

Inoltre, gli stipendi degli utenti potrebbero cambiare. quando il tempo stimato del suo stipendio è finito, admin aggiunge un nuovo salario per lui. Non sono sicuro se questo è necessario o less.

Fillables for Exchange sono questo

 protected $fillable =[ 'euro_lek', 'dollar_lek', 'date', ];