Skip to content

Latest commit

 

History

History
230 lines (155 loc) · 10.9 KB

README_fa.md

File metadata and controls

230 lines (155 loc) · 10.9 KB

گازبان

گازبان یک پروژه کامل شامل بک‌اند و اپلیکیشن موبایل است که با استفاده از فریمورک Django و فلاتر توسعه یافته است. این پروژه برای مدیریت افرادی که به عنوان قرائت‌کننده شماره کنتورهای گاز فعالیت می‌کنند، طراحی شده است. سیستم امکان مدیریت مناطق، ثبت و پیگیری مرخصی‌ها، و ارسال و مدیریت اطلاعیه‌ها را فراهم می‌کند. همچنین، اطلاعات مرتبط با هر فرد قرائت‌کننده و مناطق فعالیت وی به دقت مدیریت می‌شود.

ساختار پروژه

این ریپازیتوری شامل هر دو بخش بک‌اند و اپلیکیشن موبایل است. بخش بک‌اند با استفاده از Django توسعه یافته و وظیفه مدیریت داده‌ها و عملیات سمت سرور را بر عهده دارد. اپلیکیشن موبایل نیز با فلاتر توسعه یافته و به قرائت‌کنندگان اجازه می‌دهد تا به اطلاعات خود دسترسی داشته باشند و عملیات مختلفی از جمله درخواست مرخصی و مشاهده اطلاعیه‌ها را انجام دهند.

ویژگی‌ها

  • مدیریت مناطق فعالیت: امکان تعیین و مشاهده مناطق کاری برای هر قرائت‌کننده.
  • ثبت و پیگیری مرخصی: قابلیت ثبت درخواست مرخصی و پیگیری وضعیت آن توسط قرائت‌کنندگان.
  • ارسال و مدیریت اطلاعیه‌ها: ارسال و دریافت اطلاعیه‌های مهم به قرائت‌کنندگان.
  • اپلیکیشن موبایل Flutter: اپلیکیشنی که به قرائت‌کنندگان اجازه می‌دهد به آسانی با سیستم بک‌اند ارتباط برقرار کرده و عملیات مورد نیاز خود را انجام دهند.
  • یکپارچگی کامل در یک ریپازیتوری: هر دو بخش بک‌اند (Django) و اپلیکیشن موبایل (Flutter) در این ریپازیتوری قرار دارند.

مدل‌ها (جداول)

GasEmployee (گازبان)

کلاس GasEmployee برای ذخیره اطلاعات قرائت‌کنندگان گاز استفاده می‌شود. این کلاس شامل اطلاعات شخصی، منطقه فعالیت و روستاهای تحت پوشش هر گازبان است. همچنین اطلاعات مرتبط با معین‌های گازبان نیز در این کلاس ذخیره می‌شود.

Representative (نماینده)

کلاس Representative برای ذخیره اطلاعات نمایندگان گاز استفاده می‌شود. هر نماینده شامل اطلاعات فردی، کد ملی، شماره پیمان و منطقه فعالیت خود است.

Rescuer (امدادگر)

کلاس Rescuer برای ذخیره اطلاعات امدادگران استفاده می‌شود. هر امدادگر دارای اطلاعات شخصی، کد منطقه فعالیت و نشست کاربر است.

HeadCity (رئیس شهر)

کلاس HeadCity برای مدیریت اطلاعات رؤسای شهرها استفاده می‌شود. این کلاس شامل مشخصات فردی رئیس و کدهای شهر و منطقه‌ای است که در آن فعالیت دارد.

HeadRelief (رئیس امداد)

کلاس HeadRelief برای ذخیره اطلاعات رؤسای امداد استفاده می‌شود. این کلاس شامل مشخصات فردی و شهرهای تحت پوشش رئیس امداد است.

HeadArea (رئیس منطقه)

کلاس HeadArea برای ذخیره اطلاعات رؤسای مناطق مختلف استفاده می‌شود. هر رئیس منطقه دارای مشخصات فردی و اطلاعات منطقه فعالیت خود است.

DailyRequest (درخواست روزانه)

کلاس DailyRequest برای ثبت و مدیریت درخواست‌های مرخصی روزانه گازبانان استفاده می‌شود. درخواست‌ها شامل تأییدیه‌های معین، نماینده و رئیس شهر یا رئیس امداد هستند.

HourlyRequest (درخواست ساعتی)

کلاس HourlyRequest برای ثبت و مدیریت درخواست‌های مرخصی ساعتی گازبانان استفاده می‌شود. درخواست‌های ساعتی نیز نیاز به تأیید معین و نماینده دارند.

City (شهر)

کلاس City برای ذخیره اطلاعات شهرها استفاده می‌شود. هر شهر شامل یک کد یکتا، نام و منطقه مربوطه است.

Village (روستا)

کلاس Village برای ذخیره اطلاعات روستاها استفاده می‌شود. هر روستا مرتبط با یک شهر است و شامل نام و کد روستا است.

Announcement (اطلاعیه)

کلاس Announcement برای ثبت اطلاعیه‌های مربوط به مناطق مختلف استفاده می‌شود. اطلاعیه‌ها می‌توانند دارای عنوان، محتوا، اولویت و تصویر باشند.


بخش بک‌اند

وابستگی‌های پروژه

پکیج‌های زیر در این پروژه استفاده شده‌اند:

  • Django==5.0.1
  • django-cors-headers==4.3.0
  • django-jalali==6.0.1
  • djangorestframework==3.14.0
  • jdatetime==5.0.0

نصب و راه‌اندازی

برای راه‌اندازی پروژه، مراحل زیر را دنبال کنید:

  1. این مخزن را کلون کنید:

    git https://github.com/Bestsenator/Gazban.git
  2. وارد دایرکتوری پروژه شوید:

    cd Web
  3. یک محیط مجازی پایتون ایجاد کنید:

    python -m venv venv
  4. محیط مجازی را فعال کنید:

    • در سیستم‌عامل ویندوز:
      venv\Scripts\activate
    • در سیستم‌عامل مک یا لینوکس:
      source venv/bin/activate
  5. وابستگی‌های پروژه را نصب کنید:

    pip install -r req.txt
  6. فایل .env را براساس نمونه .env.example تنظیم کنید.

  7. مهاجرت‌های پایگاه داده را اعمال کنید:

    python manage.py migrate
  8. سرور را اجرا کنید:

    python manage.py runserver
  9. پروژه اکنون در http://localhost:8000 در دسترس است.


بخش اپلیکیشن

پیش‌نیازها

برای اجرای این پروژه نیاز به نصب نرم‌افزارها و ابزارهای زیر دارید:

وابستگی‌های پروژه

پکیج‌های زیر در این پروژه استفاده شده‌اند و در فایل pubspec.yaml تعریف شده‌اند

نصب و راه‌اندازی

برای راه‌اندازی پروژه، مراحل زیر را دنبال کنید:

  1. کلون کردن مخزن:

    git clone https://github.com/Bestsenator/Gazban.git
  2. ورود به دایرکتوری پروژه:

    cd app/
  3. نصب وابستگی‌ها:

    flutter pub get
  4. تنظیمات لازم برای پروژه:

    تنظیمات اطلاعات نماینده و اپلیکیشن:

    فایل static_data.dart در مسیر app/lib/Data/static_data.dart را ویرایش کرده و مقادیر زیر را تنظیم کنید:

    • نسخه اپلیکیشن
    • کد نماینده
    • نام نماینده
    • API Key
    • آدرس سرور
    • تصویر نماینده

    تنظیم نام اپلیکیشن:

    نام اپلیکیشن را در فایل AndroidManifest.xml واقع در HamiSho/candidate/android/app/src/main/AndroidManifest.xml تنظیم کنید.

    تنظیم اپلیکیشن آیدی:

    اپلیکیشن آیدی را در فایل build.gradle واقع در HamiSho/candidate/android/app/build.gradle تنظیم کنید.

  5. اجرای اپلیکیشن:

    flutter run

API Endpoints

لیستی از endpoint های موجود در API:

  • POST /checkSession/
    بررسی وضعیت نشست کاربر و شناسایی نوع کاربر.

  • POST /login/
    ورود کاربر با استفاده از نام کاربری و رمز عبور.

  • POST /addRequest/
    افزودن درخواست مرخصی ساعتی یا روزانه.

  • POST /acceptRequest/
    پذیرش درخواست مرخصی توسط کاربر.

  • POST /getListCharacter/
    دریافت لیست کاراکترها بر اساس کد منطقه و نوع کاربر.

  • POST /deleteCharacter/
    حذف کاراکترها بر اساس کد مشخص شده.

  • POST /editCharacterInfo/
    ویرایش اطلاعات یک شخصیت با توجه به نوع شخصیت (کارمند گاز، نماینده، رئیس شهر، رئیس امداد) و کدهای مربوطه.

  • POST /addPerson/
    افزودن یک شخصیت جدید به سیستم با توجه به نوع شخصیت و اطلاعات مربوطه.

  • POST /getMList/
    دریافت لیست کارمندان تحت مدیریت کارمند گاز با کد مشخص.

  • POST /getReportRequest/
    دریافت گزارش درخواست‌ها بر اساس تاریخ‌های مشخص و کد کارمند گاز.

  • POST /getLocation/
    دریافت اطلاعات مربوط به روستاها و شهرها بر اساس کد منطقه.

  • POST /getAnnouncement/
    دریافت اطلاعات اعلان‌ها بر اساس کد منطقه.

  • POST /addAnnouncement/
    افزودن اعلان جدید به سیستم با اطلاعات مربوطه مانند عنوان، محتوا، اولویت و تصویر (اختیاری).

مشارکت

اگر مایل به مشارکت در این پروژه هستید، می‌توانید:

  1. این مخزن را فورک کنید.
  2. یک شاخه جدید برای ویژگی یا باگ جدید ایجاد کنید (git checkout -b feature/AmazingFeature).
  3. تغییرات خود را کامیت کنید (git commit -m 'Add some AmazingFeature').
  4. شاخه خود را پوش کنید (git push origin feature/AmazingFeature).
  5. یک Pull Request باز کنید.