from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from .models import BoardNotice
from .forms import BoardNoticeForm

# 게시글 목록
def notice_list(request):
    notices = BoardNotice.objects.all().order_by('-created_at')
    return render(request, 'board_notice/notice_list.html', {'notices': notices})

# 게시글 상세 보기
def notice_detail(request, pk):
    notice = get_object_or_404(BoardNotice, pk=pk)
    return render(request, 'board_notice/notice_detail.html', {'notice': notice})

# 공지사항 게시글 등록
@login_required
def create_notice(request):
    if request.method == 'POST':
        form = BoardNoticeForm(request.POST)
        if form.is_valid():
            notice = form.save(commit=False)
            notice.author = request.user  # 작성자 정보 추가
            notice.save()
            return redirect('board_notice:notice_list')
    else:
        form = BoardNoticeForm()
    return render(request, 'board_notice/create_notice.html', {'form': form})

# 공지사항 게시글 수정
@login_required
def update_notice(request, pk):
    notice = get_object_or_404(BoardNotice, pk=pk)

    # 작성자만 수정 가능하도록 권한 검사
    if notice.author != request.user:
        return redirect('board_notice:notice_list')

    if request.method == 'POST':
        form = BoardNoticeForm(request.POST, instance=notice)
        if form.is_valid():
            form.save()
            return redirect('board_notice:notice_detail', pk=notice.pk)
    else:
        form = BoardNoticeForm(instance=notice)

    return render(request, 'board_notice/update_notice.html', {'form': form, 'notice': notice})

# 공지사항 게시글 삭제
@login_required
def delete_notice(request, pk):
    notice = get_object_or_404(BoardNotice, pk=pk)

    # 작성자만 삭제 가능하도록 권한 검사
    if notice.author != request.user:
        return redirect('board_notice:notice_list')

    if request.method == 'POST':
        notice.delete()
        return redirect('board_notice:notice_list')

    return render(request, 'board_notice/confirm_delete.html', {'notice': notice})
