package com.example.myapplication;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

public class ProfileActivity extends AppCompatActivity {

    private DatabaseHelper db;
    private int userId;
    private String userName, userEmail;

    private TextView tvName, tvEmail, tvRecipeCount;
    private Button btnDeleteRecipes, btnDeleteAccount, btnLogout, btnBack;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Oturum Kontrolü
        SharedPreferences pref = getSharedPreferences("UserSession", Context.MODE_PRIVATE);
        if (!pref.contains("userId")) {
            Intent intent = new Intent(ProfileActivity.this, LoginActivity.class);
            startActivity(intent);
            finish();
            return;
        }

        userId = pref.getInt("userId", -1);
        userName = pref.getString("userName", "Şef");
        userEmail = pref.getString("userEmail", "");

        setContentView(R.layout.activity_profile);

        db = new DatabaseHelper(this);

        // View'ları bağla
        tvName = findViewById(R.id.tvProfileName);
        tvEmail = findViewById(R.id.tvProfileEmail);
        tvRecipeCount = findViewById(R.id.tvProfileRecipeCount);
        btnDeleteRecipes = findViewById(R.id.btnDeleteMyRecipes);
        btnDeleteAccount = findViewById(R.id.btnDeleteAccount);
        btnLogout = findViewById(R.id.btnProfileLogout);
        btnBack = findViewById(R.id.btnProfileBack);

        // Bilgileri yerleştir
        tvName.setText(userName);
        tvEmail.setText(userEmail);

        // Tarif sayısını güncelle
        tarifSayisiniGuncelle();

        // ── 1. SADECE TARİFLERİMİ SİL ─────────────────────────────────────
        btnDeleteRecipes.setOnClickListener(v -> {
            new AlertDialog.Builder(ProfileActivity.this)
                    .setTitle("Tarifleri Sil")
                    .setMessage("Eklediğiniz tüm yemek tariflerini silmek istediğinize emin misiniz? Bu işlem geri alınamaz!")
                    .setIcon(android.R.drawable.ic_dialog_alert)
                    .setPositiveButton("Evet, Sil", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            db.deleteUserRecipes(userId);
                            Toast.makeText(ProfileActivity.this, "Eklediğiniz tüm tarifler silindi! 🍳", Toast.LENGTH_SHORT).show();
                            tarifSayisiniGuncelle();
                        }
                    })
                    .setNegativeButton("İptal", null)
                    .show();
        });

        // ── 2. ÜYELİĞİMİ VE TARİFLERİMİ SİL ───────────────────────────────
        btnDeleteAccount.setOnClickListener(v -> {
            new AlertDialog.Builder(ProfileActivity.this)
                    .setTitle("Üyeliği Sil")
                    .setMessage("Üyeliğinizi ve eklediğiniz tüm tarifleri kalıcı olarak silmek istediğinize emin misiniz? Bu işlem geri alınamaz!")
                    .setIcon(android.R.drawable.ic_dialog_alert)
                    .setPositiveButton("Evet, Hesabımı Sil", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // 1. Tariflerini sil
                            db.deleteUserRecipes(userId);
                            // 2. Kullanıcıyı sil
                            db.deleteUser(userId);
                            
                            // 3. Oturumu temizle
                            SharedPreferences.Editor editor = pref.edit();
                            editor.clear();
                            editor.apply();

                            Toast.makeText(ProfileActivity.this, "Hesabınız başarıyla silinmiştir. 🚪", Toast.LENGTH_LONG).show();

                            // Giriş sayfasına git
                            Intent intent = new Intent(ProfileActivity.this, LoginActivity.class);
                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                            startActivity(intent);
                            finish();
                        }
                    })
                    .setNegativeButton("İptal", null)
                    .show();
        });

        // ── 3. ÇIKIŞ YAP ──────────────────────────────────────────────────
        btnLogout.setOnClickListener(v -> {
            SharedPreferences.Editor editor = pref.edit();
            editor.clear();
            editor.apply();

            Toast.makeText(ProfileActivity.this, "Çıkış yapıldı!", Toast.LENGTH_SHORT).show();

            Intent intent = new Intent(ProfileActivity.this, LoginActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
            finish();
        });

        // ── 4. GERİ DÖN ───────────────────────────────────────────────────
        btnBack.setOnClickListener(v -> finish());
    }

    /**
     * Kullanıcının eklediği tariflerin toplam sayısını sorgular ve ekrana yazar.
     */
    private void tarifSayisiniGuncelle() {
        int count = 0;
        SQLiteDatabase sdb = db.getReadableDatabase();
        Cursor c = sdb.rawQuery("SELECT COUNT(*) FROM tarifler WHERE ekleyen_id = ?", new String[]{String.valueOf(userId)});
        if (c != null) {
            if (c.moveToFirst()) {
                count = c.getInt(0);
            }
            c.close();
        }
        tvRecipeCount.setText(String.valueOf(count));
    }
}
