from flask import Flask, request
import openpyxl
import os
import cups

app = Flask(__name__)

# Funzione per stampare il file Excel
def print_excel(file_path, printer_uri):
  	  # Connessione al server CUPS
	conn = cups.Connection()

	# Nome della stampante (deve corrispondere al nome configurato in CUPS)
	printer_name = printer_uri  # Cambia con il nome della tua stampante

	# File da stampare
	file_to_print = file_path  # Assicurati che il file esista
	
	try:
	    # Invia il lavoro di stampa
	    print_job = conn.printFile(printer_name, file_to_print, "Test Print Job", {})
	    print(f"Documento inviato alla stampante con ID lavoro: {print_job}")
	except cups.IPPError as e:
	    print(f"Errore durante la stampa: {e}")

@app.route('/genera_excel', methods=['POST'])
def genera_excel():
    try:
        # Ottieni i dati dal form
        cliente = request.form['cliente']
        cellulare = request.form['cellulare']
        vettura = request.form['vettura']
        km = request.form['km']
        targa = request.form['targa'].upper()  # Assicurati che la targa sia in maiuscolo
        note = request.form['note']
        data = request.form['data']
        numero_telaio = request.form['telaio']
        immatricolazione = request.form['immatricolazione']
        print_ufficio = request.form['ufficio']
        print_officina = request.form['officina']

        # Definisci il percorso del file Excel
        excel_file_path = 'SchedaManutenzioneOfficina.xlsx'
        
        # Stampa il percorso del file per il debug
        print("Percorso del file Excel:", os.path.abspath(excel_file_path))
        
        # Verifica se il file esiste
        if not os.path.exists(excel_file_path):
            return "File Excel non trovato", 400

        # Carica il file Excel
        wb = openpyxl.load_workbook(excel_file_path)
        sheet = wb.active

        # Scrivi i dati nelle celle specifiche
        sheet['A2'] = f"Cliente: {cliente}"
        sheet['A4'] = f"Telefono: {cellulare}"
        sheet['A8'] = f"Vettura: {vettura}"

        if numero_telaio:
            sheet['A14'] = f"Telaio: {numero_telaio}"
        if immatricolazione:
            sheet['A16'] = f"Immatricolaz.: {immatricolazione}"

        sheet['C8'] = f"Km: {km}"
        sheet['C10'] = f"Targa: {targa}"
        sheet['C2'] = f"Entrata: {data}"
        sheet['A18'] = f"Note: {note}"

        # Crea la directory SchedeEntrata se non esiste
        os.makedirs('SchedeEntrata', exist_ok=True)

        # Salva il file Excel con un nome diverso
        save_path = f'SchedeEntrata/{cliente} {targa}.xlsx'
        wb.save(save_path)
        print(f"File Excel salvato in: {save_path}")

        # Stampa il file Excel, se necessario
        #if print_ufficio == "on":
            #print_excel(save_path, "socket://192.168.1.105:9100")  # Stampante Ufficio (IPv4)
        if print_officina == "on":
            print_excel(save_path, "Samsung_officina")  # Stampante Officina (IPv6)

        return f"File Excel generato con successo: {save_path}", 200

    except Exception as e:
        print(f"Errore durante la generazione del file Excel: {e}")
        return "Errore durante la generazione del file Excel", 500

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0', port=5000)
