<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Laravel\Lumen\Routing\DispatchesJobs;
use Log;
use DateTime, DateTimeZone;

class Cleanfile extends Command {

  protected $signature = 'clean:file {in} {out}';
  protected $description = 'Discard duplicate out of order data from a file';

  public function handle() {
    $in = $this->argument('in');
    $out = $this->argument('out');

    $fp = @fopen($in, 'r');
    $outf = @fopen($out, 'w');
    if($fp && $outf) {

      $last = false;
      while(($line = fgets($fp)) !== false) {
        $cur = new DateTime(substr($line, 0, 26), new DateTimeZone('UTC'));

        if(!$last) {
          $last = new DateTime(substr($line, 0, 26), new DateTimeZone('UTC'));
          fwrite($outf, $line);
        } else {
          if((double)$cur->format('U.u') > (double)$last->format('U.u')) {
            fwrite($outf, $line);
            $last = new DateTime(substr($line, 0, 26), new DateTimeZone('UTC'));
          } else {
            Log::info("Discarding line");
          }
        }
      }
      fclose($fp);
      fclose($outf);

    } else {
      Log::error("Could not find input file");
    }
  }

}