Skip to content

Projekt aplikacji Zarządzanie JOBEM/Własną firmą

Wymagania funkcjonalne

  1. Tworzenie firmy:

    • Gracze mogą zakładać własne firmy, wybierając nazwę, typ działalności oraz rejestrować się w systemie.
  2. Zarządzanie pracownikami:

    • Właściciele firm mogą zatrudniać i zwalniać pracowników.
    • Ustalanie rang i ról (np. Menedżer, Pracownik).
    • Monitorowanie obecności i aktywności pracowników.
  3. Zarządzanie finansami firmy:

    • Przegląd przychodów i wydatków.
    • Wypłaty dla pracowników (ustalanie pensji).
    • Możliwość dodawania faktur i transakcji.
  4. Zarządzanie zasobami firmy:

    • Ewidencja pojazdów, sprzętu i materiałów.
    • Przypisywanie zasobów pracownikom.
  5. Tworzenie zleceń i raportów:

    • Możliwość dodawania zleceń dla pracowników.
    • Generowanie raportów z wykonanych zleceń.
  6. Panel pracownika:

    • Pracownicy mają dostęp do swojego grafiku, listy zleceń i wyników pracy.

Architektura aplikacji

Struktura bazy danych

Tabela: tablet_Companies

PoleTypOpis
idINTKlucz główny
owner_idINTID właściciela firmy
nameVARCHAR(100)Nazwa firmy
typeVARCHAR(50)Typ działalności
created_atDATETIMEData założenia firmy

Tabela: tablet_Employees

PoleTypOpis
idINTKlucz główny
company_idINTID firmy
user_idINTID gracza
roleVARCHAR(50)Rola pracownika (np. Menedżer)
salaryINTWynagrodzenie

Tabela: tablet_Transactions

PoleTypOpis
idINTKlucz główny
company_idINTID firmy
typeVARCHAR(50)Typ transakcji (przychód/wydatek)
amountINTKwota
descriptionTEXTOpis transakcji
created_atDATETIMEData transakcji

Tabela: tablet_Tasks

PoleTypOpis
idINTKlucz główny
company_idINTID firmy
employee_idINTID pracownika wykonującego
descriptionTEXTOpis zlecenia
statusVARCHAR(50)Status zlecenia (np. W toku, Zakończone)
created_atDATETIMEData utworzenia zlecenia

Relacje:

  • tablet_Companies.owner_id to klucz obcy odnoszący się do TabletAccounts.id.
  • tablet_Employees.company_id to klucz obcy odnoszący się do tablet_Companies.id.
  • tablet_Transactions.company_id to klucz obcy odnoszący się do tablet_Companies.id.
  • tablet_Tasks.company_id i tablet_Tasks.employee_id odnoszą się do tablet_Companies.id oraz tablet_Employees.id.

Backend w Lua

Funkcje serwera:

  1. Tworzenie firmy:
lua
RegisterServerEvent('company:createCompany')
AddEventHandler('company:createCompany', function(name, type)
    local owner_id = source
    local query = [[INSERT INTO tablet_Companies (owner_id, name, type, created_at) VALUES (?, ?, ?, NOW())]]
    MySQL.insert.await(query, {owner_id, name, type})
end)
  1. Dodawanie pracownika:
lua
RegisterServerEvent('company:addEmployee')
AddEventHandler('company:addEmployee', function(company_id, user_id, role, salary)
    local query = [[INSERT INTO tablet_Employees (company_id, user_id, role, salary) VALUES (?, ?, ?, ?)]]
    MySQL.insert.await(query, {company_id, user_id, role, salary})
end)
  1. Zarządzanie finansami:
lua
RegisterServerEvent('company:addTransaction')
AddEventHandler('company:addTransaction', function(company_id, type, amount, description)
    local query = [[INSERT INTO tablet_Transactions (company_id, type, amount, description, created_at) VALUES (?, ?, ?, ?, NOW())]]
    MySQL.insert.await(query, {company_id, type, amount, description})
end)
  1. Tworzenie zlecenia:
lua
RegisterServerEvent('company:createTask')
AddEventHandler('company:createTask', function(company_id, employee_id, description)
    local query = [[INSERT INTO tablet_Tasks (company_id, employee_id, description, status, created_at) VALUES (?, ?, ?, 'W toku', NOW())]]
    MySQL.insert.await(query, {company_id, employee_id, description})
end)
  1. Edycja zlecenia:
lua
RegisterServerEvent('company:updateTaskStatus')
AddEventHandler('company:updateTaskStatus', function(task_id, status)
    local query = [[UPDATE tablet_Tasks SET status = ? WHERE id = ?]]
    MySQL.update.await(query, {status, task_id})
end)

Frontend (Vue.js)

Widoki:

  1. Panel właściciela firmy:

    • Lista pracowników z opcjami zarządzania (awans, zwolnienie, ustalanie pensji).
    • Podsumowanie finansowe firmy.
  2. Panel pracownika:

    • Lista przydzielonych zleceń.
    • Status wynagrodzenia.
  3. Formularze:

    • Tworzenie nowej firmy.
    • Dodawanie nowych transakcji i zleceń.

Komponenty wspólne:

  • Modal do potwierdzania akcji (np. zwolnienie pracownika).
  • Powiadomienia o nowych zadaniach lub zmianach w firmie.

Mechanizmy wymiany danych

  1. Autoryzacja użytkowników:

    • Token JWT przesyłany z każdym zapytaniem do API.
  2. Ładowanie danych:

    • Dane firmy i pracowników ładowane są na żądanie podczas otwierania panelu zarządzania.
  3. Powiadomienia:

    • Powiadomienia w czasie rzeczywistym o nowych zleceniach lub zmianach w strukturze firmy.