Index: src/main/java/finki/db/tasty_tabs/entity/EmployeeType.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/EmployeeType.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
+++ src/main/java/finki/db/tasty_tabs/entity/EmployeeType.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
@@ -0,0 +1,5 @@
+package finki.db.tasty_tabs.entity;
+
+public enum EmployeeType {
+    MANAGER, FRONT_STAFF, BACK_STAFF
+}
Index: src/main/java/finki/db/tasty_tabs/repository/BackStaffRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/BackStaffRepository.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
+++ src/main/java/finki/db/tasty_tabs/repository/BackStaffRepository.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
@@ -0,0 +1,7 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.BackStaff;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface BackStaffRepository extends JpaRepository<BackStaff, Long> {
+}
Index: src/main/java/finki/db/tasty_tabs/repository/StaffRoleRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/StaffRoleRepository.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
+++ src/main/java/finki/db/tasty_tabs/repository/StaffRoleRepository.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.StaffRole;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface StaffRoleRepository extends JpaRepository<StaffRole, Long> {} // Added
Index: src/main/java/finki/db/tasty_tabs/repository/UserRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/UserRepository.java	(revision 95ca050f225f9df7bb5a7f185c1e88a703282ff4)
+++ src/main/java/finki/db/tasty_tabs/repository/UserRepository.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
@@ -8,3 +8,5 @@
 public interface UserRepository extends JpaRepository<User, Long> {
     Optional<User> findByEmail(String email);
+
+    boolean existsByEmail(String email);
 }
Index: src/main/java/finki/db/tasty_tabs/service/EmployeeService.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/service/EmployeeService.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
+++ src/main/java/finki/db/tasty_tabs/service/EmployeeService.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
@@ -0,0 +1,8 @@
+package finki.db.tasty_tabs.service;
+
+import finki.db.tasty_tabs.entity.Employee;
+import finki.db.tasty_tabs.web.dto.CreateEmployeeRequest;
+
+public interface EmployeeService { // New Service
+    Employee createEmployee(CreateEmployeeRequest request);
+}
Index: src/main/java/finki/db/tasty_tabs/service/impl/EmployeeServiceImpl.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/service/impl/EmployeeServiceImpl.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
+++ src/main/java/finki/db/tasty_tabs/service/impl/EmployeeServiceImpl.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
@@ -0,0 +1,82 @@
+package finki.db.tasty_tabs.service.impl;
+
+import finki.db.tasty_tabs.entity.*;
+import finki.db.tasty_tabs.repository.*;
+import finki.db.tasty_tabs.service.EmployeeService;
+import finki.db.tasty_tabs.web.dto.CreateEmployeeRequest;
+import jakarta.persistence.EntityNotFoundException;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import static finki.db.tasty_tabs.entity.EmployeeType.*;
+
+@Service
+@Transactional
+class EmployeeServiceImpl implements EmployeeService { // New Service Implementation
+
+    private final UserRepository userRepository;
+    private final ManagerRepository managerRepository;
+    private final FrontStaffRepository frontStaffRepository;
+    private final BackStaffRepository backStaffRepository;
+    private final StaffRoleRepository staffRoleRepository;
+    private final PasswordEncoder passwordEncoder;
+
+    public EmployeeServiceImpl(UserRepository userRepository, ManagerRepository managerRepository, FrontStaffRepository frontStaffRepository, BackStaffRepository backStaffRepository, StaffRoleRepository staffRoleRepository, PasswordEncoder passwordEncoder) {
+        this.userRepository = userRepository;
+        this.managerRepository = managerRepository;
+        this.frontStaffRepository = frontStaffRepository;
+        this.backStaffRepository = backStaffRepository;
+        this.staffRoleRepository = staffRoleRepository;
+        this.passwordEncoder = passwordEncoder;
+    }
+
+    @Override
+    public Employee createEmployee(CreateEmployeeRequest request) {
+        // In a real app, you'd check if email is unique and hash the password
+        if (userRepository.existsByEmail(request.email())) {
+             throw new IllegalArgumentException("Employee with email " + request.email() + " already exists.");
+        }
+
+        Employee employee;
+
+        switch (request.employeeType()) {
+            case MANAGER:
+                Manager manager = new Manager();
+                setCommonEmployeeFields(manager, request);
+                employee = managerRepository.save(manager);
+                break;
+            case FRONT_STAFF:
+                FrontStaff frontStaff = new FrontStaff();
+                setCommonEmployeeFields(frontStaff, request);
+                StaffRole frontStaffRole = staffRoleRepository.findById(request.staffRoleId())
+                        .orElseThrow(() -> new EntityNotFoundException("StaffRole not found with id: " + request.staffRoleId()));
+                frontStaff.setStaffRole(frontStaffRole);
+                frontStaff.setTipPercent(request.tipPercent());
+                employee = frontStaffRepository.save(frontStaff);
+                break;
+            case BACK_STAFF:
+                BackStaff backStaff = new BackStaff();
+                setCommonEmployeeFields(backStaff, request);
+                StaffRole backStaffRole = staffRoleRepository.findById(request.staffRoleId())
+                        .orElseThrow(() -> new EntityNotFoundException("StaffRole not found with id: " + request.staffRoleId()));
+                backStaff.setStaffRole(backStaffRole);
+                employee = backStaffRepository.save(backStaff);
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid employee type: " + request.email());
+        }
+
+        return employee;
+    }
+
+    private void setCommonEmployeeFields(Employee employee, CreateEmployeeRequest request) {
+        employee.setEmail(request.email());
+        employee.setPassword(passwordEncoder.encode(request.password()));
+        employee.setStreet(request.street());
+        employee.setCity(request.city());
+        employee.setPhoneNumber(request.phoneNumber());
+        employee.setNetSalary(request.netSalary());
+        employee.setGrossSalary(request.grossSalary());
+    }
+}
Index: src/main/java/finki/db/tasty_tabs/web/controllers/EmployeeController.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/controllers/EmployeeController.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
+++ src/main/java/finki/db/tasty_tabs/web/controllers/EmployeeController.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
@@ -0,0 +1,28 @@
+package finki.db.tasty_tabs.web.controllers;
+
+import finki.db.tasty_tabs.entity.Employee;
+import finki.db.tasty_tabs.service.EmployeeService;
+import finki.db.tasty_tabs.web.dto.CreateEmployeeRequest;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/employees") // New Controller
+class EmployeeController {
+
+    private final EmployeeService employeeService;
+
+    public EmployeeController(EmployeeService employeeService) {
+        this.employeeService = employeeService;
+    }
+
+    // This endpoint would be secured in a real application to ensure only managers can access it.
+    @PostMapping("/manager/create")
+    @PreAuthorize("hasRole('MANAGER')")
+    public ResponseEntity<Employee> createEmployee(@RequestBody CreateEmployeeRequest request) {
+        Employee newEmployee = employeeService.createEmployee(request);
+        return ResponseEntity.status(HttpStatus.CREATED).body(newEmployee);
+    }
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/CreateEmployeeRequest.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/CreateEmployeeRequest.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
+++ src/main/java/finki/db/tasty_tabs/web/dto/CreateEmployeeRequest.java	(revision c825d3a996ffbd00fc5876f944c5c8dc15f470c7)
@@ -0,0 +1,17 @@
+package finki.db.tasty_tabs.web.dto;
+
+import finki.db.tasty_tabs.entity.EmployeeType;
+
+public record CreateEmployeeRequest(
+        String email,
+        String password,
+        String street,
+        String city,
+        String phoneNumber,
+        Double netSalary,
+        Double grossSalary,
+        EmployeeType employeeType,
+        Long staffRoleId, // Only for FrontStaff/BackStaff
+        Double tipPercent // Only for FrontStaff
+) {
+}
