如何将日期范围应用于策略

时间:2017-03-20 17:41:01

标签: c# entity-framework

我正在研究这个proecdure,以便表格将具有以下内容

  

政策表格ID开始日期结束日期年龄金额

     

如果最年轻的司机在开始日期年龄介于21至25岁之间   该政策将保费增加20%

     

如果最年轻的司机在保单开始日期年龄介乎26至75岁,则保费减少10%

我相信我已经管理了最大的驱动程序和年龄范围,但我不知道如何在政策开始日期对其进行修饰。

客户政策的默认值为500英镑

public void UpdatePolicyAgePremium(int policyid)
    {
    Decimal defaultAmount = Convert.ToDecimal(500);
    var drivergroups = appliedDB.tblDrivers
      .Where(b => b.policy_Id == policyid && b.age > 21 && b.age < 75)
      .GroupBy(drv => drv.age <= 25).ToList(); // or < 25 ?

    var policy = appliedDB.tblPolicies
                          .Single(p => p.id == policyid);

    foreach (var driverGroup in drivergroups)
    {
        var young = driverGroup.Key;
        decimal multiplier = young ? 1.2m : 1.1m;
        foreach (var driver in driverGroup.OrderBy(d => d.age))
        {
            policy.amount = defaultAmount * multiplier;
            multiplier = 1m; // so only the first iteration is multiplied.
        }
    }

}

1 个答案:

答案 0 :(得分:0)

存储birtdate,只计算开始日期的人的年龄,然后应用年龄规则。您可以计算年龄

  //assuming start date is now, but //depends on your implementation
    DateTime startDate = DateTime.Now   ;

    var age = today.Year - birthdate.Year;

然后您有应用规则的年龄