<?php

class CasinoController extends Controller {

    public function accessRules() {
        return array(
            array('allow',
                'actions' => array('index'),
                'users' => array('@'),
            ),
            array('deny',
                'users' => array('*'),
                'deniedCallback' => array(Yii::app()->controller, 'redirectToHome'),
            )
        );
    }

    public function actions() {
        return array(
            'page' => array(
                'class' => 'CViewAction',
            ),
        );
    }

    public function actionIndex() {
        $u = Users::findUser();
        $this->render('index', array(
            'u' => $u,
        ));
    }

    public function actionOutchips() {
        $user = Users::findUser();
        if (isset($_POST['Users']['chips'])) {
            $chips_out = abs($_POST['Users']['chips']);
            if ($chips_out >= 50 AND $chips_out != 0) {
                if ($user->chips >= $chips_out) {
                    $money = $chips_out * 450;
                    $user->saveCounters(array('money' => $money, 'chips' => -$chips_out));
                    Yii::app()->user->setFlash('success', 'Вы успешно обменяли фишки и получили ' . $money . '<img src="/images/money.png">');
                    $this->redirect(array('casino/outchips'));
                } else {
                    Yii::app()->user->setFlash('error', 'У вас нет столько фишек');
                    $this->redirect(array('casino/outchips'));
                }
            } else {
                Yii::app()->user->setFlash('error', 'Минимальная сумма вывода 50 фишек');
                $this->redirect(array('casino/outchips'));
            }
        }
        $this->render('outchips', array(
            'user' => $user,
        ));
    }

    public function actionCount() {
        $user = Users::findUser();
        if (isset($_POST['count'])) {
            $count = abs($_POST['count']);
            $rate = abs($_POST['rate']);
            if ($rate < 1 OR $rate > 25) {
                Yii::app()->user->setFlash('error', 'Минимальная ставка - 1 фишка. Максимальная - 25 фишек.');
                $this->redirect(array('casino/count'));
            }
            if ($rate > $user->chips) {
                Yii::app()->user->setFlash('error', 'У вас нет столько фишек');
                $this->redirect(array('casino/count'));
            }
            if ($count == 1 OR $count == 2 OR $count == 3) {
                $rand_count = rand(1, 3);
                if ($rand_count == $count) {
                    Yii::app()->user->setFlash('error', 'Вы выйграли! Крупье загадал число ' . $rand_count . '! Вы получили ' . ($rate * 3) . '<img src="/images/chips.png">');
                    $user->saveCounters(array('chips' => $rate * 3));
                    $this->redirect(array('casino/count'));
                } else {
                    Yii::app()->user->setFlash('error', 'Похоже что вы проиграли! Крупье загадал число ' . $rand_count);
                    $user->saveCounters(array('chips' => -$rate));
                    $this->redirect(array('casino/count'));
                }
            } else {
                Yii::app()->user->setFlash('error', 'Укажите число от 1 до 3');
                $this->redirect(array('casino/count'));
            }
        }
        $this->render('count', array(
            'user' => $user,
        ));
    }

    public function actionMoreless() {
        $user = Users::findUser();
        if (isset($_POST['count'])) {
            $count = abs($_POST['count']);
            $rate = abs($_POST['rate']);
            if ($rate < 1 OR $rate > 25) {
                Yii::app()->user->setFlash('error', 'Минимальная ставка - 1 фишка. Максимальная - 25 фишек.');
                $this->redirect(array('casino/moreless'));
            }
            if ($rate > $user->chips) {
                Yii::app()->user->setFlash('error', 'У вас нет столько фишек');
                $this->redirect(array('casino/moreless'));
            }
            if ($count == 1 OR $count == 2 OR $count == 3) {
                $rand_count = rand(1, 10);
                if ($count == 1) {
                    if ($rand_count > 5) {
                        Yii::app()->user->setFlash('error', 'Вы выйграли! Крупье загадал число ' . $rand_count . '! Вы получили ' . ($rate * 2) . '<img src="/images/chips.png">');
                        $user->saveCounters(array('chips' => $rate * 2));
                        $this->redirect(array('casino/moreless'));
                    } else {
                        Yii::app()->user->setFlash('error', 'Похоже что вы проиграли! Крупье загадал число ' . $rand_count);
                        $user->saveCounters(array('chips' => -$rate));
                        $this->redirect(array('casino/moreless'));
                    }
                }
                
                if ($count == 2) {
                    if ($rand_count < 5) {
                        Yii::app()->user->setFlash('error', 'Вы выйграли! Крупье загадал число ' . $rand_count . '! Вы получили ' . ($rate * 2) . '<img src="/images/chips.png">');
                        $user->saveCounters(array('chips' => $rate * 2));
                        $this->redirect(array('casino/moreless'));
                    } else {
                        Yii::app()->user->setFlash('error', 'Похоже что вы проиграли! Крупье загадал число ' . $rand_count);
                        $user->saveCounters(array('chips' => -$rate));
                        $this->redirect(array('casino/moreless'));
                    }
                }
                
                if ($count == 3) {
                    if ($rand_count == 5) {
                        Yii::app()->user->setFlash('error', 'Вы выйграли! Крупье загадал число ' . $rand_count . '! Вы получили ' . ($rate * 7) . '<img src="/images/chips.png">');
                        $user->saveCounters(array('chips' => $rate * 7));
                        $this->redirect(array('casino/moreless'));
                    } else {
                        Yii::app()->user->setFlash('error', 'Похоже что вы проиграли! Крупье загадал число ' . $rand_count);
                        $user->saveCounters(array('chips' => -$rate));
                        $this->redirect(array('casino/moreless'));
                    }
                }
            } else {
                $this->redirect(array('casino/index'));
            }
        }
        $this->render('moreless', array(
            'user' => $user,
        ));
    }

    public function actionChips() {
        $user = Users::model()->findByPk(Yii::app()->user->id);
        $model = new Users;
        if (isset($_POST['Users']['chips'])) {
            $model->attributes = $_POST['Users'];
            $type = abs($_POST['Users']['money']);
            $chips = abs($_POST['Users']['chips']);
            if ($chips == 0) {
                Yii::app()->user->setFlash('error', 'Некорректный ввод');
                $this->redirect(array('casino/chips'));
            }
            if ($type == 0) {
                $type_t = 'money';
                $count_t = $chips * 500;
            }
            if ($type == 1) {
                $type_t = 'donate';
                $count_d = round($chips % 20);
                if ($count_d != 0) {
                    Yii::app()->user->setFlash('error', 'Необходимо указать число кратное 20');
                    $this->redirect(array('casino/chips'));
                }
                $count_t = $chips / 20;
            }

            if ($user->$type_t >= $count_t) {
                $user->saveCounters(array($type_t => -$count_t, 'chips' => $chips));
                Yii::app()->user->setFlash('success', 'Обмен произведен успешно');
                $this->redirect(array('casino/chips'));
            } else {
                Yii::app()->user->setFlash('error', 'Не хватает средств');
                $this->redirect(array('casino/chips'));
            }
        }
        $this->render('chips', array(
            'user' => $user,
            'model' => $model,
        ));
    }

}
