UserController.php 7.61 KB
<?php
/**
 * Created by PhpStorm.
 * User: Vitaliy
 * Date: 12.06.14
 * Time: 12:02
 */

namespace controllers;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

class UserController extends \Phalcon\Mvc\Controller
{
    public function initialize()
    {
        $this->view->setTemplateAfter('common');
    }


    public function registrationAction()
    {
        $error = false;
        $user['name']           = $this->request->getPost('name', 'string');
        $user['email']          = $this->request->getPost('email', 'email');
        $user['status']         = 'New User';
        $user['password']       = $this->request->getPost('password', 'string');
        $user['confirm_password'] = $this->request->getPost('confirm_password', 'string');
        $check = \users::findFirst(array("email = '{$user['email']}'"));
        if($check instanceof \users) {
            echo "Такой e-mail уже существует";
            $error = true;
        }
        if($user['password'] != $user['confirm_password']) {
            echo "Неверно введен пароль";
            $error = true;
        } else {
            $user['password'] = $this->common->hashPasswd( $user['password'] );
        }
        $model = new \users;
        if(!$error && $model->save($user)) {
            echo "Вы успешно зарегестрированны";
        } else {
            echo "Произошла ошибка регистрации";
        }
    }

    public function loginAction()
    {
        $email          = $this->request->getPost('email', 'email');
        $password       = $this->request->getPost('password', 'string');
        $password       = $this->common->hashPasswd( $password );
        $user_model = new \users();
        $model = $user_model::findFirst(array(
            "email = '$email'",
            "password => '$password'",
        ));

        if($model instanceof \users) {
            $Online = date('Y-m-d H:i:s');
            $model->last_online = $Online;
            $model->save();
            $this->session->set("user-name", $model->name);
            $this->session->set("user-status", $model->status);
            $this->session->set("user-id", $model->id);
            $this->session->set("project-id", $model->issetProjects(true));
            $this->response->redirect('index');

        } else {
            echo "Пользователя с такими данными не существует";
        }
    }

    public function logoutAction()
    {
        $this->session->destroy();
        return $this->response->redirect('index');
    }

    public function checkAction() {
        $data = $this->request->getPost('data');
        $data = json_decode($data);
        if(isset($data->id)) {
            $model = \users::findFirst(array("$data->name= '$data->value' AND id = '$data->id'"));
            if($model instanceof \users) {
                $result = array(
                    'errors' => false,
                    'message' => ""
                );
                $data = json_encode($result);
                $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT);
                echo $data;
                die();
            }
        }

        $model = \users::findFirst("{$data->name}= '{$data->value}'");

        if($model instanceof \users) {
            $result = array(
                'errors' => true,
                'message' => "$data->value уже занято"
            );
        } else {
            $result = array(
                'errors' => false,
                'message' => "$data->value свободно"
            );
        }
        $data = json_encode($result);
        $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT);
        echo $data;
    }

    public function chosenProjectAction()
    {
        $this->view->disableLevel(\Phalcon\Mvc\View::LEVEL_MAIN_LAYOUT);
        try{
            $id = $this->request->getPost('id', 'int', NULL);
            if($id) {
                $project_model = new \users();
                $projectsData = $project_model->issetProjects();
                foreach($projectsData as $data){
                    if($data->toArray()['project_id'] == $id) {
                        $this->session->set("project-id", $id);
                        break;
                    }
                }
            } else {
                throw new \Exception();
            }
        }
        catch(\Exception $e){
            $this->flash->error( 'При выборе проекта произошла ошибка' );
        }
    }

    public function accountAction(){
        $id = $this->session->get("user-id");
        if( $this->request->isPost('update') )
        {
            $user['name']         = $this->request->getPost('name', 'string');
            $user['email']        = $this->request->getPost('email', 'email');
            $user['status']       = $this->request->getPost('status', 'string');
            $role                 = $this->request->getPost('role');
            $projects             = $this->request->getPost('projects');
            $new_password         = $this->request->getPost('new_password', 'string');
            $new_password_r       = $this->request->getPost('new_password_r', 'string');


            $model = \users::findFirst(array("id = '$id'"));
            if(!$model instanceof \users) {
                echo "Ползователь не найден";
                $this->error= true;
            }

            if($model->email != $user['email']) {
                $check = \users::findFirst(array("email = '{$user['email']}'"));
                if($check instanceof \users) {
                    echo "Такой e-mail уже существует";
                    $this->error= true;
                }
            }

            if(!$this->error && !empty($new_password)){
                if($new_password != $new_password_r) {
                    $this->error= true;
                    echo "Неверно указан проверочный пароль";
                } else {
                    $user['password'] = $this->common->hashPasswd($new_password);
                }
            }

            if(!$this->error) {

                $model->save($user);
                $model->userToRole->delete();
                foreach($role as $item) {
                    $userToRole = new \userToServices;
                    $userToRole->user_id = $model->id;
                    $userToRole->role_id = $item;
                    $userToRole->save();
                }
                $model->userToProjects->delete();
                foreach($projects as $project) {
                    $userToProjects = new \userToProjects;
                    $userToProjects->user_id = $model->id;
                    $userToProjects->project_id = $project;
                    $userToProjects->save();
                }
                return $this->response->redirect('user_index');
            }

        }

        if(!$id) {
            echo "Не указан номер пользователя";
        } else {
            $data = \users::findFirst("id = '$id'");
            if($data instanceof \users) {
                $role = \usersRole::find();
                $status = \usersStatus::find();
                $projects = \projects::find(array("order" => 'id'));

                $this->view->setVars([
                    'role' => $role,
                    'status' => $status,
                    'projects' => $projects,
                    'data' => $data
                ]);
            }

        }
    }
}