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; } }
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; } */ }
/** * 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) { } }