$activity = Factory::getView(new ActivityKey($_REQUEST['id']));
             $activity->requestDelete();
             $transaction->commit();
             break;
         case 'create':
             $transaction = new Transaction(new MySqlDB());
             $transaction->start();
             $activity = Factory::createView(new ActivityKey());
             $activity->setUser($user);
             $activity->setImportNumber(-1);
             $activity->setImportTime(new Date());
             $activity->setName($data['name']);
             $activity->setTransactionDate(new Date($_POST['data']['transdate']));
             $activity->setAmount($data['amount']);
             if ($data['category'] != null && trim($data['category']) && $data['category'] != 'null') {
                 $activity->setCategory(Factory::getView(new CategoryKey(trim($data['category']))));
             }
             $transaction->commit();
             break;
     }
     echo json_encode(array('success' => 'true'));
 } else {
     $smarty = new MySmarty($SMARTY_CONFIG);
     $smarty->assign('res', $user->getActivities());
     $userCategories = Category::getOptions(array("USER_ID" => $user->getId(), "ACTIVE" => 1));
     $allCategories = Category::getOptions(array("ACTIVE" => 1));
     $categories = '';
     foreach ($userCategories as $index => $value) {
         $categories .= "{\"value\": \"{$index}\", \"label\": \"{$value}\"},";
     }
     $smarty->assign('allCategories', $categories);
 $user = $access->getUser();
 $smarty = new MySmarty($SMARTY_CONFIG);
 $smarty->assign('user', $user);
 $transaction = false;
 if (!empty($_POST)) {
     if (!array_key_exists('csv_file', $_FILES)) {
         throw new Exception("Missing required parameter: file");
     }
     if (!array_key_exists('mapping_type', $_REQUEST)) {
         throw new Exception("Missing required parameter: mapping type");
     } else {
         $mapping_key = htmlentities($_REQUEST['mapping_type']);
     }
     $transaction = new Transaction(new MySqlDB());
     $transaction->start();
     $mapping = Factory::getView(new MappingKey($mapping_key));
     $importNumber = rand(10000000000, 99999999999);
     $importTime = new Date();
     $tmpname = $_FILES['csv_file']['tmp_name'];
     if (($handle = fopen($tmpname, "r")) !== FALSE) {
         $row = 0;
         while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
             $row++;
             if ($row < $mapping->getStartingRow()) {
                 // Getting to starting row;
                 continue;
             }
             $activity = Factory::createView(new ActivityKey());
             $activity->setImportNumber($importNumber);
             $activity->setImportTime(new Date());
             $activity->setUser($user);
         //TODO: check amount is valid
         $budgetedAmount = htmlentities($_POST['budgetedAmount']);
         $transaction = new Transaction(new MySqlDB());
         $transaction->start();
         $budget = Factory::createView(new BudgetKey());
         $category = Factory::getView(new CategoryKey($categoryId));
         $budget->setUser($user);
         $budget->setActive(TRUE);
         $budget->setAmount($budgetedAmount);
         $budget->setCategory($category);
         $transaction->commit();
     } elseif ($action === "remove") {
         $key = htmlentities($_POST['key']);
         $transaction = new Transaction(new MySqlDB());
         $transaction->start();
         $budgetItem = Factory::getView(new BudgetKey($key));
         $budgetItem->setActive(0);
         $transaction->commit();
     }
 }
 $budgets = Budget::getOptions(array("USER_ID" => $user->getId(), "ACTIVE" => 1));
 $spent = array();
 $budgetLeft = array();
 foreach ($budgets as $key => $item) {
     $activities = Activity::getOptions(array("USER_ID" => $user->getId(), "CATEGORY_ID" => $item['category_id'], "TRANSACTION_DATE_START" => Date::firstOfMonth()));
     $value = 0;
     foreach ($activities as $activityKey => $activityItem) {
         $value += $activityItem['amount'];
     }
     $spent[$key] = 0 - $value;
     $budgetLeft[$key] = $item['amount'] + $value;
     $action = htmlentities($_POST['action']);
     if ($action === "add") {
         $categoryName = htmlentities($_POST['categoryName']);
         $transaction = new Transaction(new MySqlDB());
         $transaction->start();
         $category = Factory::createView(new CategoryKey());
         $category->setUser($user);
         $category->setActive(TRUE);
         $category->setName($categoryName);
         $transaction->commit();
     } elseif ($action === "remove") {
         try {
             $key = htmlentities($_POST['key']);
             $transaction = new Transaction(new MySqlDB());
             $transaction->start();
             $categoryItem = Factory::getView(new CategoryKey($key));
             $categoryItem->setActive(0);
             $transaction->commit();
         } catch (Exception $e) {
             print_r($e);
         }
     }
 }
 $userCategories = Category::getOptions(array("USER_ID" => $user->getId(), "ACTIVE" => 1));
 $allCategories = Category::getOptions(array("ACTIVE" => 1));
 $smarty->assign('allCategories', $allCategories);
 $smarty->assign('userCategories', $userCategories);
 if ($fullPage) {
     $smarty->assign('user', $user);
     $smarty->assign('left_menu', true);
     $smarty->display('category.tpl');