function insertReserva($idHotel, $data = array(), $data_apartamento = array(), $data_excursiones = array(), $data_usuario = array(), $data_tarjeta = array(), $total = 0) { try { $transaction = new Transaction(); $email = $data_usuario['email']; $usuario = getUsuarioByEmail($email); if ($usuario && count($usuario)) { $usuario_id = $usuario[0]->id; $usuario = DAOFactory::getUsuarioDAO()->prepare($data_usuario, $usuario_id); DAOFactory::getUsuarioDAO()->update($usuario); } else { $data_usuario['tiempoCreacion'] = date('Y-m-d'); $data_usuario['estatus'] = 'Activo'; $data_usuario['usuarioGrupoId'] = 4; $usuario = DAOFactory::getUsuarioDAO()->prepare($data_usuario); $usuario_id = DAOFactory::getUsuarioDAO()->insert($usuario); } $hotel = DAOFactory::getHotelDAO()->load($idHotel); $data_reserva = array('hotelId' => $idHotel, 'usuarioId' => $usuario_id, 'tiempoCreacion' => date('Y-m-d'), 'total' => $total, 'peticionesEspeciales' => $data['peticionesEspeciales'], 'urlOrigen' => $data['urlOrigen'], 'monedaId' => $data['monedaId'], 'estado' => $hotel->bookingOnrequest ? 'Pendiente' : 'Aprobada', 'recibirFactura' => $data['recibirFactura'], 'idiomaId' => $data['idiomaId'], 'cartId' => $data['cartId'], 'adultos' => $data['adultos'], 'ninios' => $data['ninios'], 'tipoCobro' => $hotel->tipoReserva); if ($data_tarjeta['op'] && strlen(trim($data_tarjeta['op']))) { $data_reserva['estado'] = 'Confirmada'; } $stop_sales = DAOFactory::getHotelFechasDAO()->queryInFechas($data_apartamento['inicio'], $data_apartamento['final'], $idHotel); if (count($stop_sales)) { $data_reserva['estado'] = 'Pendiente'; } $reserva = DAOFactory::getReservaDAO()->prepare($data_reserva); $reserva_id = DAOFactory::getReservaDAO()->insert($reserva); $localizador = strtoupper(generarLocalizador(5)); $reserva = DAOFactory::getReservaDAO()->prepare(array('localizador' => $localizador), $reserva_id); DAOFactory::getReservaDAO()->update($reserva); $data_apartamento['reservaId'] = $reserva_id; $apartamento = DAOFactory::getReservaProductoDAO()->prepare($data_apartamento); $apartamento_id = DAOFactory::getReservaProductoDAO()->insert($apartamento); foreach ($data_excursiones as $data_excursion) { $data_excursion['reservaId'] = $reserva_id; if ($data_excursion['eventoTpv'] && !is_string($data_excursion['eventoTpv'])) { $data_excursion['eventoTpv'] = json_encode($data_excursion['eventoTpv']); } $excursion = DAOFactory::getReservaProductoDAO()->prepare($data_excursion); $excursion_id = DAOFactory::getReservaProductoDAO()->insert($excursion); } $clave = getClaveByHotel($idHotel); $data_tarjeta['reservaId'] = $reserva_id; if ($data_tarjeta['tarjetaNumero'] && strlen(trim($data_tarjeta['tarjetaNumero']))) { $data_tarjeta['tarjetaNumero'] = Encrypter::encrypt($data_tarjeta['tarjetaNumero'], $clave); } if ($data_tarjeta['cvv'] && strlen(trim($data_tarjeta['cvv']))) { $data_tarjeta['cvv'] = Encrypter::encrypt($data_tarjeta['cvv'], $clave); } if ($data_tarjeta['importe'] || $hotel->tipoReserva != 'offline') { $importe = $data_tarjeta['importe']; require 'Logic/afiliado.php'; insertReservaAfiliado($reserva_id, $importe); $pago = DAOFactory::getReservaPagoDAO()->prepare($data_tarjeta); $pago_id = DAOFactory::getReservaPagoDAO()->insert($pago); } $transaction->commit(); return $reserva_id; } catch (Exception $e) { var_dump($e); $transaction->rollback(); return false; } }
break; } } if (isset($data['hotel']) && !is_null($data['hotel']) && is_array($data['hotel'])) { $hoteles = array(); foreach ($data['hotel'] as $hotel) { if (!is_null($hotel) && strlen(trim($hotel))) { $hoteles[] = trim($hotel); } } $data['hotel'] = $hoteles; } else { $valid = false; } if ($valid) { $usuario = getUsuarioByEmail($data['email']); if (count($usuario) == 0) { $usuario_id = registrarCliente($data); if ($usuario_id) { $usuario = getUsuario($usuario_id); try { $to = $data['email']; $subject = 'Gracias por registrarse en Vika Hotel'; $smarty->assign('usuario', $usuario); $smarty->assign('empresa', $data); $smarty->assign('hoteles', $data['hotel']); $body = $smarty->fetch('admin/confirmacionRegistroEmail.tpl'); $mail = new Core_Mailer(); $mail->send_email($to, $subject, $body); } catch (Exception $e) { print_r($e);