<?php

use App\Http\Controllers\ProductosPromocionalesController;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\ApmController;
use App\Http\Controllers\ParrillasController;
use App\Http\Controllers\GerenteProductoController;
use App\Http\Controllers\GerenteLineaController;
use App\Http\Controllers\GerenteMercadeoController;
use App\Http\Controllers\AsignacionTerritorioController;
use App\Http\Controllers\DistribucionFicheroController;
use App\Http\Controllers\FichaSocioController;
use App\Http\Controllers\SociosController;
use App\Http\Controllers\PreciosController;
use App\Http\Controllers\CombosController;
use App\Http\Controllers\ProductosController;
use App\Http\Controllers\BonificacionController;
use App\Http\Controllers\EspecialidadController;
use App\Http\Controllers\ProductoLaboratorioController;
use App\Http\Controllers\ProductoGrupoTerapeuticoController;
use App\Http\Controllers\ProductoLineaController;
use App\Http\Controllers\ProductoMarcaController;
use App\Http\Controllers\PaisesController;
use App\Http\Controllers\DepartamentosController;
use App\Http\Controllers\MunicipiosController;
use App\Http\Controllers\ZonasController;
use App\Http\Controllers\CodigoPostalController;
use App\Http\Controllers\RegionController;
use App\Http\Controllers\GiraController;
use App\Http\Controllers\LineaController;
use App\Http\Controllers\CategoriaController;
use App\Http\Controllers\ClasificacionController;
use App\Http\Controllers\MailController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/



Route::middleware('auth')->group(function () {
    Route::get('/', function () {
        return view('layouts.index');
    });

    Route::get('/prueba', [ApmController::class, 'prueba'])->name('admin.prueba');

    Route::prefix('gerente_mercadeo')->group(function () {
        Route::get('listado_parrillas', [ParrillasController::class, 'index'])->name('marketing.parrillas');
        Route::get('nueva_parrilla', [ParrillasController::class, 'create'])->name('marketing.create_parrilla');
        Route::post('guardar_parrilla', [ParrillasController::class, 'store'])->name('marketing.guardar_parrilla');
        Route::get('ver_parrilla/{id}', [ParrillasController::class, 'show'])->name('marketing.ver_parrilla');
        Route::get('duplicar_parrilla/{id}', [ParrillasController::class, 'duplicar'])->name('marketing.duplicar_parrilla');

        Route::middleware('auth')->group(function () {
            Route::get('guardar_planificacion_supervision', [GerenteProductoController::class, 'index'])->name('marketing.planificacion_supervision');
            Route::get('nueva_producto_gerente', [GerenteProductoController::class, 'create'])->name('marketing.create_gerente_producto');
            Route::post('guardar_planificacion_supervision', [GerenteProductoController::class, 'store'])->name('marketing.guardar_planificacion_supervision');
        });
    });
});

Route::prefix('dashboard')->group(function () {
    Route::get('gerente_linea', [GerenteLineaController::class, 'index'])->name('dashboard.gerente_linea');
    Route::get('gerente_mercadeo', [GerenteMercadeoController::class, 'index'])->name('dashboard.gerente_mercadeo');
    //reportes
    Route::get('reportes', [GerenteMercadeoController::class, 'reportesDashboard'])->name('dashboard.reportes');
    Route::get('pedidos', [FichaSocioController::class, 'pedidosSocios'])->name('dashboard.pedidos');
});

Route::get('lista', [SociosController::class, 'index'])->name('socios.index');

Route::prefix('gerente_linea')->group(function () {
    Route::prefix('territorio')->group(function () {
        Route::get('lista', [AsignacionTerritorioController::class, 'index'])->name('territorio.index');
        Route::get('nueva', [AsignacionTerritorioController::class, 'create'])->name('territorio.crear');
        Route::post('guardar', [AsignacionTerritorioController::class, 'store'])->name('territorio.guardar');
        Route::get('editar/{id}', [AsignacionTerritorioController::class, 'edit'])->name('territorio.editar');
        Route::post('actualizar/{territorio}', [AsignacionTerritorioController::class, 'update'])->name('territorio.actualizar');
        Route::get('eliminar/{id}', [AsignacionTerritorioController::class, 'destroy'])->name('territorio.eliminar');
    });

    Route::prefix('fichero')->group(function () {
        Route::get('lista', [DistribucionFicheroController::class, 'index'])->name('fichero.index');
        Route::post('nueva', [DistribucionFicheroController::class, 'create'])->name('fichero.crear');
        Route::post('guardar', [DistribucionFicheroController::class, 'store'])->name('fichero.guardar');
        Route::get('buscar', [DistribucionFicheroController::class, 'buscar'])->name('fichero.buscar');
        Route::get('editar/{fichero}', [DistribucionFicheroController::class, 'edit'])->name('fichero.editar');
        Route::post('actualizar/{ficheroInfo}', [DistribucionFicheroController::class, 'update'])->name('fichero.actualizar');
        Route::get('eliminar/{id}', [DistribucionFicheroController::class, 'destroy'])->name('fichero.eliminar');
    });
});

Route::prefix('apm')->group(function () {
    Route::get('calendario', [ApmController::class, 'calendario'])->name('apm.calendario')->middleware('auth');
    Route::post('status', [ApmController::class, 'status'])->name('apm.status');
    Route::get('planificador', [ApmController::class, 'planificador'])->name('apm.planificador')->middleware('auth');
    Route::post('actualizar-socio-planificador', [ApmController::class,'planificadorActualizarSocio'])->name('apm.planificador_actualizar')->middleware('auth');
    Route::post('guardar-socio-planificador', [ApmController::class, 'planificadorGuardarSocio'])->name('apm.planificador_guardar')->middleware('auth');
    Route::get('listado_socios', [ApmController::class, 'listadoSocios'])->name('apm.listado_socios');

    Route::prefix('socio')->group(function () {
        Route::get('ficha/{idSocio}/{idDistribucion}',[FichaSocioController::class,'index'])->name('socio.ficha');
        Route::get('ficha_pedido/{idSocio}', [FichaSocioController::class, 'index_pedido'])->name('socio.ficha_pedido');

        Route::post('correo/pedido', [MailController::class, 'enviarCorreo'])->name('mail.pedido');


        Route::post('ficha/nueva_cita', [FichaSocioController::class, 'nuevaCita'])->name('socio.nueva_cita');
        Route::post('ficha/terminar_visita', [FichaSocioController::class, 'terminarVisita'])->name('socio.terminar_visita');
        Route::post('ficha/actualizar_parrilla', [FichaSocioController::class, 'actualizarParrilla'])->name('socio.actualizar_parrilla');
        Route::post('ficha/guardar_pedido', [FichaSocioController::class, 'guardarPedido'])->name('socio.guardar_pedido');
        Route::post('ficha/mostrar_pedido', [FichaSocioController::class, 'mostrarPedido'])->name('socio.mostrar_pedido');
        Route::post('ficha/guardar_pedido_combo', [FichaSocioController::class, 'guardarPedidoCombo'])->name('socio.guardar_pedido_combo');
        Route::post('ficha/guardar_comentario', [FichaSocioController::class, 'guardarComentario'])->name('socio.guardar_comentario');
        Route::post('ficha/guardar_eva', [FichaSocioController::class, 'guardarEVA'])->name('socio.guardar_eva');
        Route::post('ficha/mostrar_pedidoEVA', [FichaSocioController::class, 'mostrarPedidoEVA'])->name('socio.mostrar_pedidoEVA');

        Route::post('ficha/consulta_factura', [FichaSocioController::class, 'consultarFactura'])->name('socio.consulta_factura');
        Route::post('ficha/consulta_producto', [FichaSocioController::class, 'facturasCliente'])->name('socio.consulta_producto');
        Route::post('ficha/productos_facturas', [FichaSocioController::class, 'productosFacturas'])->name('socio.productos_facturas');

        Route::get('nuevo', [SociosController::class, 'createSocioApm'])->name('socios.crear_por_apm');
        Route::post('guardar_socio', [SociosController::class, 'storeSocioApm'])->name('socios.guardar_por_apm');
    });
});

Route::group(['prefix' => 'admin'], function () {

    Route::group(['prefix' => 'socio'], function () {
        Route::get('nuevo', [SociosController::class, 'create'])->name('socios.crear');
        Route::post('guardar', [SociosController::class, 'store'])->name('socios.guardar');
        Route::get('codigo_area', [SociosController::class, 'codigosArea'])->name('socios.codigos_area');
        Route::get('editar/{id}', [SociosController::class, 'edit'])->name('socios.editar');
        Route::get('aprobacion/{id}', [SociosController::class, 'editAprobacion'])->name('socios.verificar_socio');
        Route::post('guardar_aprobacion_socio/{idBorrador}', [SociosController::class, 'nuevaAprobacion'])->name('socios.guardar_aprobacion');
        Route::get('eliminar_aprobacion/{socio}', [SociosController::class, 'destroyAprobacion'])->name('socios.eliminar_aprobacion');
        Route::post('actualizar/{socio}', [SociosController::class, 'update'])->name('socios.actualizar');
        Route::get('eliminar/{socio}', [SociosController::class, 'destroy'])->name('socios.eliminar');
    });

    Route::get('aprobaciones', [SociosController::class, 'sociosInactivos'])->name('socio.aprobaciones');

    // Material Promocional
    Route::get('material_promocional', [ProductosPromocionalesController::class, 'index'])->name('marketing.productos_promocionales');
    Route::get('nuevo_material_promocional', [ProductosPromocionalesController::class, 'create'])->name('marketing.crear');
    Route::post('nuevo_material_promocional/guardar', [ProductosPromocionalesController::class, 'store'])->name('marketing.guardar_promocional');
    Route::get('eliminar_material_promocional/{id}', [ProductosPromocionalesController::class, 'destroy'])->name('productos.eliminar_material_promocional');
    Route::get('editar_material_promocional/{object}', [ProductosPromocionalesController::class, 'edit'])->name('productos.editar_material_promocional');
    Route::put('actualizar_material_promocional/{object}', [ProductosPromocionalesController::class, 'update'])->name('productos.actualizar_material_promocional');

    Route::get('precios', [PreciosController::class, 'index'])->name('marketing.precios');
    Route::get('nuevo_listado_precio', [PreciosController::class, 'create'])->name('marketing.create_precio');
    Route::get('editar_listado_precio/{lista_precios}', [PreciosController::class, 'edit'])->name('marketing.editar_precio');
    Route::post('actualizar_listado_precio/{object}', [PreciosController::class, 'update'])->name('marketing.actualizar_precio');
    Route::get('eliminar_listado_precio/{lista_precios}', [PreciosController::class, 'destroy'])->name('marketing.eliminar_precio');
    Route::post('guardar_lista', [PreciosController::class, 'store'])->name('marketing.guardar_lista');

    Route::get('listado_combos', [CombosController::class, 'index'])
        ->name('marketing.combos')
        ->middleware('auth');

    Route::get('nuevo_combo', [CombosController::class, 'create'])
        ->name('marketing.create_combo')
        ->middleware('auth');

    Route::post('guardar_combo', [CombosController::class, 'store'])
        ->name('marketing.guardar_combo')
        ->middleware('auth');

    Route::get('eliminar_combo/{id}', [CombosController::class, 'destroy'])
        ->name('marketing.eliminar_combo');

    Route::get('editar_combo/{id}', [CombosController::class, 'edit'])
        ->name('marketing.editar_combo');

    Route::post('actualizar_combo/{combo}', [CombosController::class, 'update'])
        ->name('marketing.actualizar_combo');

    Route::group(['prefix' => 'productos'], function () {
        Route::get('listado', [ProductosController::class, 'index'])->name('productos.listado');
        Route::get('nuevo', [ProductosController::class, 'create'])->name('productos.nuevo');
        Route::post('guardar', [ProductosController::class, 'store'])->name('productos.guardar');
        Route::get('listado_precios', [ProductosController::class, 'listadoPrecios'])->name('productos.listado_ajax');
        Route::get('eliminar/{id}', [ProductosController::class, 'destroy'])->name('productos.eliminar');
        Route::get('editar/{producto}', [ProductosController::class, 'edit'])->name('productos.editar');
        Route::post('actualizar/{producto}', [ProductosController::class, 'update'])->name('productos.actualizar');
        //Bonificacion
        Route::get('bonificaciones', [BonificacionController::class, 'index'])->name('bonificacion.index');
        Route::get('nueva_bonificacion', [BonificacionController::class, 'create'])->name('bonificacion.nuevo');
        Route::post('guardar_bonificacion', [BonificacionController::class, 'store'])->name('bonificacion.guardar');
        Route::get('eliminar_bonificacion/{id}', [BonificacionController::class, 'destroy'])->name('bonificacion.eliminar');
        Route::get('editar_bonificacion/{object}', [BonificacionController::class, 'edit'])->name('bonificacion.editar');
        Route::put('actualizar_bonificacion/{object}', [BonificacionController::class, 'update'])->name('bonificacion.actualizar');
        //Especialidad
        Route::get('especialidad', [EspecialidadController::class, 'index'])->name('especialidad.index');
        Route::get('nueva_especialidad', [EspecialidadController::class, 'create'])->name('especialidad.nuevo');
        Route::post('guardar_especialidad', [EspecialidadController::class, 'store'])->name('especialidad.guardar');
        Route::get('eliminar_especialidad/{id}', [EspecialidadController::class, 'destroy'])->name('especialidad.eliminar');
        Route::get('editar_especialidad/{object}', [EspecialidadController::class, 'edit'])->name('especialidad.editar');
        Route::put('actualizar_especialidad/{object}', [EspecialidadController::class, 'update'])->name('especialidad.actualizar');
        //Laboratorio
        Route::get('listado_laboratorios', [ProductoLaboratorioController::class, 'index'])->name('productos.laboratorios');
        Route::get('nuevo_laboratorio', [ProductoLaboratorioController::class, 'create'])->name('productos.nuevo_laboratorio');
        Route::post('guardar_laboratorio', [ProductoLaboratorioController::class, 'store'])->name('productos.guardar_laboratorio');
        Route::get('eliminar_laboratorio/{id}', [ProductoLaboratorioController::class, 'destroy'])->name('productos.eliminar_laboratorio');
        Route::get('editar_laboratorio/{object}', [ProductoLaboratorioController::class, 'edit'])->name('productos.editar_laboratorio');
        Route::put('actualizar_laboratorio/{object}', [ProductoLaboratorioController::class, 'update'])->name('productos.actualizar_laboratorio');
        //Grupo Terapeutico
        Route::get('listado_grupo_terapeutico', [ProductoGrupoTerapeuticoController::class, 'index'])->name('productos.grupo_terapeutico');
        Route::get('nuevo_grupo_terapeutico', [ProductoGrupoTerapeuticoController::class, 'create'])->name('productos.nuevo_grupo_terapeutico');
        Route::post('guardar_grupo_terapeutico', [ProductoGrupoTerapeuticoController::class, 'store'])->name('productos.guardar_grupo_terapeutico');
        Route::get('eliminar_grupo_terapeutico/{id}', [ProductoGrupoTerapeuticoController::class, 'destroy'])->name('productos.eliminar_grupo_terapeutico');
        Route::get('editar_grupo_terapeutico/{object}', [ProductoGrupoTerapeuticoController::class, 'edit'])->name('productos.editar_grupo_terapeutico');
        Route::put('actualizar_grupo_terapeutico/{object}', [ProductoGrupoTerapeuticoController::class, 'update'])->name('productos.actualizar_grupo_terapeutico');
        //Lineas
        Route::get('listado_lineas', [ProductoLineaController::class, 'index'])->name('productos.lineas');
        Route::get('nuevo_linea', [ProductoLineaController::class, 'create'])->name('productos.nuevo_linea');
        Route::post('guardar_linea', [ProductoLineaController::class, 'store'])->name('productos.guardar_linea');
        Route::get('eliminar_linea/{id}', [ProductoLineaController::class, 'destroy'])->name('productos.eliminar_linea');
        Route::get('editar_linea/{linea}', [ProductoLineaController::class, 'edit'])->name('productos.editar_linea');
        Route::put('actualizar_linea/{linea}', [ProductoLineaController::class, 'update'])->name('productos.actualizar_linea');
        //Listado marcas
        Route::get('listado_marcas', [ProductoMarcaController::class, 'index'])->name('productos.marcas');
        Route::get('nuevo_marca', [ProductoMarcaController::class, 'create'])->name('productos.nuevo_marca');
        Route::post('guardar_marca', [ProductoMarcaController::class, 'store'])->name('productos.guardar_marca');
        Route::get('eliminar_marca/{id}', [ProductoMarcaController::class, 'destroy'])->name('productos.eliminar_marca');
        Route::get('editar_marca/{object}', [ProductoMarcaController::class, 'edit'])->name('productos.editar_marca');
        Route::put('actualizar_marca/{object}', [ProductoMarcaController::class, 'update'])->name('productos.actualizar_marca');
    });

    Route::group(['prefix' => 'pais'], function () {
        Route::get('lista', [PaisesController::class, 'index'])->name('pais.index');
        Route::get('nuevo', [PaisesController::class, 'create'])->name('pais.crear');
        Route::post('guardar', [PaisesController::class, 'store'])->name('pais.guardar');
        Route::get('editar/{pais}', [PaisesController::class, 'edit'])->name('pais.editar');
        Route::post('actualizar/{pais}', [PaisesController::class, 'update'])->name('pais.actualizar');
        Route::get('eliminar/{pais}', [PaisesController::class, 'destroy'])->name('pais.eliminar');
    });

    Route::group(['prefix' => 'departamento'], function () {
        Route::get('lista', [DepartamentosController::class, 'index'])->name('departamento.index');
        Route::get('nuevo', [DepartamentosController::class, 'create'])->name('departamento.crear');
        Route::post('guardar', [DepartamentosController::class, 'store'])->name('departamento.guardar');
        Route::get('editar/{departamento}', [DepartamentosController::class, 'edit'])->name('departamento.editar');
        Route::post('actualizar/{departamento}', [DepartamentosController::class, 'update'])->name('departamento.actualizar');
        Route::get('eliminar/{departamento}', [DepartamentosController::class, 'destroy'])->name('departamento.eliminar');
    });

    Route::group(['prefix' => 'municipio'], function () {
        Route::get('lista', [MunicipiosController::class, 'index'])->name('municipio.index');
        Route::get('nuevo', [MunicipiosController::class, 'create'])->name('municipio.crear');
        Route::post('guardar', [MunicipiosController::class, 'store'])->name('municipio.guardar');
        Route::get('editar/{municipio}', [MunicipiosController::class, 'edit'])->name('municipio.editar');
        Route::post('actualizar/{municipio}', [MunicipiosController::class, 'update'])->name('municipio.actualizar');
        Route::get('eliminar/{id}', [MunicipiosController::class, 'destroy'])->name('municipio.eliminar');
        Route::post('buscarMunicipio', [MunicipiosController::class, 'BuscarMunicipio'])->name('buscar.municipio');
    });

    Route::group(['prefix' => 'zona'], function () {
        Route::get('lista', [ZonasController::class, 'index'])->name('zona.index');
        Route::get('nueva', [ZonasController::class, 'create'])->name('zona.crear');
        Route::post('guardar', [ZonasController::class, 'store'])->name('zona.guardar');
        Route::get('editar/{zona}', [ZonasController::class, 'edit'])->name('zona.editar');
        Route::post('actualizar/{zona}', [ZonasController::class, 'update'])->name('zona.actualizar');
        Route::get('eliminar/{id}', [ZonasController::class, 'destroy'])->name('zona.eliminar');
    });

    Route::group(['prefix' => 'codigo_postal'], function () {
        Route::get('lista', [CodigoPostalController::class, 'index'])->name('codigo.index');
        Route::get('nueva', [CodigoPostalController::class, 'create'])->name('codigo.crear');
        Route::post('guardar', [CodigoPostalController::class, 'store'])->name('codigo.guardar');
        Route::get('editar/{codigo}', [CodigoPostalController::class, 'edit'])->name('codigo.editar');
        Route::post('actualizar/{codigo}', [CodigoPostalController::class, 'update'])->name('codigo.actualizar');
        Route::get('eliminar/{id}', [CodigoPostalController::class, 'destroy'])->name('codigo.eliminar');
    });

    Route::group(['prefix' => 'region'], function () {
        Route::get('lista', [RegionController::class, 'index'])->name('region.index');
        Route::get('nueva', [RegionController::class, 'create'])->name('region.crear');
        Route::post('guardar', [RegionController::class, 'store'])->name('region.guardar');
        Route::get('editar/{region}', [RegionController::class, 'edit'])->name('region.editar');
        Route::post('actualizar/{region}', [RegionController::class, 'update'])->name('region.actualizar');
        Route::get('eliminar/{id}', [RegionController::class, 'destroy'])->name('region.eliminar');
    });

    Route::group(['prefix' => 'gira'], function () {
        Route::get('lista', [GiraController::class, 'index'])->name('gira.index');
        Route::get('nueva', [GiraController::class, 'create'])->name('gira.crear');
        Route::post('guardar', [GiraController::class, 'store'])->name('gira.guardar');
        Route::get('editar/{gira}', [GiraController::class, 'edit'])->name('gira.editar');
        Route::post('actualizar/{gira}', [GiraController::class, 'update'])->name('gira.actualizar');
        Route::get('eliminar/{id}', [GiraController::class, 'destroy'])->name('gira.eliminar');
    });

    Route::group(['prefix' => 'apm'], function () {
        Route::get('lista', [ApmController::class, 'index'])->name('apm.index');
        Route::get('nuevo', [ApmController::class, 'create'])->name('apm.crear');
        Route::post('guardar', [ApmController::class, 'store'])->name('apm.guardar');
        Route::get('editar/{apm}', [ApmController::class, 'edit'])->name('apm.editar');
        Route::post('actualizar/{apm}', [ApmController::class, 'update'])->name('apm.actualizar');
        Route::get('eliminar/{apm}', [ApmController::class, 'destroy'])->name('apm.eliminar');
    });

    Route::group(['prefix' => 'linea'], function () {
        Route::get('lista', [LineaController::class, 'index'])->name('linea.index');
        Route::get('nueva', [LineaController::class, 'create'])->name('linea.crear');
        Route::post('guardar', [LineaController::class, 'store'])->name('linea.guardar');
        Route::get('editar/{linea}', [LineaController::class, 'edit'])->name('linea.editar');
        Route::get('eliminar/{id}', [LineaController::class, 'destroy'])->name('linea.eliminar');
        Route::post('actualizar/{linea}', [LineaController::class, 'update'])->name('linea.actualizar');
    });

    Route::group(['prefix' => 'categoria'], function () {
        Route::get('lista', [CategoriaController::class, 'index'])->name('categoria.index');
        Route::get('nueva', [CategoriaController::class, 'create'])->name('categoria.crear');
        Route::post('guardar', [CategoriaController::class, 'store'])->name('categoria.guardar');
    });

    Route::group(['prefix' => 'clasificacion'], function () {
        Route::get('lista', [ClasificacionController::class, 'index'])->name('clasificacion.index');
        Route::get('nueva', [ClasificacionController::class, 'create'])->name('clasificacion.crear');
        Route::post('guardar', [ClasificacionController::class, 'store'])->name('clasificacion.guardar');
        Route::get('editar/{clasificacion}', [ClasificacionController::class, 'edit'])->name('clasificacion.editar');
        Route::post('actualizar/{clasificacion}', [ClasificacionController::class, 'update'])->name('clasificacion.actualizar');
        Route::get('eliminar/{clasificacion}', [ClasificacionController::class, 'destroy'])->name('clasificacion.eliminar');
    });
});



Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
