我无法理解(并编写)需要将用户工资从欧元转换为美元或全部(阿尔巴尼亚列克)的算法。
使用此代码,我获得了所有参与项目的用户(可以找到更多信息here)
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);
array_push($wages,$wage,$wageDate, $wageCurrency);
}
}
这就是诀窍,它可以获得用户工资,工资结束日期和货币。 现在在Exchange,admin会在每个月的最后一天添加一个交换,
用户可以在5个月内获得相同的工资,但在这几个月内,汇率可能会发生变化,所以我想在计算每个月的费率后计算总价。
用于乘法我设计了这段代码:
$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;
}
但我不明白如何每个月获得工资,并将其乘以该月的交换价值。
此外,用户工资可能会发生变化。当他的工资估计时间结束时,管理员为他增加了新的工资。不确定是否需要这样做。
Exchange的Fillables是这个
protected $fillable =[
'euro_lek', 'dollar_lek', 'date',
];