コード例 #1
0
ファイル: Pusher.php プロジェクト: jocoonopa/lubri
 protected function taskUpdateProc(PosMemberImportTask $task, $startTime)
 {
     $task->executed_at = new \DateTime();
     $task->execute_cost_time = floor(microtime(true) - $startTime);
     $task->status_code = PosMemberImportTask::STATUS_COMPLETED;
     $task->save();
     return $task;
 }
コード例 #2
0
 /**
  * 匯入完成後,修改任務狀態為等待推送,並且更新總數(總數一開始是使用Excel行數,
  * 但這數字會有誤差,因為資料可能有重複)
  * 
  * @param  App\Model\Flap\PosMemberImportTask $task
  * @param  integer $start
  * @param  integer $end  
  * @return App\Model\Flap\PosMemberImportTask $task      
  */
 protected function updateTaskState($task, $start, $end)
 {
     $task->import_cost_time = floor($end - $start);
     $task->status_code = PosMemberImportTask::STATUS_TOBEPUSHED;
     $task->total_count = $task->content->count();
     $task->save();
     return $task;
 }
コード例 #3
0
ファイル: ActObserver.php プロジェクト: jocoonopa/lubri
 public function updatedTask(PosMemberImportTask $task)
 {
     $this->task = $task;
     $this->distinction = PosMemberImportTask::getBDSerNo($this->task->distinction);
     $this->category = PosMemberImportTask::getCategorySerNo($this->task->category);
     $this->task->content()->isNotExecuted()->chunk(Import::CHUNK_SIZE, function ($contents) {
         $contents->each(function ($content) {
             $content->flags = $content->getActFlags();
             $content->category = $this->category;
             $content->distinction = $this->distinction;
             $content->save();
         });
     });
 }
コード例 #4
0
ファイル: ImportHandler.php プロジェクト: jocoonopa/lubri
 protected function createNewTask($totalRows = 0)
 {
     $task = new PosMemberImportTask();
     $task->user_id = Auth::user()->id;
     $task->name = Input::get('name');
     $task->status_code = PosMemberImportTask::STATUS_IMPORTING;
     $task->total_count = $totalRows;
     $task->distinction = Input::get(_Import::OPTIONS_DISTINCTION);
     $task->category = Input::get(_Import::OPTIONS_CATEGORY);
     $task->update_flags = Flater::getInflateFlag(Input::get(_Import::OPTIONS_INSERTFLAG));
     $task->insert_flags = Flater::getInflateFlag(Input::get(_Import::OPTIONS_UPDATEFLAG));
     $task->kind_id = Input::get('kind_id');
     $task->memo = Input::get(_Import::OPTIONS_OBMEMO);
     $task->save();
     return $task;
 }
コード例 #5
0
 public function proc()
 {
     //======================================================//
     // 取得上傳暫存檔路徑
     $filePath = storage_path("exports/posmember/{$this->getTask()->id}.xls");
     if (!file_exists($filePath)) {
         Log::error("{$filePath} Not exists!");
     }
     // 透過直接指定選擇第一個sheet的方式,繞過 chunk 的 bug
     $reader = Excel::filter('chunk')->selectSheetsByIndex(0)->load($filePath)->skip(1);
     $totalRows = $reader->getTotalRowsOfFile();
     $this->getTask()->status_code = PosMemberImportTask::STATUS_IMPORTING;
     $this->getTask()->total_count = $totalRows - 1;
     $this->getTask()->save();
     //======================================================//
     $kind = $this->getTask()->kind()->first();
     $factoryClass = $kind->factory;
     $adapterClass = $kind->adapter;
     $this->modelFactory = new $factoryClass();
     $this->adapter = new $adapterClass([_Import::OPTIONS_TASK => $this->getTask(), _Import::OPTIONS_DISTINCTION => PosMemberImportTask::getBDSerNo($this->getTask()->distinction), _Import::OPTIONS_CATEGORY => PosMemberImportTask::getCategorySerNo($this->getTask()->category), _Import::OPTIONS_INSERTFLAG => Flater::getFlagString($this->getTask()->insert_flags), _Import::OPTIONS_UPDATEFLAG => Flater::getFlagString($this->getTask()->update_flags)]);
     $reader->chunk(_Import::CHUNK_SIZE, $this->getChunkCallback());
     $this->_removeDuplicate();
     $this->_saveTaskStatic();
 }
コード例 #6
0
 /**
  * Remove the specified resource from storage.
  *
  * @param  \App\Model\Flap\PosMemberImportContent
  * @return \Illuminate\Http\Response
  */
 public function destroy(PosMemberImportTask $task, PosMemberImportContent $content)
 {
     Session::flash('success', "項目 <b>{$content->name}</b> 已經移除!");
     $content->delete();
     $task->updateStat()->save();
     return redirect("/flap/pos_member/import_task/{$task->id}");
 }
コード例 #7
0
 /**
  * Return json string response
  *
  * @return mixed json response
  */
 public function progress(PosMemberImportTask $task)
 {
     return response()->json(['id' => $task->id, 'name' => $task->name, 'kind_name' => $task->kind->name, 'status_code' => $task->status_code, 'status_name' => strip_tags($task->getStatusName()), 'total' => $task->total_count, 'imported_count' => $task->content->count(), 'pushed_count' => $task->content()->where(DB::raw(PosMemberImportTask::BEEN_PUSHED_FLAG . '&Status'), '=', PosMemberImportTask::BEEN_PUSHED_FLAG)->count(), 'is_acting' => in_array($task->status_code, [PosMemberImportTask::STATUS_IMPORTING, PosMemberImportTask::STATUS_PUSHING])]);
 }
コード例 #8
0
 /**
  * Register any other events for your application.
  *
  * @param  \Illuminate\Contracts\Events\Dispatcher  $events
  * @return void
  */
 public function boot(DispatcherContract $events)
 {
     parent::boot($events);
     PosMemberImportContent::observe(new PosMemberImportContentObserver());
     PosMemberImportTask::observe(new PosMemberImportTaskObserver());
 }
コード例 #9
0
 protected function getPusher(PosMemberImportTask $task)
 {
     $importKind = $task->kind()->first();
     $pushClass = $importKind->pusher;
     return with(new $pushClass());
 }
コード例 #10
0
 public function __construct(array $attributes = [])
 {
     $ydName = Carbon::now()->format('Ym');
     $this->setRawAttributes(array_merge($this->attributes, ['name' => $ydName . '_' . (PosMemberImportTask::where('name', 'LIKE', "{$ydName}%")->count() + 1)]), true);
     parent::__construct($attributes);
 }
コード例 #11
0
 protected function getContens(PosMemberImportTask $task, $isExist)
 {
     return $task->content()->where('is_exist', '=', $isExist);
 }
コード例 #12
0
 public function updated(PosMemberImportTask $task)
 {
     $className = $task->kind()->first()->observer;
     return with(new $className())->updatedTask($task);
 }
コード例 #13
0
ファイル: Adapter.php プロジェクト: jocoonopa/lubri
 protected function getInflateFlag($nameIndex)
 {
     $flagString = array_get($this->getOptions(), $nameIndex);
     return PosMemberImportTask::getInflateFlag($flagString);
 }