diff --git a/backend/api/migrations/0003_alter_userprofile_account_type.py b/backend/api/migrations/0003_alter_userprofile_account_type.py new file mode 100644 index 0000000..8890f8d --- /dev/null +++ b/backend/api/migrations/0003_alter_userprofile_account_type.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.1 on 2025-05-19 10:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0002_userprofile_account_type_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='userprofile', + name='account_type', + field=models.CharField(choices=[('lite', 'Lite'), ('standart', 'Standart'), ('premium', 'Premium')], default='free', verbose_name='Тип аккаунта'), + ), + ] diff --git a/backend/api/migrations/0004_alter_userprofile_account_type.py b/backend/api/migrations/0004_alter_userprofile_account_type.py new file mode 100644 index 0000000..4386733 --- /dev/null +++ b/backend/api/migrations/0004_alter_userprofile_account_type.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.1 on 2025-05-19 10:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0003_alter_userprofile_account_type'), + ] + + operations = [ + migrations.AlterField( + model_name='userprofile', + name='account_type', + field=models.CharField(choices=[('lite', 'Lite'), ('standart', 'Standart'), ('premium', 'Premium')], default='lite', verbose_name='Тип аккаунта'), + ), + ] diff --git a/backend/api/models.py b/backend/api/models.py index 11f2a8a..542ba56 100644 --- a/backend/api/models.py +++ b/backend/api/models.py @@ -5,7 +5,7 @@ import uuid class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) - account_type = models.CharField(choices=account_types, default='free') + account_type = models.CharField(choices=account_types, default='lite', verbose_name="Тип аккаунта") is_active = models.BooleanField(default=True) phone_number = models.CharField(max_length=13, verbose_name="Номер телефона") birthday = models.DateField(null=True, blank=True, verbose_name="Дата рождения") diff --git a/backend/routes/constants/account_types.py b/backend/routes/constants/account_types.py index 9721d03..5203488 100644 --- a/backend/routes/constants/account_types.py +++ b/backend/routes/constants/account_types.py @@ -1,5 +1,5 @@ account_types = [ - ("free", "Free"), ("lite", "Lite"), - ('pro', "Pro"), + ("standart", "Standart"), + ('premium', "Premium"), ] \ No newline at end of file diff --git a/frontend/app/(urls)/account/layout.tsx b/frontend/app/(urls)/account/layout.tsx index 954e8b0..db07a4f 100644 --- a/frontend/app/(urls)/account/layout.tsx +++ b/frontend/app/(urls)/account/layout.tsx @@ -5,8 +5,10 @@ import { useRouter } from 'next/navigation' import AccountSidebar from '@/components/AccountSidebar' import Loader from '@/components/ui/Loader' import { RiUser3Line } from 'react-icons/ri' +import { FaRoute } from 'react-icons/fa' +import { GoPackageDependents, GoPackageDependencies } from 'react-icons/go' +import { MdOutlinePayments } from 'react-icons/md' import { CgNotes } from 'react-icons/cg' -import { FaStar } from 'react-icons/fa6' import useUserStore from '@/app/store/userStore' export default function AccountLayout({ @@ -37,7 +39,18 @@ export default function AccountLayout({ const userNavigation = [ { name: 'Профиль', href: '/account', icon: RiUser3Line }, - { name: 'Мои маршруты', href: '/account/routes', icon: CgNotes }, + { name: 'Мои маршруты', href: '/account/routes', icon: FaRoute }, + { + name: 'Отправить посылку', + href: '/account/create_as_sender', + icon: GoPackageDependents, + }, + { + name: 'Перевезти посылку', + href: '/account/create_as_deliveler', + icon: GoPackageDependencies, + }, + { name: 'Тарифы', href: '/account/payments', icon: MdOutlinePayments }, ] return ( diff --git a/frontend/app/types/index.ts b/frontend/app/types/index.ts index 1a805a1..bb202c7 100644 --- a/frontend/app/types/index.ts +++ b/frontend/app/types/index.ts @@ -21,6 +21,8 @@ export interface ButtonProps { onClick?: () => void className?: string text?: string + leftIcon?: React.ReactNode + rightIcon?: React.ReactNode type?: 'button' | 'submit' | 'reset' } diff --git a/frontend/components/AccountSidebar.tsx b/frontend/components/AccountSidebar.tsx index 86aa89e..81ad7be 100644 --- a/frontend/components/AccountSidebar.tsx +++ b/frontend/components/AccountSidebar.tsx @@ -21,11 +21,11 @@ const AccountSidebar: React.FC = ({ const getAccountTypeStyles = (accountType: string) => { switch (accountType.toLowerCase()) { - case 'free': - return 'bg-gray-400 text-white' case 'lite': - return 'bg-orage/70 text-white' - case 'pro': + return 'bg-gray-400 text-white' + case 'standart': + return 'bg-orange/70 text-white' + case 'premium': return 'bg-blue-300' default: return 'bg-gray-200' diff --git a/frontend/components/Logout.tsx b/frontend/components/Logout.tsx index dece582..5cd31db 100644 --- a/frontend/components/Logout.tsx +++ b/frontend/components/Logout.tsx @@ -34,6 +34,7 @@ const Logout = () => { return ( ) }