コード例 #1
0
 public function doEditTransfer($id)
 {
     $transfer = Auth::user()->transfers()->find($id);
     if ($transfer) {
         $transfer->amount = floatval(Input::get('amount'));
         $transfer->description = Input::get('description');
         $transfer->date = Input::get('date');
         // account_from (special)
         if (!is_null(Input::get('account_from'))) {
             $account = Auth::user()->accounts()->find(Input::get('account_from'));
             if (!is_null($account)) {
                 $transfer->account_from = $account->id;
             }
         }
         // account_to (special)
         if (!is_null(Input::get('account_to'))) {
             $account = Auth::user()->accounts()->find(Input::get('account_to'));
             if (!is_null($account)) {
                 $transfer->account_to = $account->id;
             }
         }
         // category (special)
         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;
                 $validator = Validator::make($category->toArray(), Category::$rules);
                 if ($validator->passes()) {
                     $category->name = Crypt::encrypt($category->name);
                     $category->save();
                     $transfer->category_id = $category->id;
                 }
             } else {
                 $transfer->category_id = $category->id;
             }
         } else {
             $transfer->category_id = null;
         }
         // budget (special)
         if (intval(Input::get('budget')) > 0) {
             $budget = Auth::user()->budgets()->find(intval(Input::get('budget')));
             if (!is_null($budget)) {
                 $transfer->budget_id = $budget->id;
             }
         }
         // target (special)
         if (strlen(Input::get('target')) > 0) {
             $targets = Auth::user()->targets()->get();
             //->where('name','=',Input::get('category'))->first();
             $target = null;
             foreach ($targets as $t) {
                 if (Crypt::decrypt($t->description) == Input::get('target')) {
                     $transfer->target_id = $t->id;
                     break;
                 }
             }
             unset($targets, $t);
         } else {
             $transfer->target_id = null;
         }
         $validator = Validator::make($transfer->toArray(), Transfer::$rules);
         $transfer->description = Crypt::encrypt($transfer->description);
         if ($validator->fails()) {
             return Redirect::to('/home/transfer/edit/' . $transfer->id)->withErrors($validator)->withInput();
         } else {
             $transfer->save();
             return Redirect::to('/home');
         }
     } else {
         App::abort(404);
     }
 }
コード例 #2
0
 public function doImport()
 {
     var_dump($_FILES);
     var_dump($_POST);
     exit;
     define('LESSEVENTS', true);
     if (strlen(Input::get('payload_text')) == 0) {
         $payload = Input::file('payload');
         $raw = File::get($payload);
     } else {
         $raw = Input::get('payload_text');
     }
     $json = json_decode($raw, true);
     $firstIcon = Icon::first();
     $old = array(Auth::user()->accounts()->get(), Auth::user()->budgets()->get(), Auth::user()->categories()->get(), Auth::user()->beneficiaries()->get(), Auth::user()->settings()->get(), Auth::user()->targets()->get());
     $mapping = array();
     $order = array('account', 'beneficiary', 'budget', 'category', 'target', 'transaction', 'transfer', 'setting');
     if (is_null($json)) {
         Session::flash('error', 'This is not a valid JSON file.');
         return View::make('home.import');
     }
     foreach ($order as $name) {
         $names = Str::plural($name);
         foreach ($json[$names] as $item) {
             $class = ucfirst($name);
             // overrule user ID
             if (isset($item['fireflyuser_id'])) {
                 $item['fireflyuser_id'] = Auth::user()->id;
             }
             // overrule possible account ID since we might need it here:
             if (isset($item['account_id'])) {
                 $item['account_id'] = $mapping['accounts'][intval($item['account_id'])];
             }
             // overrule account_from and account_to (only for transfers)
             if ($class == 'Transfer') {
                 $item['account_from'] = $mapping['accounts'][intval($item['account_from'])];
                 $item['account_to'] = $mapping['accounts'][intval($item['account_to'])];
             }
             // overrule possible icon ID
             if (isset($item['icon_id'])) {
                 $item['icon_id'] = intval($firstIcon->id);
             }
             // overrule possible beneficiary ID
             if (isset($item['beneficiary_id'])) {
                 $item['beneficiary_id'] = $mapping['beneficiaries'][intval($item['beneficiary_id'])];
             }
             // overrule possible category ID
             if (isset($item['category_id'])) {
                 $item['category_id'] = $mapping['categories'][intval($item['category_id'])];
             }
             // overrule possible budget ID
             if (isset($item['budget_id'])) {
                 $item['budget_id'] = $mapping['budgets'][intval($item['budget_id'])];
             }
             // overrule possible target ID
             if (isset($item['target_id'])) {
                 $item['target_id'] = $mapping['targets'][intval($item['target_id'])];
             }
             // overrule due date for targets:
             if (isset($item['duedate']) && $item['duedate'] == '0000-00-00') {
                 $item['duedate'] = null;
             }
             // remap settings:
             if ($class == 'Setting') {
                 if ($item['name'] == 'defaultCheckingAccount') {
                     $item['value'] = $mapping['accounts'][intval($item['value'])];
                 }
                 if ($item['name'] == 'defaultSavingsAccount') {
                     $item['value'] = $mapping['accounts'][intval($item['value'])];
                 }
             }
             // make validator:
             $validator = Validator::make($item, $class::$rules);
             // validate!
             if ($validator->fails()) {
                 // fail gracefully, log error:
                 Log::error('Validator failed on ' . $class . ': ' . print_r($validator->messages()->all(), true));
                 // show error
                 Session::flash('error', 'There is invalid ' . $class . ' data in the file.');
                 return View::make('home.import');
             } else {
                 // create the object, remember the ID.
                 $object = new $class($item);
                 // encrypt some fields:
                 if (isset($object->description)) {
                     $object->description = Crypt::encrypt($object->description);
                 }
                 if (isset($object->name) && $class != 'Setting') {
                     $object->name = Crypt::encrypt($object->name);
                 }
                 if ($class == 'Setting') {
                     $object->value = Crypt::encrypt($object->value);
                 }
                 // save:
                 $object->save();
                 // remember the mapping:
                 $oldID = intval($item['id']);
                 $newID = intval($object->id);
                 $mapping[$names][$oldID] = $newID;
             }
         }
     }
     // if this is where we end up we can safely delete
     // the old accounts. Deleting those drag EVERYTHING along with it.
     foreach ($old as $items) {
         foreach ($items as $item) {
             $item->delete();
         }
     }
     Session::flash('success', 'All data imported!');
     return Redirect::to('/home');
 }
コード例 #3
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);
     }
 }