import json
import os
import datetime
from http.server import SimpleHTTPRequestHandler, HTTPServer
import urllib.parse

# Ustawienia serwera
PORT = 8000
DIRECTORY = os.path.dirname(os.path.abspath(__file__))

class QuizBackendServer(SimpleHTTPRequestHandler):
    
    def do_POST(self):
        # Punkt końcowy API: /api/generuj-raport
        if self.path == '/api/generuj-raport':
            content_length = int(self.headers['Content-Length'])
            post_data = self.rfile.read(content_length)
            
            try:
                data = json.loads(post_data.decode('utf-8'))
                email = data.get('email')
                answers = data.get('answers', [])
                
                print(f"\n[BACKEND CUDOWNI] Otrzymano nowy skan od: {email}")
                print(f"[BACKEND CUDOWNI] Przesłane odpowiedzi pacjenta: {answers}")
                
                # ZAMIAST PŁACIĆ ZA MAKE.COM, ROBIMY TO U NAS:
                
                # 1. Logika Medyczna (Analiza odpowiedzi)
                # Skrypt sam dobiera odpowiednie moduły tekstu na podstawie tego, co zaznaczył pacjent!
                sekcja_fundament = self.analizuj_fundament(answers)
                sekcja_lancuch = self.analizuj_lancuch(answers)
                sekcja_rozwiazanie = self.wygeneruj_rozwiazanie()
                
                # 2. Generowanie gotowego raportu (Wstrzykiwanie do naszego pięknego szablonu HTML)
                with open(os.path.join(DIRECTORY, 'szablon_pdf_cudowni.html'), 'r', encoding='utf-8') as f:
                    szablon = f.read()
                
                dzisiaj = datetime.datetime.now().strftime("%d.%m.%Y")
                
                raport_gotowy = szablon.replace('{{email_pacjenta}}', email)
                raport_gotowy = raport_gotowy.replace('{{data_dzisiejsza}}', dzisiaj)
                raport_gotowy = raport_gotowy.replace('{{ai_sekcja_fundament}}', sekcja_fundament)
                raport_gotowy = raport_gotowy.replace('{{ai_sekcja_lancuch}}', sekcja_lancuch)
                raport_gotowy = raport_gotowy.replace('{{ai_sekcja_rozwiazanie}}', sekcja_rozwiazanie)
                
                # Zapisujemy wygenerowany, indywidualny raport dla tego pacjenta na dysku
                timestamp = int(datetime.datetime.now().timestamp())
                raport_nazwa = f"raport_{email.replace('@','_')}_{timestamp}.html"
                pelna_sciezka = os.path.join(DIRECTORY, raport_nazwa)
                with open(pelna_sciezka, 'w', encoding='utf-8') as f:
                    f.write(raport_gotowy)
                    
                print(f"[BACKEND CUDOWNI] Wygenerowano indywidualny raport: {raport_nazwa}")
                
                # Zwracamy status OK do naszej przeglądarki (Quiz AR)
                self.send_response(200)
                self.send_header('Content-type', 'application/json')
                self.end_headers()
                response = {
                    "status": "success", 
                    "message": "Raport wygenerowany!",
                    "report_url": f"/{raport_nazwa}"
                }
                self.wfile.write(json.dumps(response).encode('utf-8'))
                
            except Exception as e:
                print(f"[ERROR] Błąd przetwarzania: {e}")
                self.send_response(500)
                self.end_headers()
        else:
            self.send_response(404)
            self.end_headers()

    # Logika Medyczna Zastępująca sztuczną inteligencję (bezpłatna, wbudowana w nasz system!)
    def analizuj_fundament(self, answers):
        # Sprawdzamy odpowiedź na pytanie 1 (Ostrogi/Pięta)
        if "Środek pięty" in answers[0]:
            return "<p><strong>Podejrzenie przeciążenia rozcięgna podeszwowego (ostrogi).</strong> Twój poranny ból pięty to znak, że powięź na spodzie stopy jest nadmiernie rozciągnięta przez opadający łuk. W nocy tkanka próbuje się zregenerować, a rano, stawiając pierwszy krok, brutalnie ją naciągasz, co wywołuje ból.</p>"
        elif "Krawędź" in answers[0]:
            return "<p><strong>Nadmierna Supinacja (Uciekanie na zewnątrz).</strong> Ból na zewnętrznej krawędzi stopy świadczy o tym, że omijasz naturalny system amortyzacji (łuk podłużny) i cały ciężar ciala przenosisz na cienkie kości śródstopia.</p>"
        else:
            return "<p><strong>Analiza Osi Pięty:</strong> Choć nie odczuwasz ostrego bólu porannego, inne parametry Twojej stopy wskazują na zaburzenia rozkładu nacisku, które z czasem mogą osłabić Twoją strukturę powięziową.</p>"

    def analizuj_lancuch(self, answers):
        # Sprawdzamy odpowiedź na pytanie 14 (Co boli wyżej)
        odp14 = answers[13] if len(answers) > 13 else ""
        if "Lędźwi" in odp14 or "biodrowe" in odp14:
            return "<p><strong>Wstępujący Łańcuch Napięć (Odcinek Lędźwiowy).</strong> Ból Twoich lędźwi i miednicy zaczyna się w stopach. Gdy stopa zapada się do wewnątrz, rotuje kość piszczelową i udową, zmuszając miednicę do asymetrycznego pochylenia. Mięśnie dolnych partii pleców są przewlekle napięte, ponieważ ratują Twój środek ciężkości.</p>"
        elif "karku" in odp14:
            return "<p><strong>Efekt Domina (Aż do odcinka szyjnego).</strong> Zaskakujące? Ból karku to efekt kompensacji. Kiedy fundament (stopy) jest krzywy, Twoje ciało wykrzywia kręgosłup aż do samej głowy, abyś mógł patrzeć prosto. Leczenie samej szyi daje tylko chwilową ulgę.</p>"
        else:
            return "<p><strong>Przeciążenie stawów kolanowych.</strong> Ból kolan to klasyczny objaw ratowania opadającego łuku stopy. Twoje kolana nie pracują w osi fizjologicznej i ulegają nienaturalnemu wycieraniu chrząstki.</p>"
            
    def wygeneruj_rozwiazanie(self):
        return """
        <p>Gąbkowe wkładki ze sklepu medycznego nie utrzymają ciężaru Twojego ciała. W Gabinecie Cudowni tworzymy <strong>Bioniczne Wkładki Termoformowalne Sidas</strong>. Są one rozgrzewane i formowane precyzyjnie do Twojego, odciążonego kształtu stopy.</p>
        <p>Wkładka zadziała jak inteligentny interfejs: podeprze łuk poprzeczny, odciąży piętę i wyprostuje ułożenie miednicy. Odzyskaj pełną wydajność i życie bez bólu.</p>
        """

if __name__ == '__main__':
    server_address = ('', PORT)
    httpd = HTTPServer(server_address, QuizBackendServer)
    print(f"==================================================")
    print(f" CUDOWNI BACKEND SYSTEM uruchomiony na porcie {PORT}")
    print(f"==================================================")
    httpd.serve_forever()
