<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ApplicationController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\SectorController;
use App\Http\Controllers\LeadController;
use App\Http\Controllers\KanbanController;
use App\Http\Controllers\SettingController;
use App\Http\Controllers\FeeController;
use App\Http\Controllers\EstimationController;
use App\Http\Controllers\EstimationPictureController;
use App\Http\Controllers\EstimationPdfController;
use App\Http\Controllers\ContactController;
use App\Http\Controllers\SendController;
use App\Http\Controllers\Settings\ModelController;
use App\Http\Controllers\Settings\GeneralController;
use App\Http\Controllers\ScrapController;
/*
|--------------------------------------------------------------------------
| 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(['web', 'checkblocked'])->group(function () {
	// Route::prefix('webhook')->group(function () {
	// 	Route::post('/progression', [SendController::class, 'hook_progression'])->name('captimmo.webhook.progression.post');
	// });
    Route::post('/contact/send', [ApplicationController::class, 'contact_send'])->name('captimmo.contact.send');


	Route::prefix('estimate')->group(function () {
        Route::get('/show/{hash}/{visitor?}', [EstimationController::class, 'result'])->name('captimmo.show.visitor');

		Route::prefix('picture')->group(function () {
        	Route::get('/{id}', [EstimationPictureController::class, 'getMediaImage'])->name('captimmo.media');
 		});

		Route::get('establishment/{id}/{catId}/{subCatId?}', [EstimationController::class, 'establishment'])->name('captimmo.establishment');
        Route::post('/contact/{hash}', [EstimationController::class, 'contact'])->name('captimmo.contact.agent');

        Route::post('/visit-engagement/{visitId}', [EstimationController::class, 'updateEngagement'])->name('captimmo.visit.engagement');



    });
});

Route::middleware(['web', 'checkblocked', 'auth', 'verified:verification.notice', 'subscription'])->group(function () {

	Route::prefix('dashboard')->group(function () {
    	Route::get('/', [DashboardController::class, 'index'])->name('captimmo.dashboard');
    	Route::post('/update-kpi', [DashboardController::class, 'updateKpi'])->name('captimmo.dashboard.update.kpi');
    	Route::post('/update-pipeline-period', [DashboardController::class, 'updatePipelinePeriod'])->name('captimmo.dashboard.update.pipeline.period');
    	Route::post('/update-leaderboard-period', [DashboardController::class, 'updateLeaderboardPeriod'])->name('captimmo.dashboard.update.leaderboard.period');
    	Route::post('/update-kanban-express', [DashboardController::class, 'updateKanbanExpress'])->name('captimmo.dashboard.update.kanban.express');
	});

	Route::prefix('leads')->group(function () {
    	Route::get('/tour', [LeadController::class, 'tour'])->name('captimmo.leads.tour');
    	Route::get('/map', [LeadController::class, 'map'])->name('captimmo.leads.map');
    	Route::get('/kanban', [KanbanController::class, 'index'])->name('captimmo.leads.kanban');
    	Route::get('/kanban/proposal/{id}', [KanbanController::class, 'getProposal'])->name('captimmo.leads.kanban.proposal');

    	Route::post('/refresh', [LeadController::class, 'refresh'])->name('captimmo.leads.refresh');
    	Route::post('/refresh-list', [LeadController::class, 'refreshList'])->name('captimmo.leads.refresh.list');
    	Route::post('/refresh-sector', [LeadController::class, 'refreshSector'])->name('captimmo.leads.refresh.sector');
    	Route::post('/take', [LeadController::class, 'take'])->name('captimmo.leads.take');
    	Route::post('/sign', [LeadController::class, 'signMandat'])->name('captimmo.leads.sign');
    	Route::post('/sold', [LeadController::class, 'soldLead'])->name('captimmo.leads.sold');
    	Route::post('/status/{id}', [KanbanController::class, 'updateStatus'])->name('captimmo.leads.status');
        Route::post('/contact', [LeadController::class, 'updateContact'])->name('captimmo.leads.contact');
	    Route::get('/refresh-manage-modal/{id?}', [LeadController::class, 'refreshManageModal'])->name('captimmo.leads.refreshManageContactModal');
	});

	Route::prefix('estimate')->group(function () {
		Route::get('/list', [EstimationController::class, 'list'])->name('captimmo.list');
        Route::post('/lead', [EstimationController::class, 'create'])->name('captimmo.create');
		
    	Route::get('/proposal/{id}', [EstimationController::class, 'getProposal'])->name('captimmo.leads.estimate.proposal');
        // Route::get('/show/{hash}', [EstimationController::class, 'result'])->name('captimmo.create');

        Route::post('/update/{hash}/{returnPrice?}', [EstimationController::class, 'update'])->name('captimmo.update');
        Route::get('/edit-price/{hash}', [EstimationController::class, 'refreshEditPrice'])->name('captimmo.edit.price');
        Route::post('/edit-price/{hash}', [EstimationController::class, 'saveEditPrice'])->name('captimmo.save.edit.price');
        Route::post('/generate-text/{hash}', [EstimationPdfController::class, 'generateEditText'])->name('captimmo.save.generate.text');
        Route::post('/edit-text/{hash}', [EstimationPdfController::class, 'saveEditText'])->name('captimmo.save.edit.text');
        Route::post('/edit-price-preview/{hash}', [EstimationController::class, 'refreshEditPricePreview'])->name('captimmo.edit.price.preview');
        Route::post('/edit-criteria/{hash}', [EstimationController::class, 'saveCriteria'])->name('captimmo.save.criteria');

		Route::prefix('picture')->group(function () {
        	// Route::get('/{id}', [EstimationPictureController::class, 'getMediaImage'])->name('captimmo.media');
			Route::post('/cover', [EstimationPictureController::class, 'saveCover'])->name('captimmo.picture.cover');
			Route::post('/', [EstimationPictureController::class, 'uploadPicture'])->name('captimmo.picture.add');
			Route::delete('/', [EstimationPictureController::class, 'deletePicture'])->name('captimmo.picture.delete');
 		});

		// Route::get('establishment/{id}/{catId}/{subCatId?}', [EstimationController::class, 'establishment'])->name('captimmo.establishment');

        Route::post('/generate/{hash}', [EstimationPdfController::class, 'generate'])->name('captimmo.generate');
		// Route::get('/generate-test/{hash}', [EstimationPdfController::class, 'test_avis_valeur'])->name('captimmo.avistest'); // TODO SUPPR
    });

	Route::prefix('send')->group(function () {
    	Route::get('/models', [SendController::class, 'listModel'])->name('captimmo.send.model.list');
	    Route::post('/now', [SendController::class, 'now'])->name('captimmo.send.now');
	    Route::post('/self', [SendController::class, 'self'])->name('captimmo.send.self');
	});

	Route::prefix('contacts')->group(function () {
	    Route::get('/list', [ContactController::class, 'index'])->name('captimmo.contacts.index');
	    Route::post('/list', [ContactController::class, 'index'])->name('captimmo.contacts.list');
	    Route::get('/select/{type?}', [ContactController::class, 'select'])->name('captimmo.contacts.select');
	    Route::post('/', [ContactController::class, 'store'])->name('captimmo.contacts.store');
	    Route::get('/{id}', [ContactController::class, 'show'])->name('captimmo.contacts.show');
	    Route::post('/update/{id}', [ContactController::class, 'update'])->name('captimmo.contacts.update');
	    Route::delete('/{id}', [ContactController::class, 'destroy'])->name('captimmo.contacts.destroy');
	    Route::get('/refresh-modal/{id?}', [ContactController::class, 'refreshModal'])->name('captimmo.contacts.refreshModal');
	});

	Route::prefix('scrap')->group(function () {
		Route::get('logo/{type?}/{withCustom?}', [ScrapController::class, 'scrapLogo'])->name('scrap.logo');
		Route::get('parcel/preview/{id}', [ScrapController::class, 'scrapParcelPreview'])->name('scrap.parcel.preview');
		Route::get('parcel/preview3D/{id}', [ScrapController::class, 'scrapParcelPreview3D'])->name('scrap.parcel.preview3d');
		Route::get('parcel/map/{id}', [ScrapController::class, 'scrapParcelMap'])->name('scrap.parcel.map');
		Route::get('parcel/around/{id}', [ScrapController::class, 'scrapParcelAround'])->name('scrap.parcel.around');
		Route::get('parcel/satellite/{id}', [ScrapController::class, 'scrapParcelSatellite'])->name('scrap.parcel.satellite');
		Route::get('parcel/couche/{type}/{id}', [ScrapController::class, 'scrapParcelOverlayer'])->name('scrap.parcel.overlayer');
		Route::get('parcel/dvf/{id}/{dvfIds?}', [ScrapController::class, 'scrapParcelDvf'])->name('scrap.parcel.dvf');
		Route::get('parcel/propertie/{id}/{propertieIds?}', [ScrapController::class, 'scrapParcelPropertie'])->name('scrap.parcel.propertie');
		Route::get('parcel/stats/price-evol/{hash}/{source}/{color?}', [ScrapController::class, 'scrapParcelStatsPriceEvol'])->name('scrap.parcel.priceevol');
	});

	Route::prefix('settings')->group(function () {
		Route::get('/{activeTab?}', [SettingController::class, 'index'])->name('captimmo.settings');

		Route::prefix('sectors')->group(function () {
			Route::get('/create', [SectorController::class, 'create'])->name('captimmo.sector.create');
			Route::get('/edit/{sectorId}', [SectorController::class, 'edit'])->name('captimmo.sector.edit');
			Route::post('/polygon', [SectorController::class, 'polygon'])->name('captimmo.sector.polygon');
			Route::post('/create', [SectorController::class, 'save'])->name('captimmo.sector.save');
			Route::post('/estimate', [SectorController::class, 'estimate'])->name('captimmo.sector.estimate');

			Route::delete('/{id}', [SectorController::class, 'destroySector'])->name('captimmo.settings.sectors.delete');
		});

		Route::prefix('general')->group(function () {
        	Route::post('/color', [GeneralController::class, 'saveColor'])->name('captimmo.color');
			Route::post('/logo', [GeneralController::class, 'uploadLogo'])->name('captimmo.settings.logo.upload');
			Route::delete('/logo', [GeneralController::class, 'deleteLogo'])->name('captimmo.settings.logo.delete');
		});

		Route::prefix('models')->group(function () {
			Route::get('/{id}/pdf', [ModelController::class, 'pdf'])->name('captimmo.settings.models');
			Route::get('/{id}', [ModelController::class, 'getModel'])->name('captimmo.settings.models');
			Route::get('/{id}/preview', [ModelController::class, 'getModelPreview'])->name('captimmo.settings.models.preview');
			Route::get('/{id}/assets', [ModelController::class, 'getModelAssets'])->name('captimmo.settings.models.assets');
			Route::post('/{id}/duplicate', [ModelController::class, 'storeDuplicateModel'])->name('captimmo.settings.models.duplicate');
			Route::post('/', [ModelController::class, 'storeModel'])->name('captimmo.settings.models.store');
			Route::put('/', [ModelController::class, 'updateModel'])->name('captimmo.settings.models.update');
			Route::delete('/{id}', [ModelController::class, 'destroyModel'])->name('captimmo.settings.models.delete');
  		});

		/* Route::prefix('agenda')->group(function () {
			Route::get('/google/redirect', [SettingController::class, 'googleRedirect'])->name('captimmo.settings.google.redirect');
			Route::get('/google/callback', [SettingController::class, 'googleCallback'])->name('captimmo.settings.google.callback');
			Route::get('/google/sync', [SettingController::class, 'googleSync'])->name('captimmo.settings.google.sync');
			Route::get('/google/disconnect', [SettingController::class, 'googleDisconnect'])->name('captimmo.settings.google.disconnect');
		}); */

  	});

	Route::prefix('honoraire')->group(function () {
	  Route::get('/fee-form/{structureId}', [FeeController::class, 'feeForm'])->name('captimmo.fee.form');
	  Route::get('/fee/{feeId}', [FeeController::class, 'getFee'])->name('captimmo.fee.get');
	  Route::post('/fee', [FeeController::class, 'feeUpdate'])->name('captimmo.fee');
	  Route::post('/fee-template', [FeeController::class, 'feeTemplate'])->name('captimmo.fee.template');
	  Route::post('/fee-template-change', [FeeController::class, 'feeTemplateChange'])->name('captimmo.fee.template.change');
	  Route::delete('/fee/{feeId}', [FeeController::class, 'feeDelete'])->name('captimmo.fee.delete');
  });
});
