PageRenderTime 46ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/myCore/controladores/carritoController.php

https://gitlab.com/fabian.morales/marlon_becerra
PHP | 180 lines | 145 code | 25 blank | 10 comment | 8 complexity | ffbad7c00edacbfb33b0d15e58f9bf84 MD5 | raw file
  1. <?php
  2. class carritoController extends myController{
  3. function obtenerIdSesion(){
  4. $idSesion = mySession::get("id_sesion");
  5. if (empty($idSesion)){
  6. $idSesion = uniqid();
  7. mySession::set("id_sesion", $idSesion);
  8. }
  9. return $idSesion;
  10. }
  11. function guardarIdSesion($id){
  12. mySession::set("id_sesion", $id);
  13. }
  14. public function index(){
  15. $idSesion = $this->obtenerIdSesion();
  16. $url = myApp::getUrlRoot();
  17. $carrito = Carrito::where("id_sesion", $idSesion)->with(["producto.imagenes", "extension.talla", "extension.color"])->get();
  18. $totales = Carrito::totales($idSesion);
  19. $myCfg = new myConfig();
  20. $logueado = myApp::estaLogueado() ? "S" : "N";
  21. return myView::render("carrito.index", ["urlImg" => myApp::urlImg(), "carrito" => $carrito, "totales" => $totales, "envio" => $myCfg->gastosEnvio, "logueado" => $logueado, "url" => $url]);
  22. }
  23. public function listarCarrito(){
  24. $idSesion = $this->obtenerIdSesion();
  25. $url = myApp::getUrlRoot();
  26. $carrito = Carrito::where("id_sesion", $idSesion)->with(["producto.imagenes", "extension.talla", "extension.color"])->get();
  27. $totales = Carrito::totales($idSesion);
  28. $myCfg = new myConfig();
  29. return myView::render("carrito.lista_items", ["urlImg" => myApp::urlImg(), "carrito" => $carrito, "totales" => $totales, "envio" => $myCfg->gastosEnvio, "url" => $url]);
  30. }
  31. public function agregarProducto(){
  32. $idSesion = $this->obtenerIdSesion();
  33. $request = myApp::getRequest();
  34. $idProducto = $request->getVar("id_producto");
  35. $idExt = $request->getVar("id_ext");
  36. $cantidad = $request->getVar("cantidad", 0, "int");
  37. $ext = Extension::find($idExt);
  38. if (sizeof($ext)){
  39. $reg = Carrito::where("id_sesion", $idSesion)->where("id_ext", $idExt)->first();
  40. if (!sizeof($reg)){
  41. $reg = new Carrito();
  42. $reg->id_sesion = $idSesion;
  43. $reg->id_ext = $idExt;
  44. $reg->id_referencia = $idProducto;
  45. $reg->cantidad = 0;
  46. $reg->fecha = date('Y-m-d H:i:s');
  47. /*$user = JFactory::getUser();
  48. if ($user->id){
  49. $reg->id_usuario = $user->id;
  50. }*/
  51. }
  52. $reg->cantidad += (int)$cantidad;
  53. $reg->save();
  54. }
  55. return $this->mostrarTotalesModulo();
  56. }
  57. public function actualizarItem(){
  58. $id = myApp::getRequest()->getVar("id");
  59. $item = Carrito::where("id_sesion", $this->obtenerIdSesion())->where("id", $id)->first();
  60. if (sizeof($item)){
  61. $item->cantidad = (int)myApp::getRequest()->getVar("cantidad");
  62. $item->save();
  63. Carrito::where("id_sesion", $this->idSesion)->where("cantidad", "<=", 0)->delete();
  64. }
  65. //return $this->listarCarrito();
  66. return "";
  67. }
  68. public function quitarItem(){
  69. $id = myApp::getRequest()->getVar("id");
  70. Carrito::where("id_sesion", $this->obtenerIdSesion())->where("id", $id)->delete();
  71. //return $this->listarCarrito();
  72. return "";
  73. }
  74. public function mostrarTotalesModulo(){
  75. $doc = myApp::getDocumento();
  76. $doc->addScript(myApp::getUrlRoot()."myCore/js/catalogo.js");
  77. $idSesion = $this->obtenerIdSesion();
  78. $carrito = Carrito::where("id_sesion", $idSesion)->with(["extension.producto.imagenes", "extension.talla", "extension.color"])->get();
  79. $totales = Carrito::totales($idSesion);
  80. $myCfg = new myConfig();
  81. return myView::render("carrito.modulo", ["urlImg" => myApp::urlImg(), "carrito" => $carrito, "totales" => $totales, "envio" => $myCfg->gastosEnvio]);
  82. }
  83. public function enviarPedido(){
  84. $db = myApp::getEloquent();
  85. $pdo = $db::connection()->getPdo();
  86. $pdo->beginTransaction();
  87. $cfg = new myConfig();
  88. $iva = $cfg->porcIva;
  89. try
  90. {
  91. $idSesion = $this->obtenerIdSesion();
  92. $carrito = Carrito::where("id_sesion", $idSesion)->with(["extension.producto"])->get();
  93. $totales = Carrito::totales($idSesion);
  94. if (!sizeof($carrito)){
  95. throw new \Exception('No hay productos en su carrito');
  96. }
  97. $usuario = myApp::obtenerUsuario();
  98. $pedido = new Pedido();
  99. $pedido->id_user = $usuario->ID;
  100. $pedido->direccion = "";
  101. $pedido->num_items = (int)$totales["cantidad_total"];
  102. $pedido->cargo_envio = 0;
  103. $pedido->valor_items = (float)$totales["pesos_total"];
  104. $pedido->valor_total = (float)$totales["pesos_total"];
  105. $pedido->porc_iva = (float)$iva;
  106. $pedido->valor_iva = 0;
  107. $pedido->fecha = date('Y-m-d H:i:s');
  108. $pedido->estado = 'N';
  109. $pedido->cod_trans = '';
  110. if ($pedido->save()){
  111. foreach ($carrito as $c){
  112. $detalle = new DetallePedido();
  113. $detalle->id_pedido = $pedido->id;
  114. $detalle->id_referencia = $c->extension->producto->id;
  115. $detalle->id_ext = $c->extension->id;
  116. $detalle->cantidad = $c->cantidad;
  117. $detalle->valor = $c->extension->producto->valor_base * $c->cantidad;
  118. $detalle->porc_iva = $iva;
  119. $detalle->valor_iva = $detalle->valor - ($detalle->valor / (1 + $iva / 100));
  120. if (!$detalle->save()){
  121. throw new \Exception('No se pudo guardar el detalle de la cotizacion');
  122. //myApp::redirect("index.php", "No se pudo guardar el detalle del pedido");
  123. }
  124. }
  125. $carrito = Carrito::where("id_sesion", $idSesion)->delete();
  126. $pdo->commit();
  127. mySession::clear("pedido");
  128. $mensaje = $this->generarCorreo($pedido->id);
  129. //myApp::enviarCorreo(["desarrollo@encubo.ws", $usuario->user_email], "Cotización nueva - Mezanine", $mensaje);
  130. myApp::enviarCorreo([$usuario->user_email], "Cotización nueva - Mezanine", $mensaje);
  131. myApp::enviarCorreo(["ventas@mezanine.com.co"], "Cotización nueva - Mezanine", $mensaje);
  132. }
  133. else{
  134. throw new \Exception('No se pudo crear la cotizacion');
  135. //myApp::redirect("index.php", "No se crear el pedido");
  136. }
  137. }catch(Exception $e){
  138. $pdo->rollback();
  139. throw $e;
  140. //myApp::redirect("index.php", "No se pudo realizar el pedido");
  141. }
  142. }
  143. public function generarCorreo($idPedido=""){
  144. if (empty($idPedido)){
  145. $idPedido = myApp::getRequest()->getVar("id");
  146. }
  147. $usuario = myApp::obtenerUsuario();
  148. $pedido = Pedido::where("id", $idPedido)->with(["detalle.extension.producto", "detalle.extension.talla", "detalle.extension.color"])->first();
  149. return myView::render("carrito.correo_pedido", ["pedido" => $pedido, "url" => myApp::getUrlRoot(), "asunto" => "Pedido nuevo - Mezanine", "usuario" => $usuario]);
  150. }
  151. public function usuario(){
  152. $usuario = myApp::obtenerUsuario();
  153. print_r($usuario);
  154. }
  155. }