3 * Beursplein 5 default controller
7 defined( '_JEXEC' ) or die( 'Restricted access' );
9 jimport('joomla.application.component.controller');
12 * Beursplein 5 Component Controller
14 class BeurspleinController
extends JController
17 * constructor (registers additional tasks to methods)
20 function __construct()
22 parent
::__construct();
24 // Register Extra tasks
25 //$this->registerTask( 'add', 'edit' );
30 * Add the required models and display the view
34 $userModel = JController
::getModel("Users");
37 switch($userModel->checkUser())
40 $viewName = "newuser";
43 $viewName = "newuser";
47 $viewName = JRequest
::getVar('view', 'home');
50 $viewName = "newuser";
55 $view = JController
::getView($viewName,'html');
57 //Get the models that all views need
58 $stocksModel = JController
::getModel("Stocks");
59 $portfolioModel = JController
::getModel("Portfolio");
60 $userModel = JController
::getModel("Users");
62 //Add the models every view needs
63 $view->setModel($stocksModel);
64 $view->setModel($portfolioModel);
65 $view->setModel($userModel);
67 //Some additional models
68 if($viewName=="history") $view->setModel(JController
::getModel("History"));
69 if($viewName=='dealcards') $view->setModel(JController
::getModel("Cards"));
72 $view->setModel(JController
::getModel("Cards"));
73 $view->setModel(JController
::getModel("Log"));
81 * Buys and sells all stocks that are posted
85 $stocks = JRequest
::getVar('stock' , null, 'post');
86 $options = JRequest
::getVar('options', null, 'post');
88 //If the message isn't set, display this
89 $msg = "Error, message not set";
92 if(!is_array($stocks) ||
!is_array($options))
94 $msg = "Je hebt niks gekocht/verkocht";
100 $portfolioModel = JController
::getModel("Portfolio");
102 //Parse the stocks + options
103 $stocks = $portfolioModel->parseStocks($stocks, $options, $msg);
105 //If false, there was an error, message is already set
106 if($stocks === false)
113 $user = JFactory
::getUser();
114 $user_id = $user->id
;
116 //Get the user's money
117 $userModel = JController
::getModel("Users");
118 $money = $userModel->getMoney($user_id);
121 $stocksModel = JController
::getModel("Stocks");
122 $priceList = $stocksModel->getPriceList();
124 //Calculate the total money needed for transaction
125 foreach($stocks as $stock_id => $amount)
127 $totalValue +
= $amount * $priceList[$stock_id];
131 if($totalValue>$money)
133 $msg = "Je hebt te weinig geld om die aandelen te kopen";
138 //Voeg de aandelen toe
139 if($portfolioModel->addStocks($user_id, $stocks, $msg))
142 $stockInfo = $stocksModel->getStocksListTransformed();
145 $logModel = $this->getModel('Log');
146 foreach($stocks as $stock_id => $amount)
148 $price = abs($amount * $stockInfo[$stock_id]['value']);
152 $text = "Buy: {$amount} x {$stockInfo[$stock_id]['name']} voor €{$price}";
156 $amount = abs($amount);
157 $text = "Sell: {$amount} x {$stockInfo[$stock_id]['name']} voor €{$price}";
160 if(!$logModel->log($text, $user_id))
163 $msg = "Er was een error bij het wegschrijven van de log.";
168 if($userModel->setMoney($user_id, $money - $totalValue))
170 $result = $portfolioModel->deleteEmptyStocks();
172 if($result === false)
175 $msg = "Can not delete old records!";
185 $msg = "Error, je geld is niet geupdated";
196 $link = "index.php?option=com_beursplein&view=stocks";
200 $this->setRedirect($link, $msg, 'error');
204 $this->setRedirect($link, $msg);
209 * Geeft de user nieuwe kaarten
213 //Get the cards in the deck
214 $cardsModel = JController
::getModel("Cards");
215 $deck = $cardsModel->getDeckCards();
216 $deck = $cardsModel->sortCardsGroup($deck);
219 // 3 kaarten uit groep A
220 // 2 kaarten uit groep B
221 // 5 kaarten uit groep C
223 if(count($deck[1])<6)
224 exit("Te weinig kaarten van soort 1");
225 if(count($deck[1])<6)
226 exit("Te weinig kaarten van soort 2");
227 if(count($deck[1])<6)
228 exit("Te weinig kaarten van soort 3");
229 if(count($deck[1])<8)
230 exit("Te weinig kaarten van soort 4");
231 if(count($deck[1])<8)
232 exit("Te weinig kaarten van soort 5");
234 //Get random cards for each type
235 //array_pick doen't work here, it would be better :)
236 //Actually, with php it is almost impossible :)
238 $dealedCards = array();
240 foreach($deck as $group)
245 foreach($group as $card)
247 if($card['group'] == 1)
250 if($card['group'] == 2)
253 if($card['group'] == 3)
256 $dealedCards[] = $card;
261 $user = JFactory
::getUser();
263 $db = JFactory
::getDBO();
265 foreach($dealedCards as $card)
267 $tableCard = new stdClass
;
268 $tableCard->id
= $card['id'];
269 $tableCard->user_id
= $id;
271 if (!$db->updateObject( '#__beursplein_cards', $tableCard, 'id' )) {
276 $link = "index.php?option=com_beursplein&view=home";
277 $msg = "Je hebt nieuwe kaarten gekregen";
278 $this->setRedirect($link, $msg);
282 * Select the card so next reset, it gets played
284 function selectcard()
286 //If msg is not set, display this
288 $msg = "No msg set!";
291 $cardID = JRequest
::getInt('card' , 0, 'post');
296 $msg = "Error, geen kaart geselecteerd";
300 //Look if that card is owned
303 $cardsModel = JController
::getModel("Cards");
304 $card = $cardsModel->getCard($cardID);
307 $user = JFactory
::getUser();
308 $user_id = $user->id
;
310 //Check if you own this card
311 if($card['user_id'] != $user_id)
314 $msg = "Die kaart is niet van jou!";
318 //Check if card is not already played
319 if($card['status'] != 'deck')
321 $msg = "Error, die kaart is al gespeeld";
326 $userModel = $this->getModel('Users');
327 $error = !$userModel->selectCard($cardID, $user_id, $msg);
334 $stockID = JRequest
::getInt('stock' , 0, 'post');
338 $stocksModel = $this->getModel('Stocks');
339 $stock = $stocksModel->getStock($stockID);
341 if(!is_array($stock))
344 $msg = "Dat aandeel bestaat niet";
348 $userModel = $this->getModel('Users');
349 $error = !$userModel->selectStock($stockID, $user_id, $msg);
354 $link = "index.php?option=com_beursplein&view=home";
358 $this->setRedirect($link, $msg, 'error');
362 $this->setRedirect($link, $msg);
368 $userModel = JController
::getModel("Users");
369 $result = $userModel->registerUser();
373 $msg = "Het is gelukt, je kunt nu meespelen met beursplein 5";
377 $msg = "Er trad een error op. Misschien ben je nog niet ingelogd.";
380 $link = "index.php?option=com_beursplein&view=home";
384 $this->setRedirect($link, $msg, 'error');
388 $this->setRedirect($link, $msg);