用PHP Laravel

时间:2017-09-05 10:11:49

标签: php laravel

我无法理解(并编写)需要将用户工资从欧元转换为美元或全部(阿尔巴尼亚列克)的算法。

使用此代码,我获得了所有参与项目的用户(可以找到更多信息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',
    ];

0 个答案:

没有答案