public decimal GasDiscTotal(GasBill gasBill, Tariff tariff)
 {
     decimal totalValue = 0;
     List<decimal> tariffStr = tariff.ParseDiscString(tariff.GasDiscString);
     if (tariffStr.Count == 5)
     {
         if (gasBill.GasUsage >= tariffStr[0])
         {
             totalValue += tariffStr[0] * tariffStr[2];
             if (gasBill.GasUsage < tariffStr[1])
             {
                 totalValue += (gasBill.GasUsage - tariffStr[0]) * tariffStr[3];
             }
             else
             {
                 totalValue += ((tariffStr[1] - tariffStr[0]) * tariffStr[3]) + ((gasBill.GasUsage - tariffStr[1]) * tariffStr[4]);
             }
         }
         else
         {
             return gasBill.GasUsage * tariffStr[2];
         }
         return totalValue;
     }
     return totalValue;
 }
 public decimal ElectroDiscTotal(ElectroBill electroBill, Tariff tariff)
 {
     decimal totalValue = 0;
     List<decimal> tariffStr = tariff.ParseDiscString(tariff.ElectroDiscString);
     if (tariffStr.Count == 5)
     {
         if (electroBill.ElectroUsage >= tariffStr[0])
         {
             totalValue += tariffStr[0] * tariffStr[2];
             if (electroBill.ElectroUsage < tariffStr[1])
             {
                 totalValue += (electroBill.ElectroUsage - tariffStr[0]) * tariffStr[3];
             }
             else
             {
                 totalValue += ((tariffStr[1] - tariffStr[0]) * tariffStr[3]) + ((electroBill.ElectroUsage - tariffStr[1]) * tariffStr[4]);
             }
         }
         else
         {
             return electroBill.ElectroUsage * tariffStr[2];
         }
         return totalValue;
     }
     return totalValue;
 }
 public decimal WaterDiscTotal(WaterBill waterBill, Tariff tariff)
 {
     decimal totalValue = 0;
     List<decimal> tariffStr = tariff.ParseDiscString(tariff.WaterDiscString);
     if (tariffStr.Count == 5)
     {
         if (waterBill.WaterUsage >= tariffStr[0])
         {
             totalValue += tariffStr[0] * tariffStr[2];
             if (waterBill.WaterUsage < tariffStr[1])
             {
                 totalValue += (waterBill.WaterUsage - tariffStr[0]) * tariffStr[3];
             }
             else
             {
                 totalValue += ((tariffStr[1] - tariffStr[0]) * tariffStr[3]) + ((waterBill.WaterUsage - tariffStr[1]) * tariffStr[4]);
             }
         }
         else
         {
             return waterBill.WaterUsage * tariffStr[2];
         }
         return totalValue;
     }
     return totalValue;
 }