diff --git a/app.py b/app.py index a6ea346..c21063b 100644 --- a/app.py +++ b/app.py @@ -6124,8 +6124,8 @@ def employees(): per_page = 20 # Number of employees per page # Build query based on search - query = Employee.query - + query = Employee.query.outerjoin(Project, Employee.contractId == Project.id) + if search: search_pattern = f"%{search}%" query = query.filter( @@ -6136,7 +6136,7 @@ def employees(): Employee.id.like(search_pattern) ) ) - + # Order by first name, then last name query = query.order_by(Employee.firstName, Employee.lastName) diff --git a/models/employee.py b/models/employee.py index 4df72d0..eef4c86 100644 --- a/models/employee.py +++ b/models/employee.py @@ -69,4 +69,13 @@ class Employee(base.db.Model): 'title': self.title, 'display_title': self.display_title, 'contractId': self.contractId - } \ No newline at end of file + } + + project = base.db.relationship('Project', foreign_keys=[contractId], + primaryjoin="Employee.contractId == Project.id", + backref='employees') + + @property + def contract_name(self): + """Get project name from contractId""" + return self.project.name if self.project else f"Contract {self.contractId}" \ No newline at end of file diff --git a/static/css/employees.css b/static/css/employees.css index 2a2a2e7..3e96745 100644 --- a/static/css/employees.css +++ b/static/css/employees.css @@ -375,7 +375,7 @@ body.has-sidebar .employees-page { font-size: 0.875rem; } -.contract-id .contract-badge { +.contract .contract-badge { display: inline-flex; align-items: center; padding: 0.25rem 0.75rem; diff --git a/templates/employees.html b/templates/employees.html index 92fb1e9..5322fe0 100644 --- a/templates/employees.html +++ b/templates/employees.html @@ -128,7 +128,7 @@ extra_head %} Employee ID Name Job Title - Contract ID + Contract Actions @@ -163,8 +163,8 @@ extra_head %} {% endif %} - - {{ employee.contractId }} + + {{ employee.contract_name }}