<?php
NactiMesicniParametry();

function RecalculateTariffs($Period = 1)
{
  global $Tarify, $MaxSpeed, $Internet, $SpeedElement, $BaseSpeedElement, $Database;
    
  $ResidualPrice = $Internet;
  $ResidualSpeed = $MaxSpeed;
  
  $Tarify = array();
  $DbResult = $Database->select('finance_tariffs', '*', 'period='.$Period.' ORDER BY speed_factor');
  while($Tariff = $DbResult->fetch_array())
  {
    $Tarify[$Tariff['id']] = $Tariff;
  }  

  if($Period == 0) $Column = 'now'; else $Column = 'next';
  $TotalUserCount = 0;
  $TotalUnits = 0;
  $TotalTarifUnits = 0;
  $TotalTarifSpeedUnits = 0;
  foreach($Tarify as $Index => $Tarif)
  {
    $DbResult = $Database->select('users', 'COUNT(*)', 'inet_tarif_'.$Column.'='.$Index.' AND inet=1 AND role=0');
    $Row = $DbResult->fetch_array();
    $Tarify[$Index]['user_count'] = $Row[0];    
    switch($Tarif['group_id'])
    {
      case 1:
        $TotalUserCount = $TotalUserCount + $Tarify[$Index]['user_count'];
        $Tarify[$Index]['total_units'] = $Tarify[$Index]['price_units'] * $Tarify[$Index]['user_count'];
        $TotalTarifUnits = $TotalTarifUnits + $Tarify[$Index]['total_units'];
    
        if($Index == 3) // Zarizeni site v tarifu 3 neplati penize, ale ma internet
          $Tarify[$Index]['total_speed_factor'] = $Tarify[$Index]['speed_factor'] * ($Tarify[$Index]['user_count']+1);
          else $Tarify[$Index]['total_speed_factor'] = $Tarify[$Index]['speed_factor'] * $Tarify[$Index]['user_count'];
        $TotalTarifSpeedUnits = $TotalTarifSpeedUnits + $Tarify[$Index]['total_speed_factor'];
        break;
      case 2:
        $ResidualPrice -= $Tarif['price'] * $Tarify[$Index]['user_count'];
        $ResidualSpeed -= $Tarif['min_speed'] * $Tarify[$Index]['user_count'];
        $Tarify[$Index]['total_units'] = $Tarify[$Index]['price_units'] * $Tarify[$Index]['user_count'];
      	break;
      case 3:
        $Tarify[$Index]['total_units'] = $Tarify[$Index]['price_units'] * $Tarify[$Index]['user_count'];
        break;
    }
  }
  $PricePerUnit = $ResidualPrice / $TotalTarifUnits;
  $SpeedPerUnit = $ResidualSpeed * 1024 / $TotalTarifSpeedUnits;
  
  // Recalculate price
  foreach($Tarify as $Index => $Tarif)
  {
    switch($Tarif['group_id'])
    {
      case 1:
        $Tarify[$Index]['price'] = round($Tarif['price_units'] * $PricePerUnit);
        $Tarify[$Index]['min_speed'] = round($Tarif['speed_factor'] * $SpeedPerUnit);
        $Tarify[$Index]['max_speed'] = round($Tarify[$Index]['speed_factor'] * $BaseSpeedElement * 1024);
        break;
      case 2:
        $Tarify[$Index]['min_speed'] = $Tarify[$Index]['min_speed'] * 1024;
        $Tarify[$Index]['max_speed'] = $Tarify[$Index]['max_speed'] * 1024;
        break;
      case 3:
        $Tarify[$Index]['min_speed'] = $Tarify[$Index]['min_speed'] * 1024;
        $Tarify[$Index]['max_speed'] = $Tarify[$Index]['max_speed'] * 1024;
        break;
    }
    $Tarify[$Index]['aggregation'] = '1:'.round($Tarify[$Index]['max_speed'] / $Tarify[$Index]['min_speed']);
  }		  
}

function NactiMesicniParametry($Period = 1) // 0 - now, 1 - next month
{
  global $kWh, $Internet, $Sprava, $DatumOdecteni, $InternetUsers, $SpravaUsers, $InternetSegmentId, 
    $MaxSpeed, $RealMaxSpeed, $SpeedReserve, $BaseSpeedElement, $Database;
    
  $DbResult = $Database->query("SELECT * FROM finance_charge WHERE period=".$Period);
  $Row = $DbResult->fetch_array();
  $kWh = $Row['kWh'];
  $Internet = $Row['internet'];
  $Sprava = $Row['administration_per_user'];
  $RealMaxSpeed = $Row['internet_speed'];
  $SpeedReserve = $Row['internet_speed_reserve'];
  $BaseSpeedElement = $Row['base_speed_element'];
  $MaxSpeed = $RealMaxSpeed - $SpeedReserve;

  $DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE inet=1 AND role=0");
  $Row = $DbResult->fetch_array();
  $InternetUsers = $Row[0];

  $DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE overheads=1 AND role=0");
  $SpravaUsers = $DbResult->fetch_array();
  $SpravaUsers = $SpravaUsers[0];
  $InternetSegmentId = 21;

  
  RecalculateTariffs($Period);
}

function W2Kc($Spotreba)
{
  global $kWh;
  return(round($Spotreba*0.72*$kWh));
}

?>
