from flask import Blueprint, render_template, flash, redirect, url_for
from app.forms import ContactForm
from app.models import BlogPost, Contact
from app import db, mail
from flask_mail import Message

main = Blueprint('main', __name__)

@main.route('/')
def index():
    return render_template('index.html')

@main.route('/about')
def about():
    return render_template('about.html')

@main.route('/experience')
def experience():
    return render_template('experience.html')

@main.route('/blog')
def blog():
    posts = BlogPost.query.order_by(BlogPost.created_at.desc()).all()
    return render_template('blog.html', posts=posts)

@main.route('/contact', methods=['GET', 'POST'])
def contact():
    form = ContactForm()
    if form.validate_on_submit():
        contact = Contact(
            name=form.name.data,
            email=form.email.data,
            message=form.message.data
        )
        db.session.add(contact)
        db.session.commit()

        # Send email notification
        msg = Message('New Contact Form Submission',
                     sender=form.email.data,
                     recipients=['your-email@example.com'])
        msg.body = f"""
        New contact form submission:
        Name: {form.name.data}
        Email: {form.email.data}
        Message: {form.message.data}
        """
        mail.send(msg)

        flash('Your message has been sent successfully!', 'success')
        return redirect(url_for('main.contact'))
    return render_template('contact.html', form=form)
