Exemplo n.º 1
2
 static function addEntry($form)
 {
     $transaction = NULL;
     $result = array();
     $userId = null;
     $user = null;
     $newUser = false;
     $userExists = SecurityManager::isValidUser();
     try {
         $transaction = GenericDao::beginTransaction();
         if (!$userExists) {
             $step = Phinq::create($form->steps)->single(function ($item) {
                 return isset($item->disabled) && $item->disabled == true;
             });
             $mail = Phinq::create($step->controls)->single(function ($item) {
                 return $item->columnName == 'mail';
             })->value;
             $nombre = Phinq::create($step->controls)->single(function ($item) {
                 return $item->columnName == 'nombre';
             })->value;
             $apellido = Phinq::create($step->controls)->single(function ($item) {
                 return $item->columnName == 'apellido';
             })->value;
             $user = UserAdmin::getUserByMail($mail);
             if ($user != null) {
                 $form->userId = $userId = $user->id;
             } else {
                 $newUser = true;
                 $password = substr(md5(uniqid()), 0, 8);
                 $userDto = new \stdClass();
                 $userDto->firstName = $nombre;
                 $userDto->lastName = $apellido;
                 $userDto->mail = $mail;
                 $userDto->type = UserType::client;
                 $userDto->password = $password;
                 $response = json_decode(SecurityAdmin::createUser($userDto, $transaction));
                 $form->userId = $userId = $response->data;
             }
             $form->confirmada = 'N';
         } else {
             $form->userId = $userId = SecurityManager::UserInfo()->id;
             $form->confirmada = 'S';
         }
         $form->ip = $_SERVER['REMOTE_ADDR'];
         $entryId = FormDao::addEntry($form, $transaction);
         $user = SecurityDao::getUserById($userId);
         $dwoo = new Core();
         if (!$userExists) {
             if (!$newUser) {
                 $user->logo = AppConfig::logoUrl;
                 $user->producto = BaseAdmin::getProductoSimple($form->productoId)->nombre;
                 $code = base64_encode($user->id . '|' . $user->createDate . '|' . $user->mail . '|' . $entryId . '|' . $form->productoId . '|' . $form->id);
                 $link = 'http://' . getenv('HTTP_HOST') . APP_FOLDER . '/views/client/Confirmacion.php?c=' . $code;
                 $user->link = $link;
                 $template = $dwoo->get($_SERVER["DOCUMENT_ROOT"] . '/views/shared/templates/mails/userSolicitudRequestConfirm.tpl', (array) $user);
                 Mail::Send($user->mail, 'Confirmación de solicitud', $template);
             } else {
                 $subject = 'Aladinnus, proceso de activación';
                 $code = base64_encode($user->id . '|' . $user->createDate . '|' . $user->mail . '|' . $entryId . '|' . $form->productoId . '|' . $form->id);
                 $link = 'http://' . getenv('HTTP_HOST') . APP_FOLDER . '/views/client/Activacion.php?c=' . $code;
                 $user->link = $link;
                 $userDto->logo = $user->logo = AppConfig::logoUrl;
                 $template = $dwoo->get($_SERVER["DOCUMENT_ROOT"] . '/views/shared/templates/mails/userActivation.tpl', (array) $user);
                 Mail::Send($user->mail, $subject, $template);
             }
         } else {
             //MAIL PROVEEDORES
             $usersProveedor = SecurityDao::getUsersProveedorByProductoId($form->productoId);
             foreach ($usersProveedor as $prov) {
                 FormAdmin::addProveedorEntry($prov->id, $form->id, $entryId, $user->id);
                 $prov->logo = AppConfig::logoUrl;
                 $template = $dwoo->get($_SERVER["DOCUMENT_ROOT"] . '/views/shared/templates/mails/providerNewSolicitud.tpl', (array) $prov);
                 Mail::Send($prov->mail, 'Nueva solicitud', $template);
             }
             //MAIL ADMINs
             $usersAdmin = SecurityDao::getUsersAdmin();
             $usersAdmin = Phinq::create($usersAdmin)->where(function ($user) {
                 return $user->enabled;
             })->toArray();
             foreach ($usersAdmin as $admin) {
                 $admin->logo = AppConfig::logoUrl;
                 $template = $dwoo->get($_SERVER["DOCUMENT_ROOT"] . '/views/shared/templates/mails/userAdminRequest.tpl', (array) $admin);
                 Mail::Send($admin->mail, 'Nueva solicitud', $template);
             }
             //MAIL USUARIO
             $user->logo = AppConfig::logoUrl;
             $user->producto = BaseAdmin::getProductoSimple($form->productoId)->nombre;
             $template = $dwoo->get($_SERVER["DOCUMENT_ROOT"] . '/views/shared/templates/mails/userRequest.tpl', (array) $user);
             Mail::Send($user->mail, 'Nueva solicitud', $template);
         }
         $transaction->commit();
     } catch (\Exception $ex) {
         $transaction->rollBack();
         $result = array($ex->getMessage());
     }
     return $result;
 }