Improved the install.xml
[Beursplein5.git] / site / controller.php
blob89641ce6b67887f65bba952d3c0fab2245aad8d4
1 <?php
2 /**
3 * Beursplein 5 default controller
4 */
6 // No direct access
7 defined( '_JEXEC' ) or die( 'Restricted access' );
9 jimport('joomla.application.component.controller');
11 /**
12 * Beursplein 5 Component Controller
14 class BeurspleinController extends JController
16 /**
17 * constructor (registers additional tasks to methods)
18 * @return void
20 function __construct()
22 parent::__construct();
24 // Register Extra tasks
25 //$this->registerTask( 'add', 'edit' );
28 /**
29 * The default task,
30 * Add the required models and display the view
32 function Display()
34 $userModel = JController::getModel("Users");
36 //Checks for new user
37 switch($userModel->checkUser())
39 case 0:
40 $viewName = "newuser";
41 break;
42 case 1:
43 $viewName = "newuser";
44 break;
45 case 2:
46 //Get the viewname
47 $viewName = JRequest::getVar('view', 'home');
48 break;
49 default:
50 $viewName = "newuser";
51 break;
54 //Get the view
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"));
70 if($viewName=='home')
72 $view->setModel(JController::getModel("Cards"));
73 $view->setModel(JController::getModel("Log"));
76 //Display the view
77 $view->display();
80 /**
81 * Buys and sells all stocks that are posted
83 function buysell()
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";
90 $error = false;
92 if(!is_array($stocks) || !is_array($options))
94 $msg = "Je hebt niks gekocht/verkocht";
95 $error = false;
97 else
99 //Get the model
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)
108 $error = true;
110 else
112 //Get the user's id
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);
120 //Get the pricelist
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];
130 //Money check
131 if($totalValue>$money)
133 $msg = "Je hebt te weinig geld om die aandelen te kopen";
134 $error = true;
136 else
138 //Voeg de aandelen toe
139 if($portfolioModel->addStocks($user_id, $stocks, $msg))
141 //Get all stock info
142 $stockInfo = $stocksModel->getStocksListTransformed();
144 //Log everything
145 $logModel = $this->getModel('Log');
146 foreach($stocks as $stock_id => $amount)
148 $price = abs($amount * $stockInfo[$stock_id]['value']);
150 if($amount > 0)
152 $text = "Buy: {$amount} x {$stockInfo[$stock_id]['name']} voor &euro;{$price}";
154 else
156 $amount = abs($amount);
157 $text = "Sell: {$amount} x {$stockInfo[$stock_id]['name']} voor &euro;{$price}";
160 if(!$logModel->log($text, $user_id))
162 $error = true;
163 $msg = "Er was een error bij het wegschrijven van de log.";
167 //Update the money
168 if($userModel->setMoney($user_id, $money - $totalValue))
170 $result = $portfolioModel->deleteEmptyStocks();
172 if($result === false)
174 $error = true;
175 $msg = "Can not delete old records!";
177 else
179 $error = false;
182 else
184 $error = true;
185 $msg = "Error, je geld is niet geupdated";
188 else
190 $error = true;
196 $link = "index.php?option=com_beursplein&view=stocks";
198 if($error)
200 $this->setRedirect($link, $msg, 'error');
202 else
204 $this->setRedirect($link, $msg);
209 * Geeft de user nieuwe kaarten
211 function getcards()
213 //Get the cards in the deck
214 $cardsModel = JController::getModel("Cards");
215 $deck = $cardsModel->getDeckCards();
216 $deck = $cardsModel->sortCardsGroup($deck);
218 //Some checks
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)
242 shuffle($group);
243 $count = 0;
245 foreach($group as $card)
247 if($card['group'] == 1)
248 if($count == 3)
249 break;
250 if($card['group'] == 2)
251 if($count == 2)
252 break;
253 if($card['group'] == 3)
254 if($count == 5)
255 break;
256 $dealedCards[] = $card;
257 $count++;
261 $user = JFactory::getUser();
262 $id = $user->id;
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' )) {
272 exit($db->stderr());
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
287 $error = true;
288 $msg = "No msg set!";
290 //Expect an int
291 $cardID = JRequest::getInt('card' , 0, 'post');
293 if($cardID == 0)
295 $error = true;
296 $msg = "Error, geen kaart geselecteerd";
298 else
300 //Look if that card is owned
302 //First get the card
303 $cardsModel = JController::getModel("Cards");
304 $card = $cardsModel->getCard($cardID);
306 //Get the user_id
307 $user = JFactory::getUser();
308 $user_id = $user->id;
310 //Check if you own this card
311 if($card['user_id'] != $user_id)
313 $error = true;
314 $msg = "Die kaart is niet van jou!";
316 else
318 //Check if card is not already played
319 if($card['status'] != 'deck')
321 $msg = "Error, die kaart is al gespeeld";
322 $error = true;
324 else
326 $userModel = $this->getModel('Users');
327 $error = !$userModel->selectCard($cardID, $user_id, $msg);
332 if(!$error)
334 $stockID = JRequest::getInt('stock' , 0, 'post');
336 if($stockID != 0)
338 $stocksModel = $this->getModel('Stocks');
339 $stock = $stocksModel->getStock($stockID);
341 if(!is_array($stock))
343 $error = true;
344 $msg = "Dat aandeel bestaat niet";
346 else
348 $userModel = $this->getModel('Users');
349 $error = !$userModel->selectStock($stockID, $user_id, $msg);
354 $link = "index.php?option=com_beursplein&view=home";
356 if($error)
358 $this->setRedirect($link, $msg, 'error');
360 else
362 $this->setRedirect($link, $msg);
366 function register()
368 $userModel = JController::getModel("Users");
369 $result = $userModel->registerUser();
371 if($result)
373 $msg = "Het is gelukt, je kunt nu meespelen met beursplein 5";
375 else
377 $msg = "Er trad een error op. Misschien ben je nog niet ingelogd.";
380 $link = "index.php?option=com_beursplein&view=home";
382 if(!$result)
384 $this->setRedirect($link, $msg, 'error');
386 else
388 $this->setRedirect($link, $msg);