예제 #1
0
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new Beneficiary();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Beneficiary'])) {
         $model->attributes = $_POST['Beneficiary'];
         if ($model->save()) {
             $this->redirect(array('view', 'id' => $model->id));
         }
     }
     $this->render('create', array('model' => $model));
 }
예제 #2
0
 public function doOldImport()
 {
     DB::delete('DELETE FROM `cache`');
     // delete old data:
     foreach (Auth::user()->accounts()->get() as $acc) {
         $acc->delete();
     }
     foreach (Auth::user()->budgets()->get() as $b) {
         $b->delete();
     }
     foreach (Auth::user()->categories()->get() as $b) {
         $b->delete();
     }
     foreach (Auth::user()->beneficiaries()->get() as $b) {
         $b->delete();
     }
     foreach (Icon::get() as $icon) {
         $icon->delete();
     }
     $data = file_get_contents('http://commondatastorage.googleapis.com/nder/import.json');
     $json = json_decode($data);
     $map = array();
     $map['accounts'] = array();
     $map['icons'] = array();
     // all accounts:
     foreach ($json->accounts as $account) {
         $newAccount = new Account();
         $newAccount->name = Crypt::encrypt($account->name);
         $newAccount->balance = floatval($account->balance);
         $newAccount->fireflyuser_id = Auth::user()->id;
         $newAccount->date = $account->date;
         $newAccount->save();
         $map['accounts'][$account->id] = $newAccount->id;
     }
     // all icons:
     foreach ($json->icons as $icon) {
         $newIcon = new Icon();
         $newIcon->file = $icon->file;
         $newIcon->save();
         $map['icons'][intval($icon->id)] = $newIcon->id;
     }
     // all beneficiaries:
     foreach ($json->beneficiaries as $ben) {
         $nb = new Beneficiary();
         $nb->fireflyuser_id = Auth::user()->id;
         $nb->name = Crypt::encrypt($ben->name);
         $nb->save();
         $map['beneficiaries'][$ben->id] = $nb->id;
     }
     // all budgets
     foreach ($json->budgets as $bd) {
         $nbg = new Budget();
         $nbg->fireflyuser_id = Auth::user()->id;
         $nbg->name = Crypt::encrypt($bd->name);
         $nbg->date = $bd->date;
         $nbg->amount = floatval($bd->amount);
         $nbg->save();
         $map['budgets'][$bd->id] = $nbg->id;
     }
     // all categories:
     foreach ($json->categories as $c) {
         $nc = new Category();
         $nc->fireflyuser_id = Auth::user()->id;
         $nc->icon_id = intval($map['icons'][intval($c->icon_id)]);
         $nc->name = Crypt::encrypt($c->name);
         $nc->showtrend = intval($c->showtrend);
         $nc->save();
         $map['categories'][$c->id] = $nc->id;
     }
     foreach ($json->targets as $t) {
         $nt = new Target();
         $nt->fireflyuser_id = Auth::user()->id;
         $nt->account_id = $map['accounts'][$t->account_id];
         $nt->description = Crypt::encrypt($t->description);
         $nt->amount = floatval($t->amount);
         $nt->duedate = $t->duedate;
         $nt->startdate = $t->startdate;
         $nt->save();
         $map['targets'][$t->id] = $nt->id;
     }
     foreach ($json->transactions as $t) {
         $nt = new Transaction();
         $nt->fireflyuser_id = Auth::user()->id;
         $nt->account_id = $map['accounts'][$t->account_id];
         $nt->budget_id = is_null($t->budget_id) ? NULL : intval($map['budgets'][$t->budget_id]);
         $nt->category_id = is_null($t->category_id) ? NULL : $map['categories'][$t->category_id];
         $nt->beneficiary_id = is_null($t->beneficiary_id) ? NULL : $map['beneficiaries'][$t->beneficiary_id];
         $nt->description = Crypt::encrypt($t->description);
         $nt->amount = floatval($t->amount);
         $nt->date = $t->date;
         $nt->onetime = intval($t->onetime);
         $nt->save();
         $map['transactions'][$t->id] = $nt->id;
     }
     foreach ($json->transfers as $t) {
         $nt = new Transfer();
         $nt->fireflyuser_id = Auth::user()->id;
         $nt->account_from = $map['accounts'][$t->account_from];
         $nt->account_to = $map['accounts'][$t->account_to];
         $nt->category_id = is_null($t->category_id) ? NULL : $map['categories'][$t->category_id];
         $nt->budget_id = is_null($t->budget_id) ? NULL : intval($map['budgets'][$t->budget_id]);
         $nt->target_id = is_null($t->target_id) ? NULL : intval($map['targets'][$t->target_id]);
         $nt->description = Crypt::encrypt($t->description);
         $nt->amount = floatval($t->amount);
         $nt->date = $t->date;
         $nt->save();
         $map['targets'][$t->id] = $nt->id;
     }
     //
     //var_dump($data);
     // create everything from this file.
     // we map the old id's to the new one to save problems.
     return 'Old data successfully imported.';
 }
예제 #3
0
 public function actionImport()
 {
     $model = new Beneficiary('search');
     $model->unsetAttributes();
     $result = new BeneficiaryImportResult();
     $count_inserted = 0;
     $count_updated = 0;
     if (isset($_FILES) && !empty($_FILES)) {
         move_uploaded_file($_FILES['UploadFileName']['tmp_name'], Yii::app()->params['IMPORT_PATH'] . $_FILES['UploadFileName']['name']);
         Yii::import('application.extensions.phpexcel.Classes.PHPExcel', true);
         $objReader = new PHPExcel_Reader_Excel5();
         $objPHPExcel = $objReader->load(Yii::app()->params['IMPORT_PATH'] . $_FILES['UploadFileName']['name']);
         $objWorksheet = $objPHPExcel->getActiveSheet();
         $highestRow = $objWorksheet->getHighestRow();
         // e.g. 10
         $highestColumn = $objWorksheet->getHighestColumn();
         // e.g 'F'
         $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
         // e.g. 5
         $criteria = new CDbCriteria();
         $criteria->addCondition('name="Active"');
         // created Status for vouchers
         $status = BeneficiaryStatus::model()->find($criteria);
         $inserted_arr = [];
         $updated_arr = [];
         for ($row = 2; $row <= $highestRow; ++$row) {
             $criteria = new CDbCriteria();
             $criteria->addCondition('registration_code="' . $objWorksheet->getCellByColumnAndRow(0, $row)->getValue() . '"');
             // created Status for vouchers
             $beneficiary = Beneficiary::model()->find($criteria);
             $insert = 0;
             if (!$beneficiary) {
                 $beneficiary = new Beneficiary();
                 $insert = 1;
                 $count_inserted++;
                 //$result->set_count_inserted($result->get_count_inserted()++);
             } else {
                 $count_updated++;
             }
             //$result->set_count_updated($result->get_count_updated()++);
             $communitycriteria = new CDbCriteria();
             $communitycriteria->addCondition('en_name="' . $objWorksheet->getCellByColumnAndRow(6, $row)->getValue() . '"');
             $community = Community::model()->find($communitycriteria);
             $beneficiary->registration_code = $objWorksheet->getCellByColumnAndRow(0, $row)->getValue();
             $beneficiary->ar_name = $objWorksheet->getCellByColumnAndRow(1, $row)->getValue() ? $objWorksheet->getCellByColumnAndRow(1, $row)->getValue() : $beneficiary->ar_name;
             $beneficiary->en_name = $objWorksheet->getCellByColumnAndRow(2, $row)->getValue() ? $objWorksheet->getCellByColumnAndRow(2, $row)->getValue() : $beneficiary->en_name;
             $beneficiary->family_member = $objWorksheet->getCellByColumnAndRow(3, $row)->getValue() ? $objWorksheet->getCellByColumnAndRow(3, $row)->getValue() : $beneficiary->family_member;
             $beneficiary->main_income_source = $objWorksheet->getCellByColumnAndRow(4, $row)->getValue() ? $objWorksheet->getCellByColumnAndRow(4, $row)->getValue() : $beneficiary->main_income_source;
             $beneficiary->combine_household = $objWorksheet->getCellByColumnAndRow(5, $row)->getValue() ? $objWorksheet->getCellByColumnAndRow(5, $row)->getValue() : $beneficiary->combine_household;
             $beneficiary->phone_number = $objWorksheet->getCellByColumnAndRow(7, $row)->getValue() ? $objWorksheet->getCellByColumnAndRow(7, $row)->getValue() : $beneficiary->phone_number;
             $beneficiary->neighborhood_id = $objWorksheet->getCellByColumnAndRow(6, $row)->getValue() ? $community->id : $beneficiary->neighborhood_id;
             $beneficiary->status_id = $status->id;
             $beneficiary->save();
             if ($insert) {
                 array_push($inserted_arr, $beneficiary->registration_code);
             } else {
                 array_push($updated_arr, $beneficiary->registration_code);
             }
         }
     } else {
         $result->set_error('No File Selected');
     }
     $result->set_count_inserted($count_inserted);
     $result->set_count_updated($count_updated);
     $result->set_record_inserted($inserted_arr);
     $result->set_record_updated($updated_arr);
     return $this->sendAjaxResponse($result);
 }
예제 #4
0
 public function doEditTransaction($id)
 {
     $transaction = Auth::user()->transactions()->find($id);
     if ($transaction) {
         // set some basic values:
         $transaction->amount = floatval(Input::get('amount'));
         $transaction->date = Input::get('date');
         $transaction->onetime = Input::get('onetime') == 'on' ? 1 : 0;
         $transaction->description = Input::get('description');
         if (Input::get('type') == 'min') {
             $transaction->amount = $transaction->amount * -1;
         }
         if (!is_null(Input::get('account'))) {
             $account = Auth::user()->accounts()->find(Input::get('account'));
             if (!is_null($account)) {
                 $transaction->account_id = $account->id;
             }
         }
         // budget
         if (intval(Input::get('budget')) > 0) {
             $budget = Auth::user()->budgets()->find(intval(Input::get('budget')));
             if (!is_null($budget)) {
                 $transaction->budget_id = $budget->id;
             }
         }
         // category
         if (strlen(Input::get('category')) != 0) {
             $categories = Auth::user()->categories()->get();
             //->where('name','=',Input::get('category'))->first();
             $category = null;
             foreach ($categories as $cat) {
                 if (Crypt::decrypt($cat->name) == Input::get('category')) {
                     $category = $cat;
                     break;
                 }
             }
             unset($cat, $categories);
             if (is_null($category)) {
                 $category = new Category();
                 $category->fireflyuser_id = Auth::user()->id;
                 $category->name = Input::get('category');
                 $category->showtrend = 0;
                 $category->icon_id = Icon::first()->id;
                 // FIXME moet niet hardcoded
                 $validator = Validator::make($category->toArray(), Category::$rules);
                 if ($validator->passes()) {
                     $category->name = Crypt::encrypt($category->name);
                     $category->save();
                     $transaction->category_id = $category->id;
                 }
             } else {
                 $transaction->category_id = $category->id;
             }
         } else {
             $transaction->category_id = null;
         }
         // beneficiary
         if (strlen(Input::get('beneficiary')) != 0) {
             $beneficiaries = Auth::user()->beneficiaries()->get();
             //->where('name','=',Input::get('beneficiary'))->first();
             $beneficiary = null;
             foreach ($beneficiaries as $ben) {
                 if (Crypt::decrypt($ben->name) == Input::get('beneficiary')) {
                     $beneficiary = $ben;
                     break;
                 }
             }
             unset($ben, $categories);
             if (is_null($beneficiary)) {
                 $beneficiary = new Beneficiary();
                 $beneficiary->fireflyuser_id = Auth::user()->id;
                 $beneficiary->name = Input::get('beneficiary');
                 $validator = Validator::make($beneficiary->toArray(), Beneficiary::$rules);
                 if ($validator->passes()) {
                     $beneficiary->name = Crypt::encrypt($beneficiary->name);
                     $beneficiary->save();
                     $transaction->beneficiary_id = $beneficiary->id;
                 }
             } else {
                 $transaction->beneficiary_id = $beneficiary->id;
             }
         } else {
             $transaction->beneficiary_id = null;
         }
         $validator = Validator::make($transaction->toArray(), Transaction::$rules);
         $transaction->description = Crypt::encrypt($transaction->description);
         if ($validator->fails()) {
             return Redirect::to('/home/transaction/edit/' . $transaction->id)->withErrors($validator)->withInput();
         } else {
             // work the tags
             $tags = explode(',', Input::get('tags'));
             $sync = array();
             foreach ($tags as $tag) {
                 $dbTag = Tag::findOrCreate($tag);
                 $sync[] = $dbTag->id;
             }
             $transaction->tags()->sync($sync);
             $transaction->save();
             return Redirect::to('/home/transactions');
         }
     } else {
         return App::abort(404);
     }
 }