
from django.core.management.base import BaseCommand
from django.contrib.auth import get_user_model
from hr.models import Employee, Department

User = get_user_model()

class Command(BaseCommand):
    help = 'Grant superuser privileges to all Management department employees'

    def handle(self, *args, **options):
        self.stdout.write('Granting superuser privileges to Management department employees...')
        
        try:
            management_dept = Department.objects.get(name='Management')
            management_employees = Employee.objects.filter(department=management_dept)
            
            updated_count = 0
            for employee in management_employees:
                if employee.user:
                    if not employee.user.is_superuser:
                        employee.user.is_superuser = True
                        employee.user.is_staff = True
                        employee.user.role = 'admin'
                        employee.user.save()
                        updated_count += 1
                        self.stdout.write(f'Granted superuser privileges to: {employee.full_name}')
                    else:
                        self.stdout.write(f'Already superuser: {employee.full_name}')
                else:
                    self.stdout.write(f'No user account for: {employee.full_name}')
            
            self.stdout.write(
                self.style.SUCCESS(f'Successfully updated {updated_count} Management employees with superuser privileges!')
            )
            
        except Department.DoesNotExist:
            self.stdout.write(
                self.style.ERROR('Management department not found. Please create it first.')
            )
        except Exception as e:
            self.stdout.write(
                self.style.ERROR(f'Error: {str(e)}')
            )
