# from django.contrib.auth.models import User
# from apps.usuarios.forms import UsuariosForms, UsuariosEditForms, TrocarSenhaForm
# from apps.dashboard.models import Usuarios
# from django.shortcuts import render, redirect
# from django.contrib import messages
# from apps.dashboard.utils import get_user_info
# from django.core.exceptions import ObjectDoesNotExist
# from django.conf import settings
# from django.http import JsonResponse
# from django.views.decorators.csrf import csrf_exempt
# from django.contrib.auth.decorators import login_required


# def cadastro_usuario(request):

#     form = UsuariosForms()
#     user_info = get_user_info(request.user.id)
#     if request.method == 'POST':

#         form = UsuariosForms(request.POST, request.FILES)

#         if form.is_valid():
#             if form["senha_1"].value() != form["senha_2"].value():
#                 messages.error(request, 'Senhas não são iguais')
#                 return redirect('cadastro_usuario')

#             nome = form['nome'].value()
#             nome_usuario = form['nome_usuario'].value()
#             cpf = form['cpf'].value()
#             sexo = form['sexo'].value()
#             estado_civil = form['estado_civil'].value()
#             endereco = form['endereco'].value()
#             complemento = form['complemento'].value()
#             bairro = form['bairro'].value()
#             cidade = form['cidade'].value()
#             uf = form['uf'].value()
#             email = form['email'].value()
#             telefone_celular = form['telefone_celular'].value()
#             telefone_residencial = form['telefone_residencial'].value()
#             cargo_funcao = form['cargo_funcao'].value()
#             tipo_acesso = form['tipo_acesso'].value()
#             senha = form['senha_1'].value()
#             data_nascimento = form['data_nascimento'].value()
#             foto = form['foto'].value()

#             # Verifique se o nome de usuário já existe no sistema de autenticação do Django
#             if User.objects.filter(username=nome_usuario).exists():
#                 messages.error(request, 'Login já existente')
#                 return redirect('cadastro_usuario')

#             # Crie um usuário no sistema de autenticação do Django
#             user = User.objects.create_user(
#                 username=nome_usuario, password=senha)

#             # Crie uma instância do modelo Usuarios associada ao usuário criado
#             usuario = Usuarios(
#                 user=user,  # Aqui você associa o usuário ao modelo Usuarios
#                 nome=nome,
#                 nome_usuario=nome_usuario,
#                 cpf=cpf,
#                 sexo=sexo,
#                 estado_civil=estado_civil,
#                 endereco=endereco,
#                 complemento=complemento,
#                 bairro=bairro,
#                 cidade=cidade,
#                 uf=uf,
#                 email=email,
#                 telefone_celular=telefone_celular,
#                 telefone_residencial=telefone_residencial,
#                 cargo_funcao=cargo_funcao,
#                 tipo_acesso=tipo_acesso,
#                 senha=senha,
#                 data_nascimento=data_nascimento,
#                 foto=foto,
#             )
#             usuario.foto = form.cleaned_data['foto']
#             usuario.save()
#             messages.success(request, 'Cadastro efetuado com sucesso!')
#             return redirect('tabela_usuarios')

#     return render(request, 'usuarios/cadastro_usuario.html', {'form': form, "user_info": user_info})


# def editar_usuario(request, user_id):
#     user_info = get_user_info(request.user.id)
#     usuario = Usuarios.objects.get(user_id=user_id)

#     if request.method == 'POST':
#         form = UsuariosEditForms(request.POST, request.FILES)
#         if form.is_valid():
#             # Verifique se um novo arquivo de foto foi enviado
#             if 'foto' in request.FILES:
#                 # Atualize a foto com o novo arquivo enviado
#                 usuario.foto = form.cleaned_data['foto']

#             # Atualize os campos do modelo com os dados do formulário
#             usuario.nome = form.cleaned_data['nome']
#             usuario.nome_usuario = form.cleaned_data['nome_usuario']
#             usuario.cpf = form.cleaned_data['cpf']
#             usuario.sexo = form.cleaned_data['sexo']
#             usuario.estado_civil = form.cleaned_data['estado_civil']
#             usuario.endereco = form.cleaned_data['endereco']
#             usuario.complemento = form.cleaned_data['complemento']
#             usuario.bairro = form.cleaned_data['bairro']
#             usuario.cidade = form.cleaned_data['cidade']
#             usuario.uf = form.cleaned_data['uf']
#             usuario.email = form.cleaned_data['email']
#             usuario.telefone_celular = form.cleaned_data['telefone_celular']
#             usuario.telefone_residencial = form.cleaned_data['telefone_residencial']
#             usuario.cargo_funcao = form.cleaned_data['cargo_funcao']
#             usuario.tipo_acesso = form.cleaned_data['tipo_acesso']
#             usuario.data_nascimento = form.cleaned_data['data_nascimento']

#             # Adicione outros campos do modelo que deseja editar

#             usuario.save()
#             # Atualize o nome de usuário no modelo User incorporado
#             user = User.objects.get(id=usuario.user.id)
#             user.username = form.cleaned_data['nome_usuario']
#             user.save()

#             # Redirecione para a página desejada após a edição
#             messages.success(request, 'Cadastro editado com sucesso!')
#             return redirect('tabela_usuarios')
#     else:
#         form = UsuariosEditForms(initial={
#             'nome': usuario.nome,
#             'nome_usuario': usuario.nome_usuario,
#             'cpf': usuario.cpf,
#             'sexo': usuario.sexo,
#             'estado_civil': usuario.estado_civil,
#             'endereco': usuario.endereco,
#             'complemento': usuario.complemento,
#             'bairro': usuario.bairro,
#             'cidade': usuario.cidade,
#             'uf': usuario.uf,
#             'email': usuario.email,
#             'telefone_celular': usuario.telefone_celular,
#             'telefone_residencial': usuario.telefone_residencial,
#             'cargo_funcao': usuario.cargo_funcao,
#             'tipo_acesso': usuario.tipo_acesso,
#             'data_nascimento': usuario.data_nascimento.strftime('%Y-%m-%d'),

#             # Defina outros campos iniciais aqui
#         })

#     return render(request, 'usuarios/editar_usuario.html', {'form': form, 'user_id': user_id, 'user_info': user_info, 'usuario': usuario})


# def deletar_usuario(request, user_id):
#     try:
#         usuario = Usuarios.objects.get(user_id=user_id)
#         usuario.delete()
#         user = User.objects.get(id=user_id)
#         user.delete()
#         messages.success(request, 'Usuário deletado com sucesso')
#         return redirect('tabela_usuarios')
#     except ObjectDoesNotExist:
#         messages.error(request, 'Usuário não encontrado')
#         return redirect('tabela_usuarios')


# def tabela_usuarios(request):
#     if not request.user.is_authenticated:
#         return redirect('index')
#     user_info = get_user_info(request.user.id)
#     dados = Usuarios.objects.all()

#     # Adicione o caminho base para as imagens
#     base_url = settings.MEDIA_URL
#     for especie in dados:
#         especie.foto = f"{base_url}{especie.foto}"

#     return render(request, 'usuarios/tabela_usuarios.html', {"cards": dados, "user_info": user_info})


# @csrf_exempt
# @login_required
# def trocar_senha(request, user_id):
#     if request.method == 'POST':
#         nova_senha = request.POST.get('senha_1')
#         confirma_senha = request.POST.get('senha_2')

#         try:
#             usuario = Usuarios.objects.get(user_id=user_id)

#             if nova_senha != confirma_senha:
#                 return JsonResponse({'status': 'error', 'message': 'Senhas não são iguais'})

#             # Salve o usuário e atualize a senha
#             usuario.senha = nova_senha
#             usuario.save()

#             user = User.objects.get(id=usuario.user.id)
#             user.set_password(nova_senha)
#             user.save()

#             return JsonResponse({'status': 'success', 'message': 'Senha trocada com sucesso!'})
#         except ObjectDoesNotExist as e:
#             return JsonResponse({'status': 'error', 'message': f'Erro: {e}'})
#     else:
#         form = TrocarSenhaForm()

#     return JsonResponse({'status': 'error', 'message': 'Método não permitido'})