Your IP : 216.73.217.79


Current Path : /var/www/v3.cesa.co.za/src/UserBundle/Controller/
Upload File :
Current File : /var/www/v3.cesa.co.za/src/UserBundle/Controller/DefaultController.php

<?php

namespace App\UserBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\FormError;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use App\ContentBundle\Entity\Files;
use App\CoreBundle\Services\ServiceGetterManager;
use App\UserBundle\Form\Type\UserForgotPwType;
use App\UserBundle\Form\Type\UserMyDetailsType;
use App\UserBundle\Form\Type\UserRegisterType;
use App\UserBundle\Form\Type\UserResetPwType;
use App\TravelBundle\Form\Type\EstablishmentRegisterType;
use App\TravelBundle\Form\Type\EstablishmentI18nRegisterType;

class DefaultController extends AbstractController {

    public function indexAction(Request $request, ServiceGetterManager $sg, $name) {
        return $this->render('@UserBundle/Default/index.html.twig', array('name' => $name));
    }

    public function registerAction(Request $request, ServiceGetterManager $sg) {

        try {

            $registerForm = $this->createForm(UserRegisterType::class);

            if ($request->getMethod() == 'POST') {

                $registerForm->handleRequest($request);

                if ($registerForm->isSubmitted() && $registerForm->isValid()) {

                    $userListManager = $sg->get('user_list.manager');

                    $requestValues = $request->get('user_register');
                    $requestValues['user_type_id'] = $sg->get('system_setting.manager')->getSetting('fe_user_type');
                    $requestValues['is_active'] = true;
                    $requestValues['deleted'] = false;
                    $userList = null;

                    $testCreate = $userListManager->saveFromRequest($requestValues, $userList);

                    if (strlen($testCreate) <= 0 && isset($requestValues['company_name']) && strlen($requestValues['company_name']) > 0) {

                        $companyManager = $sg->get('companies.manager');

                        $company = $companyManager->saveQuick($requestValues['company_name'], $userList);

                        if (isset($requestValues['address_postal'])) {
                            $companyManager->setAddressPostalId($company, $requestValues['address_postal']);
                        }

                        if (isset($requestValues['vat_number'])) {
                            $company->setVatNumber($requestValues['vat_number']);
                            $companyManager->save($company);
                        }

                        if (isset($requestValues['address_physical'])) {
                            $companyManager->setAddressPostalId($company, $requestValues['address_physical']);
                        }

                        $systemSettingManager = $sg->get('system_setting.manager');

                        $userListManager->linkAccessLevel($userList, array($systemSettingManager->getSetting('company_administrator_access_level')));
                    }

                    if (strlen($testCreate) <= 0 && isset($requestValues['user_tel_no_mobile'])) {
                        $userListManager->setUserTelNoMobileId($userList, $requestValues['user_tel_no_mobile']);
                    }

                    if (strlen($testCreate) <= 0 && isset($requestValues['address_postal'])) {
                        $userListManager->setUserAddressPostalId($userList, $requestValues['address_postal']);
                    }

                    $idDocArr = $request->files->get('user_register');
                    $docUploaded = false;

                    if (strlen($testCreate) <= 0) {

                        $userListManager->notifyAdmins($userList);

                        if ($sg->get('system_setting.manager')->getSetting('user_register_verify_e_mail', 0) > 0) {
                            $this->addFlash('success', 'Thank you for your registration. Please check your inbox for a verification e-mail. You can use the link in that e-mail to verify your e-mail address and log in. '
                                    . 'Please be sure to check your Junk/ Spam mail folder as well.');
                        } else {
                            $this->addFlash('success', 'Thank you for your registration. You may now log in.');
                        }

                        return $this->redirect($this->generateUrl('login'));
//                        return $this->render('@UserBundle/Default/register.success.html.twig', array('userLanguage' => $userLanguage));
                    } else {
                        $registerForm->get('username')->addError(new FormError($testCreate));
                    }
                } else { //user form is valid
                    $this->addFlash('error', 'There was a problem with your registration. Please check the error messages below.');
                }
            }
        } catch (\Exception $ex) {
            $logger = $sg->get('error_log.manager');
            $logger->error('Error on register page: ' . $ex->getMessage() . ' - ' . $ex->getTraceAsString());
            return $this->redirect($this->generateUrl('iga_core_500', array('message' => $ex->getMessage())));
        }

        $route = $sg->get('system_setting.manager')->getSetting('register_template', '@UserBundle/Default/register.html.twig');

        return $this->render($route, array('form' => $registerForm->createView()));
    }

    public function forgotPwAction(Request $request, ServiceGetterManager $sg) {

        $forgotPwForm = $this->createForm(UserForgotPwType::class);

        if ($request->getMethod() == 'POST') {

            $forgotPwForm->handleRequest($request);

            if ($forgotPwForm->isValid()) {

                $requestValues = $request->get('user_forgot_pw');

                $feedbackArray = $sg->get('user_list.manager')->sendResetLink($requestValues['e_mail_address_string']);

                if ($feedbackArray['success']) {
                    $this->addFlash('success', 'Thank you. We have sent you an e-mail with a link you can click on to reset your password.');
                } else {
                    $this->addFlash('error', $feedbackArray['message']);
                }
            }
        }

        $route = $sg->get('system_setting.manager')->getSetting('forgot_pwd_template', '@UserBundle/Default/forgot.html.twig');

        return $this->render($route, array('form' => $forgotPwForm->createView(), 'pageTitleString' => 'Reset password'));
    }

    /**
     * Reset user password success
     *
     * @return Response
     */
    public function resetPwAction(Request $request, ServiceGetterManager $sg) {

        $userListManager = $sg->get('user_list.manager');
        $token = $request->get('token');

//        $userList = $userListManager->checkResetCode($token);

        $resetForm = $this->createForm(UserResetPwType::class);

        if ($request->getMethod() == 'POST') {

            $resetForm->handleRequest($request);

            if ($resetForm->isValid()) {

                $resetValues = $request->get('user_reset_pw');

                $userList = $userListManager->checkResetCode($resetValues['reset_code']);

                if (is_object($userList)) {
                    $userList->setPlainPassword($resetValues['password']['password']);
                    $userList->setIsActive(true);
                    $userListManager->updatePassword($userList);
                    $userListManager->save($userList);

                    $this->addFlash('success', 'Your password has been reset. You may now log in. Your username is: '
                            . $userList->getUsername());
                    return $this->redirect($this->generateUrl('login'));
                } else {
                    $this->addFlash('error', 'Invalid reset code or code has expired. Please try again.');
                    return $this->redirect($this->generateUrl('iga_user_resetting_request'));
                }
            } else {
                $this->addFlash('error', 'Please complete the form carefully');
            }
        } //post
//        $userList = $sg->get('user_list.manager')->checkToken($token);

        $route = $sg->get('system_setting.manager')->getSetting('reset_pwd_template', '@UserBundle/Default/reset.success.html.twig');

        return $this->render($route, array(
                    'token' => $token,
                    'form' => $resetForm->createView(),
                    'pageTitleString' => 'Reset password',
        ));
    }

    public function myDetailsAction(Request $request, ServiceGetterManager $sg) {

        try {

            $userListManager = $sg->get('user_list.manager');

            $userList = $userListManager->getLoggedInUser();

            if (!is_object($userList) || !$userList->getGranted('IS_AUTHENTICATED_FULLY')) {
                throw new \Exception('You need to log in to access this page');
            }

            $userListForm = $this->createForm(UserMyDetailsType::class, null, array('user_list' => $userList));

            if ($request->getMethod() == 'POST') {

                $userListForm->handleRequest($request);

                if ($userListForm->isValid()) {

                    $requestValues = $request->get('user_my_details');
                    $requestValues['id'] = $userList->getId();
                    $requestValues['user_type_id'] = $userList->getUserTypes()->getId();
                    $requestValues['is_active'] = true;
                    $requestValues['deleted'] = false;

                    if (isset($requestValues['e_mail_address_string'])) {
                        $userList->setUserEMailAddressString($requestValues['e_mail_address_string']);
                    } else {
                        $userList->setUserEMailAddressString($requestValues['username']);
                    }

                    $requestValues['e_mail_address'] = $userList->getUserEMailAddress();
                    $requestValues['ignore_empty_pwd'] = true;

                    $testCreate = $userListManager->saveFromRequest($requestValues);

                    if (strlen($testCreate) <= 0) {
                        $userListManager->notifyAdmins($userList, false);
                        return $this->render('@UserBundle/Default/my_details.success.html.twig');
                    } else {
                        $userListForm->get('username')->addError(new FormError($testCreate));
                    }
                }
            }
        } catch (\Exception $ex) {
            $logger = $sg->get('error_log.manager');
            $logger->error('Error on my details page: ' . $ex->getMessage() . ' - ' . $ex->getTraceAsString());
            return $this->redirect($this->generateUrl('iga_core_500', array('message' => $ex->getMessage())));
        }

        $route = $sg->get('system_setting.manager')->getSetting('my_details_template', '@UserBundle/Default/my_details.html.twig');

        return $this->render($route, array('form' => $userListForm->createView(), 'userList' => $userList));
    }

    public function fetchUserSelect2AjaxAction(Request $request, ServiceGetterManager $sg) {

        try {

            $return = array('result' => array());

            $companyId = $request->get('company_id');

            if ($companyId == 'undefined') {
                $companyId = '';
            }

            $search = $request->get('q');

            if (is_array($search)) {
                $search = $search['term'];
            }

            $return['result'] = $sg->get('user_list.manager')->findBySearchCompany($search, $companyId);
        } catch (\Exception $ex) {
            $logger = $sg->get('error_log.manager');
            $logger->error('Error on user ajax lookup: ' . $ex->getTraceAsString());
            $return['error_message'] = $ex->getMessage();
        }

        return new Response(json_encode($return), 200, array('Content-Type' => 'text/json'));
    }

    public function fetchUserDetailsAction(Request $request, ServiceGetterManager $sg, $userListId) {

        $return = array('user_list' => array(), 'error_message' => '');

        try {
            $return = $sg->get('user_list.manager')->getUserListObjectArray($userListId);
        } catch (\Exception $ex) {
            $logger = $sg->get('error_log.manager');
            $logger->error('Error on user ajax lookup: ' . $ex->getTraceAsString());
            $return['error_message'] = $ex->getMessage();
        }

        return new Response(json_encode($return), 200, array('Content-Type' => 'text/json'));
    }

    public function subscribeNewsletterAction(Request $request, ServiceGetterManager $sg) {

        if ($request->getMethod() == 'POST') {

            $eMailAddress = $request->get('e_mail_address');
            $userList = null;

            $message = $sg->get('user_list.manager')->saveFromRequest(
                    array('username' => $eMailAddress, 'e_mail_address' => $eMailAddress, 'user_types' => $sg->get('system_setting.manager')->getSetting('fe_user_type'), 'e_mail_address_subscribed' => true), $userList
            );

            if (strlen($message) <= 0) {
                $this->addFlash('success', 'Thank you for subscribing to our newsletter');
            } else {
                $this->addFlash('warning', 'We could not subscribe you to our newsletter: ' . $message);
            }
        }

        return $this->redirect($this->generateUrl('home'));
    }

    public function unsubscribeNewsletterAction(Request $request, ServiceGetterManager $sg) {

        $unsub = $request->get('unsub');

        $message = $sg->get('user_list.manager')->unsubscribe($unsub);

        if (strlen($message) <= 0) {
            $this->addFlash('success', 'Thank you. We have unsubscribed you from our newsletter.');
        } else {
            $this->addFlash('warning', 'We could not unsubscribe you from our newsletter: ' . $message);
        }

        return $this->redirect($this->generateUrl('home'));
    }
}