EVOLUTION-MANAGER
Edit File: AdminServiciosController.php
<?php namespace App\Http\Controllers\Admin; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Storage; use App\ServicioModel; use App\ParroquiaModel; use App\ServicioImagenModel; use App\ServicioOfreceModel; use App\TipoServicioModel; use App\CatListaModel; use App\CatTituloModel; use App\CatTitulo1Model; use App\ServicioListaModel; use App\ServicioTitulo1Model; use DB; use Log; class AdminServiciosController extends Controller { // FUNCIONES PARA AMINISTRAR LOS SERVICIO public function servicios_index(){ try { $parroquias = ParroquiaModel::all(); $tipo_servicios = TipoServicioModel::all(); return view("admin.servicios.servicios_index", compact("parroquias", "tipo_servicios")); } catch (\Throwable $th) { // dd($th->getMessage()); Log::error(__CLASS__." => ".__FUNCTION__." => Mensaje => ".$th->getMessage()." => en la linea:".$th->getLine()); return abort(500); } } public function servicios_listado(){ try { $listado = ServicioModel::with("parroquia", "tipo_servicio")->get(); return response()->json([ "status"=> 200, "response" => $listado, "msg_text" => "Información", "msg_color" => "success" ]); } catch (\Throwable $th) { // dd($th->getMessage()); Log::error(__CLASS__." => ".__FUNCTION__." => Mensaje => ".$th->getMessage()." => en la linea:".$th->getLine()); return response()->json([ "status"=> 500, "msg_text" => "Error interdo del servidor", "msg_color" => "error" ]); } } public function servicios_guardar(Request $request){ try { DB::beginTransaction(); // dd($request->request); #creamos la url de la pagina $codigo_url = $request->nombre; $codigo_url = str_replace("<b>", "", $codigo_url); $codigo_url = str_replace("</b>", "", $codigo_url); $codigo_url = str_replace(" ", "-", $codigo_url); $codigo_url = preg_replace("/[^A-Za-z\-]/", "", $codigo_url); $codigo_url = strtolower($codigo_url); for ($i=0; $i < 5; $i++) { $codigo_url = str_replace("--", "-", $codigo_url); } $codigo_url = substr($codigo_url, 0, 80); //maximo 80 de largo #si se usa el celuar para whatsapp $celular_what = 0; if(isset($request->celular_what)){ $celular_what = 1; } if(empty($request->servicio_id_edit)){ //se esta creando uno nuevo $servicio = new ServicioModel(); }else{ //se esta editando $servio_id = decrypt($request->servicio_id_edit); $servicio = ServicioModel::where("id", $servio_id)->first(); } $servicio->parroquia_id = $request->parroquia; $servicio->tipo_servicio_id = $request->tipo_servicio; $servicio->nombre = $request->nombre; $servicio->direccion = $request->direccion; $servicio->correo = $request->correo; $servicio->telefono = $request->telefono; $servicio->celular = $request->celular; $servicio->celular_what = $celular_what; $servicio->costo = $request->costo; $servicio->responsable = $request->responsable; $servicio->horario = $request->horario ; $servicio->latitud = $request->latitud; $servicio->longitud = $request->longitud; $servicio->url_web = $request->url_web; $servicio->url_fb = $request->url_fb; $servicio->url_in = $request->url_in; $servicio->url_x = $request->url_x; $servicio->url_yt = $request->url_yt; $servicio->codigo_url = $codigo_url; $servicio->save(); #VALIDAMOS EL TIPO DE TIPO DE SERVICIO $tipo_servicio = TipoServicioModel::find($request->tipo_servicio); if($tipo_servicio->tipo==0){ //servicio tradicional #GUARDAMOS LO QUE OFRECE if(isset($request->ofrece_nombre)){ foreach ($request->ofrece_nombre as $on => $ofrece_nombre) { $servicio_ofrece = new ServicioOfreceModel(); $servicio_ofrece->icono = $request->ofrece_icono[$on]; $servicio_ofrece->nombre = $ofrece_nombre; $servicio_ofrece->servicio_id = $servicio->id; $servicio_ofrece->save(); } } #SI SE ESTA EDITANDO - VERIFICAMOS SI EXISTEN OFRECE POR ELIMINAR if(isset($request->ofrece_del)){ foreach ($request->ofrece_del as $od => $ofrece_del) { $servicio_ofrece_id_del = decrypt($ofrece_del); $servicio_ofrece = ServicioOfreceModel::where("id", $servicio_ofrece_id_del)->first(); $servicio_ofrece->delete(); } } }else{ #la nueva version (de solo seleccionar) $servicio->texto = $request->texto; $servicio->save(); #REGISTRAMOS LOS NUEVOS TITULO1 if(isset($request->cat_titulo1)){ foreach ($request->cat_titulo1 as $key => $id_cat_titulo1){ $cat_titulo1_id = decrypt($id_cat_titulo1); $servicio_titulo1 = ServicioTitulo1Model::where("cat_titulo1_id", $cat_titulo1_id)->where("servicio_id", $servicio->id)->first(); if(empty($servicio_titulo1)){ //solo si no esta registrado $servicio_titulo1 = new ServicioTitulo1Model(); $servicio_titulo1->cat_titulo1_id = $cat_titulo1_id; $servicio_titulo1->servicio_id = $servicio->id; $servicio_titulo1->save(); } } } #REGISTRAMOS LAS NUEVAS LISTAS if(isset($request->cat_lista)){ foreach ($request->cat_lista as $key => $id_cat_lista) { $cat_lista_id = decrypt($id_cat_lista); $servicio_lista = ServicioListaModel::where("cat_lista_id", $cat_lista_id)->where("servicio_id", $servicio->id)->first(); if(empty($servicio_lista)){ //solo si no esta registrado $servicio_lista = new ServicioListaModel(); $servicio_lista->cat_lista_id = $cat_lista_id; $servicio_lista->servicio_id = $servicio->id; $servicio_lista->save(); } } } #SI SE ESTA EDITANDO - VALIDAMOS SI HAY TITULOS Y LISTAS QUE BORRAR if(isset($request->cat_titulo1_del)){ foreach ($request->cat_titulo1_del as $key => $cat_titulo1_del_id) { $cat_titulo1_del_id = decrypt($cat_titulo1_del_id); $servicio_titulo1_del = ServicioTitulo1Model::where("cat_titulo1_id", $cat_titulo1_del_id)->where("servicio_id", $servicio->id)->first(); if(!empty($servicio_titulo1_del)){ $servicio_titulo1_del->delete(); } } } if(isset($request->cat_lista_del)){ foreach ($request->cat_lista_del as $key => $cat_lista_del_id) { $cat_lista_del_id = decrypt($cat_lista_del_id); $servicio_lista_del = ServicioListaModel::where("cat_lista_id", $cat_lista_del_id)->where("servicio_id", $servicio->id)->first(); if(!empty($servicio_lista_del)){ $servicio_lista_del->delete(); } } } } #GUARDAMOS LAS IMAGENES NUEVAS INGRESADAS $lista_imagen = $request->file("servicio_imagen"); if(!empty($lista_imagen)){ foreach ($lista_imagen as $key => $imagen){ $extension = pathinfo($imagen->getClientOriginalName(), PATHINFO_EXTENSION); $ruta_imagen = "imagenes/servicios/".$servicio->id."/servicio-".date('Y-m-d').time()."-".text_random(8).".$extension"; Storage::disk("diskPublic")->put($ruta_imagen, file_get_contents($imagen)); $existe = Storage::disk("diskPublic")->exists($ruta_imagen); if($existe){ $imagen_detalle = ""; if(isset($request->imagen_detalle)){ $imagen_detalle = $request->imagen_detalle[$key]; } $servicio_imagen = new ServicioImagenModel(); $servicio_imagen->ruta = $ruta_imagen; $servicio_imagen->detalle = $imagen_detalle; $servicio_imagen->nombre = $servicio->codigo_url; $servicio_imagen->servicio_id = $servicio->id; $servicio_imagen->save(); } } } #SI SE ESTA EDITANDO -- VERIFICANOS SI EXISTEN IMAGENES POR ELIMINAR if(isset($request->servicio_imagen_del)){ foreach ($request->servicio_imagen_del as $key => $imagen_del) { $imagen_del_id = decrypt($imagen_del); $servicio_imagen = ServicioImagenModel::where("id", $imagen_del_id)->first(); $existe = Storage::disk("diskPublic")->exists($servicio_imagen->ruta); if($existe){ Storage::disk("diskPublic")->delete($servicio_imagen->ruta); } $servicio_imagen->delete(); } } DB::commit(); return response()->json([ "status"=> 200, "msg_text" => "Registro guardado correctamente", "msg_color" => "success" ]); } catch (\Throwable $th) { // dd(__CLASS__." => ".__FUNCTION__." => Mensaje => ".$th->getMessage()." => en la linea:".$th->getLine()); DB::rollback(); Log::error(__CLASS__." => ".__FUNCTION__." => Mensaje => ".$th->getMessage()." => en la linea:".$th->getLine()); return response()->json([ "status"=> 500, "msg_text" => "Error interdo del servidor", "msg_color" => "error" ]); } } public function servicios_editar($id){ try { $id = decrypt($id); $servicio = ServicioModel::with("parroquia", "tipo_servicio", "servicio_imagen", "servicio_ofrece")->where("id",$id)->first(); ############# Si el servicio funciona con el nuevo formato ############## $array_titulo1 = []; $array_lista = []; $cat_titulo1 = []; $cat_titulo = []; if($servicio->tipo_servicio->tipo > 0){ $servicio_titulo1 = ServicioTitulo1Model::where("servicio_id", $id)->pluck("cat_titulo1_id")->toArray(); $array_titulo1 = array_fill_keys($servicio_titulo1, true); $servicio_lista = ServicioListaModel::where("servicio_id", $id)->pluck("cat_lista_id")->toArray(); $array_lista = array_fill_keys($servicio_lista, true); //retornamos el catalogo $cat_titulo1 = CatTitulo1Model::where("tipo", $servicio->tipo_servicio->tipo)->get(); $cat_titulo = CatTituloModel::with("cat_lista")->where("tipo", $servicio->tipo_servicio->tipo)->get(); } $servicio->array_titulo1 = $array_titulo1; $servicio->array_lista = $array_lista; ########################################################################### return response()->json([ "status"=> 200, "response" => $servicio, "cat_titulo1" => $cat_titulo1, "cat_titulo" => $cat_titulo, "msg_text" => "Información", "msg_color" => "success" ]); } catch (\Throwable $th) { dd($th->getMessage()); Log::error(__CLASS__." => ".__FUNCTION__." => Mensaje => ".$th->getMessage()." => en la linea:".$th->getLine()); return response()->json([ "status"=> 500, "msg_text" => "Error interdo del servidor", "msg_color" => "danger" ]); } } public function servicios_eliminar($id){ try { DB::beginTransaction(); $id = decrypt($id); $servicio = ServicioModel::with("parroquia", "tipo_servicio", "servicio_imagen", "servicio_ofrece", "servicio_titulo1", "servicio_lista") ->where("id",$id) ->first(); //ELIMINAMOS TODOS LOS OFRECE ServicioOfreceModel::where("servicio_id", $servicio->id)->delete(); //ELIMINAMOS LAS IMAGENES foreach ($servicio->servicio_imagen as $key => $servicio_imagen) { //eliminamos las imagenes locales $existe = Storage::disk("diskPublic")->exists($servicio_imagen->ruta); if($existe){ Storage::disk("diskPublic")->delete($servicio_imagen->ruta); } $servicio_imagen->delete(); } //ELIMINAMOS OFRECE (NUEVA VERSION PENSADA PARA HOTELERIA) if($servicio->tipo_servicio->tipo > 0){ ServicioTitulo1Model::where("servicio_id", $servicio->id)->delete(); ServicioListaModel::where("servicio_id", $servicio->id)->delete(); } //ELIMINAMOS EL DIRECTORIO DEL SERVICIO $existe = Storage::disk("diskPublic")->exists("imagenes/servicios/".$servicio->id); if($existe){ Storage::disk("diskPublic")->deleteDirectory("imagenes/servicios/".$servicio->id); } $servicio->delete(); DB::commit(); return response()->json([ "status"=> 200, "response" => [], "msg_text" => "Registro eliminado correctamente", "msg_color" => "success" ]); } catch (\Throwable $th) { DB::rollback(); // dd(__CLASS__." => ".__FUNCTION__." => Mensaje => ".$th->getMessage()." => en la linea:".$th->getLine()); Log::error(__CLASS__." => ".__FUNCTION__." => Mensaje => ".$th->getMessage()." => en la linea:".$th->getLine()); return response()->json([ "status"=> 500, "msg_text" => "Error interdo del servidor", "msg_color" => "error" ]); } } public function verificar_tipo_servicio($id_tipo_servicio){ try { $tipo_servicio = TipoServicioModel::find($id_tipo_servicio); $cat_titulo1 = null; $cat_titulo = null; if($tipo_servicio->tipo != 0){ $cat_titulo1 = CatTitulo1Model::where("tipo", $tipo_servicio->tipo)->get(); $cat_titulo = CatTituloModel::with("cat_lista")->where("tipo", $tipo_servicio->tipo)->get(); } return response()->json([ "status"=> 200, "cat_titulo1"=>$cat_titulo1, "cat_titulo"=>$cat_titulo, "msg_text" => "Correcto", "msg_color" => "success" ]); } catch (\Throwable $th) { Log::error(__CLASS__." => ".__FUNCTION__." => Mensaje => ".$th->getMessage()." => en la linea: ".$th->getLine()); return response()->json([ "status"=> 500, "msg_text" => "Error interdo del servidor", "msg_color" => "danger" ]); } } public function cat_lista_guardar(Request $request){ try { // dd($request->request); $cat_titulo_id = decrypt($request->cat_titulo_id); $nombre = $request->nombre; $cat_lista = new CatListaModel(); $cat_lista->nombre = $nombre; $cat_lista->cat_titulo_id = $cat_titulo_id; $cat_lista->save(); return response()->json([ "status"=> 200, "response" => $cat_lista, "msg_text" => "Registro creado correctamente", "msg_color" => "success" ]); } catch (\Throwable $th) { dd($th->getMessage()); Log::error(__CLASS__." => ".__FUNCTION__." => Mensaje => ".$th->getMessage()." => en la linea: ".$th->getLine()); return response()->json([ "status"=> 500, "msg_text" => "Error interdo del servidor", "msg_color" => "error" ]); } } }