Пример #1
0
 protected function executeBefore()
 {
     parent::executeBefore();
     switch ($this->target) {
         case 'logout':
             break;
         default:
             if (null === $this->username) {
                 $this->log->error('Username belum didefinisikan.');
                 throw new ExecuteException();
             }
             if (null === $this->password) {
                 $this->log->error('Password belum didefinisikan.');
                 throw new ExecuteException();
             }
             break;
     }
     switch ($this->target) {
         case 'get_transaction':
             if (null === $this->range) {
                 // BCA tidak ada mini account statement seperti BNI, maka
                 // jika null kita anggap saja today.
                 $this->range = 'today';
                 $this->log->notice('Range belum didefinisikan, otomatis mencari transaksi hari ini.');
             }
             $this->range = Range::create($this->range);
             // BCA paling lama adalah awal bulan dari 2 bulan lalu.
             $oldest = new \DateTime('first day of 2 months ago');
             if (!$this->range->comparison($oldest, 'less', 'start')) {
                 // Tapi kalo masih di hari yang sama, ya gpp.
                 if (!$this->range->isSameDay($oldest, 'start')) {
                     $this->log->error('Tanggal Awal tidak boleh kurang dari hari pertama dari 2 bulan lalu: {date}', ['date' => $oldest->format('Y-m-d')]);
                     throw new ExecuteException();
                 }
             }
             // End date tidak boleh lewat dari hari ini.
             $now = new \DateTime();
             if (!$this->range->comparison($now, 'greater', 'end')) {
                 // Tapi kalo masih di hari yang sama, ya gpp.
                 if (!$this->range->isSameDay($now, 'end')) {
                     $this->log->error('Tanggal Akhir tidak boleh melebihi Tanggal Hari Ini.');
                     throw new ExecuteException();
                 }
             }
             switch ($this->sort) {
                 case 'asc':
                 case 'desc':
                     break;
                 case 'ASC':
                 case 'ascending':
                 case 'ASCENDING':
                     $this->sort = 'asc';
                     break;
                 case 'descending':
                 case 'DESC':
                 case 'DESCENDING':
                     $this->sort = 'desc';
                     break;
                 default:
                     $this->sort = 'desc';
                     $this->log->notice('Transaksi otomatis diurut dengan pola descending.');
                     break;
             }
             break;
         default:
             // Do something.
             break;
     }
 }
Пример #2
0
 protected function executeBefore()
 {
     parent::executeBefore();
     // $c = file_get_contents('C:\Users\X220\.ibank\debug\response_body.html');
     // $form = ParseHTMLAdvanced::init($c, 'form[name=LoginForm][action=/retail/Login.do]');
     // $this->html = new ParseHTMLAdvanced($c);
     // $this->configuration('temporary][form', $form);
     // $this->mandiriParseHomePageAnonymous();
     // throw new ExecuteException;
     return;
     /* 
            switch ($this->target) {
                case 'logout':
                    break;
     
                default:
                    if (null === $this->username) {
                        $this->log->error('Username belum didefinisikan.');
                        throw new ExecuteException;
                    }
                    if (null === $this->password) {
                        $this->log->error('Password belum didefinisikan.');
                        throw new ExecuteException;
                    }
                    break;
            }
            switch ($this->target) {
                case 'get_transaction':
                    if (null === $this->range) {
                        // Mandiri tidak ada mini account statement seperti BNI, maka
                        // jika null kita anggap saja today.
                        $this->range = 'today';
                        $this->log->notice('Range belum didefinisikan, otomatis mencari transaksi hari ini.');
                    }
                    $this->range = Range::create($this->range);
                    // Mandiri paling lama adalah awal bulan dari 2 bulan lalu.
                    $oldest = new \DateTime('first day of 2 months ago');
                    if (!$this->range->comparison($oldest, 'less', 'start')) {
                        // Tapi kalo masih di hari yang sama, ya gpp.
                        if (!$this->range->isSameDay($oldest, 'start')) {
                            $this->log->error('Tanggal Awal tidak boleh kurang dari hari pertama dari 2 bulan lalu: {date}', ['date' => $oldest->format('Y-m-d')]);
                            throw new ExecuteException;
                        }
                    }
     
                    // End date tidak boleh lewat dari hari ini.
                    $now = new \DateTime();
                    if (!$this->range->comparison($now, 'greater', 'end')) {
                        // Tapi kalo masih di hari yang sama, ya gpp.
                        if (!$this->range->isSameDay($now, 'end')) {
                            $this->log->error('Tanggal Akhir tidak boleh melebihi Tanggal Hari Ini.');
                            throw new ExecuteException;
                        }
                    }
                    switch ($this->sort) {
                        case 'asc':
                        case 'desc':
                            break;
     
                        case 'ASC':
                        case 'ascending':
                        case 'ASCENDING':
                            $this->sort = 'asc';
                            break;
     
                        case 'descending':
                        case 'DESC':
                        case 'DESCENDING':
                            $this->sort = 'desc';
                            break;
     
                        default:
                            $this->sort = 'desc';
                            $this->log->notice('Transaksi otomatis diurut dengan pola descending.');
                            break;
                    }
     
                    break;
     
                default:
                    // Do something.
                    break;
            }
     */
 }
Пример #3
0
 /**
  * Override parent::executeBefore()
  * Verifikasi kebutuhan sebelum melanjutkan execute.
  *
  * Catatan tentang validitas mutasi rekening di BNI.
  *
  *  - Tanggal transaksi paling lama yang bisa diambil adalah 6 bulan dari
  *    hari ini. Jika sekarang tanggal 25 januari 2016, maka bila start
  *    date 25-Jul-2015, error yang muncul adalah: "Tanggal Awal tidak boleh
  *    Melebihi 6 Bulan dari Tanggal Hari Ini" dan akan valid jika start_date
  *    24-Jul-2016.
  *
  *  - End date yang lewat dari hari ini, maka error yang muncul adalah:
  *    "Tanggal Akhir tidak boleh melebihi tanggal hari ini".
  *
  *  - Tiap sekali request, maka interval tidak boleh lebih 31 hari, jika
  *    lebih dari 31 hari, error yang muncul adalah: "Transaksi anda tidak
  *    dapat diproses. Periode tanggal yang anda pilih lebih dari 31 hari.
  *    Silahkan masukkan periode tanggal sesuai ketentuan.".
  *
  *  - Untuk support interval lebih dari 31 hari, maka module BNI melakukan
  *    split interval, kemudian melakukan request secara looping.
  *
  *  - Tanggal yang tidak valid (contoh 32-Jul-2015) atau format yang tidak
  *    valid (contoh 1-Aug-2015) maka error yang muncul adalah "Tanggal Akhir
  *    harus menggunakan format yang telah ditentukan dan tanggal yang
  *    valid".
  */
 protected function executeBefore()
 {
     parent::executeBefore();
     if (null === $this->username) {
         $this->log->error('Username belum didefinisikan.');
         throw new ExecuteException();
     }
     if (null === $this->password) {
         $this->log->error('Password belum didefinisikan.');
         throw new ExecuteException();
     }
     switch ($this->target) {
         case 'get_range_transaction':
             if (null === $this->range) {
                 $this->log->error('Range belum didefinisikan.');
                 throw new ExecuteException();
             }
             switch ($this->range) {
                 case 'now':
                 case 'today':
                 case 'last week':
                 case 'last month':
                     break;
                 default:
                     // Verifikasi rangenya.
                     $this->range = Range::create($this->range);
                     if (!$this->range->is_start_valid) {
                         $this->log->notice('Tanggal awal tidak valid. Tanggal otomatis diganti menjadi waktu saat ini.');
                     }
                     if (!$this->range->is_end_valid) {
                         $this->log->notice('Tanggal awal tidak valid. Tanggal otomatis diganti menjadi waktu saat ini.');
                     }
                     // Start date tidak boleh lebih dari 6 bulan sejak hari
                     // ini.
                     $oldest = new \DateTime('6 month ago');
                     // Masih kudu dikurangi satu hari lagi agar tidak
                     // error (lihat catatan pada doc comment fungsi ini).
                     $oldest->sub(new \DateInterval('P1D'));
                     if (!$this->range->isSameDay($oldest, 'start') && !$this->range->comparison($oldest, 'less', 'start')) {
                         $this->log->error('Tanggal Awal tidak boleh kurang dari 6 bulan lalu: {date}', ['date' => $oldest->format('Y-m-d')]);
                         throw new ExecuteException();
                     }
                     // End date tidak boleh lewat dari hari ini.
                     $now = new \DateTime();
                     if (!$this->range->isSameDay($now, 'end') && !$this->range->comparison($now, 'greater', 'end')) {
                         $this->log->error('Tanggal Akhir tidak boleh melebihi Tanggal Hari Ini.');
                         throw new ExecuteException();
                     }
             }
         case 'get_last_transaction':
             switch ($this->sort) {
                 case 'asc':
                 case 'desc':
                     break;
                 case 'ASC':
                 case 'ascending':
                 case 'ASCENDING':
                     $this->sort = 'asc';
                     break;
                 case 'descending':
                 case 'DESC':
                 case 'DESCENDING':
                     $this->sort = 'desc';
                     break;
                 default:
                     $this->sort = 'desc';
                     $this->log->notice('Transaksi otomatis diurut dengan pola descending.');
                     break;
             }
             break;
         default:
             // Do something.
             break;
     }
     switch ($this->target) {
     }
 }