# Generated by Django 6.0.4 on 2026-04-09 16:59

import django.core.validators
import django.db.models.deletion
import django.utils.timezone
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('auth', '0012_alter_user_first_name_max_length'),
    ]

    operations = [
        migrations.CreateModel(
            name='Position',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100, verbose_name='Jina la cheo')),
                ('description', models.TextField(blank=True, null=True, verbose_name='Maelezo')),
                ('level', models.IntegerField(default=2, verbose_name='Kiwango (1=mwenyekiti, 2=wengine)')),
                ('can_add_leaders', models.BooleanField(default=False, verbose_name='Anaweza kuongeza viongozi?')),
                ('can_reset_passwords', models.BooleanField(default=False, verbose_name='Anaweza kubadilisha passwords?')),
                ('can_delete_members', models.BooleanField(default=False, verbose_name='Anaweza kufuta wanachama?')),
                ('is_default', models.BooleanField(default=False, verbose_name='Cheo cha kawaida?')),
                ('is_active', models.BooleanField(default=True, verbose_name='Cheo kinafanya kazi?')),
            ],
            options={
                'verbose_name': 'Cheo',
                'verbose_name_plural': 'Vyeo',
            },
        ),
        migrations.CreateModel(
            name='Leader',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('password', models.CharField(max_length=128, verbose_name='password')),
                ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
                ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
                ('phone_number', models.CharField(max_length=13, unique=True, verbose_name='Namba ya simu')),
                ('full_name', models.CharField(blank=True, max_length=200, null=True, verbose_name='Jina kamili')),
                ('is_active', models.BooleanField(default=True, verbose_name='Akaunti imewashwa?')),
                ('is_staff', models.BooleanField(default=False, verbose_name='Anaweza kuingia admin?')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Tarehe ya kujiunga')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Tarehe ya mabadiliko')),
                ('added_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Aliyemwongeza')),
                ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')),
                ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')),
            ],
            options={
                'verbose_name': 'Kiongozi',
                'verbose_name_plural': 'Viongozi',
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='Group',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=200, verbose_name='Jina la kikundi')),
                ('m_koba_number', models.CharField(blank=True, max_length=15, null=True, verbose_name='Namba ya M-Koba ya kikundi')),
                ('description', models.TextField(blank=True, null=True, verbose_name='Maelezo ya kikundi')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Tarehe ya kuanzishwa')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Tarehe ya mabadiliko')),
                ('is_active', models.BooleanField(default=True, verbose_name='Kikundi kinafanya kazi?')),
                ('chairperson', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='groups_founded', to=settings.AUTH_USER_MODEL, verbose_name='Mwenyekiti')),
            ],
            options={
                'verbose_name': 'Kikundi',
                'verbose_name_plural': 'Vikundi',
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='Disbursement',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('recipient_name', models.CharField(max_length=200, verbose_name='Jina la mpokeaji')),
                ('recipient_phone', models.CharField(blank=True, max_length=13, null=True, verbose_name='Namba ya mpokeaji')),
                ('amount', models.DecimalField(decimal_places=0, max_digits=12, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Kiasi (Tsh)')),
                ('reason', models.CharField(choices=[('death', 'Msiba (kifo)'), ('sickness', 'Ugonjwa'), ('disaster', 'Majanga'), ('other', 'Nyingine')], max_length=20, verbose_name='Sababu')),
                ('reason_description', models.TextField(verbose_name='Maelezo ya sababu')),
                ('attachment', models.FileField(blank=True, null=True, upload_to='disbursements/%Y/%m/%d/', verbose_name='Kiambatisho')),
                ('disbursement_date', models.DateField(default=django.utils.timezone.now, verbose_name='Tarehe ya kutoa')),
                ('recorded_at', models.DateTimeField(auto_now_add=True, verbose_name='Tarehe ya kurekodi')),
                ('notes', models.TextField(blank=True, null=True, verbose_name='Maelezo ya ziada')),
                ('initiated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='initiated_disbursements', to=settings.AUTH_USER_MODEL, verbose_name='Aliyeanzisha')),
                ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='disbursements', to='app.group', verbose_name='Kikundi')),
            ],
            options={
                'verbose_name': 'Msaada',
                'verbose_name_plural': 'Misada',
                'ordering': ['-disbursement_date', '-recorded_at'],
            },
        ),
        migrations.CreateModel(
            name='ActivityLog',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('action', models.CharField(choices=[('add_leader', 'Kuongeza kiongozi'), ('remove_leader', 'Kumwondoa kiongozi'), ('change_leader_password', 'Kubadilisha password ya kiongozi'), ('add_member', 'Kuongeza mwanachama'), ('edit_member', 'Kuhariri mwanachama'), ('delete_member', 'Kufuta mwanachama'), ('record_contribution', 'Kurekodi mchango'), ('edit_contribution', 'Kuhariri mchango'), ('delete_contribution', 'Kufuta mchango'), ('add_disbursement', 'Kutoa msaada'), ('edit_disbursement', 'Kuhariri msaada'), ('delete_disbursement', 'Kufuta msaada'), ('view_report', 'Kutazama ripoti'), ('other', 'Nyingine')], max_length=30, verbose_name='Shughuli')),
                ('description', models.TextField(verbose_name='Maelezo')),
                ('performed_at', models.DateTimeField(auto_now_add=True, verbose_name='Tarehe na saa')),
                ('affected_object_type', models.CharField(blank=True, max_length=50, null=True, verbose_name='Aina ya kitu')),
                ('affected_object_id', models.IntegerField(blank=True, null=True, verbose_name='ID ya kitu')),
                ('performed_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='activity_logs', to=settings.AUTH_USER_MODEL, verbose_name='Aliyefanya')),
                ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activity_logs', to='app.group', verbose_name='Kikundi')),
            ],
            options={
                'verbose_name': 'Kumbukumbu ya shughuli',
                'verbose_name_plural': 'Kumbukumbu za shughuli',
                'ordering': ['-performed_at'],
            },
        ),
        migrations.CreateModel(
            name='Member',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('full_name', models.CharField(max_length=200, verbose_name='Jina kamili la mwanachama')),
                ('phone_number', models.CharField(max_length=13, verbose_name='Namba ya simu')),
                ('secret_pin', models.CharField(max_length=10, verbose_name='PIN ya siri')),
                ('date_of_birth', models.DateField(blank=True, null=True, verbose_name='Tarehe ya kuzaliwa')),
                ('national_id', models.CharField(blank=True, max_length=20, null=True, verbose_name='Namba ya kitambulisho')),
                ('joined_at', models.DateTimeField(auto_now_add=True, verbose_name='Tarehe ya kujiunga')),
                ('is_active', models.BooleanField(default=True, verbose_name='Bado ni mwanachama?')),
                ('added_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='added_members', to=settings.AUTH_USER_MODEL, verbose_name='Aliyemuingiza')),
                ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='members', to='app.group', verbose_name='Kikundi')),
            ],
            options={
                'verbose_name': 'Mwanachama',
                'verbose_name_plural': 'Wanachama',
                'ordering': ['group', 'full_name'],
                'unique_together': {('group', 'phone_number')},
            },
        ),
        migrations.CreateModel(
            name='Contribution',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('amount', models.DecimalField(decimal_places=0, max_digits=12, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Kiasi (Tsh)')),
                ('reference_number', models.CharField(max_length=100, verbose_name='Reference number ya malipo')),
                ('payment_date', models.DateField(default=django.utils.timezone.now, verbose_name='Tarehe ya malipo')),
                ('recorded_at', models.DateTimeField(auto_now_add=True, verbose_name='Tarehe ya kurekodi')),
                ('notes', models.TextField(blank=True, null=True, verbose_name='Maelezo')),
                ('recorded_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='recorded_contributions', to=settings.AUTH_USER_MODEL, verbose_name='Aliyerekodi')),
                ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contributions', to='app.group', verbose_name='Kikundi')),
                ('member', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contributions', to='app.member', verbose_name='Mwanachama')),
            ],
            options={
                'verbose_name': 'Mchango',
                'verbose_name_plural': 'Michango',
                'ordering': ['-payment_date', '-recorded_at'],
            },
        ),
        migrations.CreateModel(
            name='MemberSummary',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('total_contributed', models.DecimalField(decimal_places=0, default=0, max_digits=12, verbose_name='Jumla ya michango')),
                ('total_received', models.DecimalField(decimal_places=0, default=0, max_digits=12, verbose_name='Jumla ya misaada aliyopokea')),
                ('last_contribution_date', models.DateField(blank=True, null=True, verbose_name='Mchango wa mwisho')),
                ('last_contribution_amount', models.DecimalField(decimal_places=0, default=0, max_digits=12, verbose_name='Kiasi cha mwisho')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Ilibadilishwa mwisho')),
                ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='member_summaries', to='app.group', verbose_name='Kikundi')),
                ('member', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='summary', to='app.member', verbose_name='Mwanachama')),
            ],
            options={
                'verbose_name': 'Muhtasari wa mwanachama',
                'verbose_name_plural': 'Muhtasari wa wanachama',
            },
        ),
        migrations.CreateModel(
            name='PasswordResetRequest',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('request_token', models.CharField(max_length=100, unique=True, verbose_name='Tokeni')),
                ('is_used', models.BooleanField(default=False, verbose_name='Imetumika?')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Tarehe ya ombi')),
                ('expires_at', models.DateTimeField(verbose_name='Inaisha lini')),
                ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app.group', verbose_name='Kikundi')),
                ('member', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reset_requests', to='app.member', verbose_name='Mwanachama')),
            ],
            options={
                'verbose_name': 'Ombi la kubadilisha PIN',
                'verbose_name_plural': 'Maombi ya kubadilisha PIN',
            },
        ),
        migrations.CreateModel(
            name='GroupLeader',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('appointed_at', models.DateTimeField(auto_now_add=True, verbose_name='Tarehe ya kuteuliwa')),
                ('is_active', models.BooleanField(default=True, verbose_name='Bado ni kiongozi?')),
                ('appointed_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='appointed_leaders', to=settings.AUTH_USER_MODEL, verbose_name='Aliyemteua')),
                ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='group_leaders', to='app.group', verbose_name='Kikundi')),
                ('leader', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='group_roles', to=settings.AUTH_USER_MODEL, verbose_name='Kiongozi')),
                ('position', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='app.position', verbose_name='Cheo')),
            ],
            options={
                'verbose_name': 'Kiongozi wa kikundi',
                'verbose_name_plural': 'Viongozi wa vikundi',
                'ordering': ['group', 'position__level'],
                'unique_together': {('group', 'leader')},
            },
        ),
    ]
