Skip to content

Commit

Permalink
Working on frontend
Browse files Browse the repository at this point in the history
  • Loading branch information
laistdomiciano committed Sep 12, 2024
1 parent 5e33bde commit 393ed28
Show file tree
Hide file tree
Showing 10 changed files with 478 additions and 171 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
venv
USERNAME = '[email protected]'
PASSWORD = '2206'
SECRET_KEY = 'mysupersecretkey'
93 changes: 93 additions & 0 deletions frontend/frontend_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,99 @@ def logout():
def dashboard():
return render_template('dashboard.html', user=session.get('user'))

@app.route('/create_employee', methods=['GET', 'POST'])
@login_required
def create_employee():
if request.method == 'POST':
# Collect the form data from the HTML form
form_data = {
'employee_name': request.form.get('employee_name'),
'company_name': request.form.get('company_name'),
'start_date': request.form.get('start_date'),
'job_title': request.form.get('job_title'),
'job_responsibilities': request.form.get('job_responsibilities'),
'salary': request.form.get('salary'),
'benefits': request.form.get('benefits'),
'work_hours': request.form.get('work_hours'),
'leave_days': request.form.get('leave_days'),
'notice_period': request.form.get('notice_period'),
'hourly_rate': request.form.get('hourly_rate'),
'number_of_hours': request.form.get('number_of_hours'),
'description_of_services': request.form.get('description_of_services'),
'fee_amount': request.form.get('fee_amount'),
'payment_schedule': request.form.get('payment_schedule'),
'ownership_terms': request.form.get('ownership_terms'),
'company_representative': request.form.get('company_representative'),
'client_representative': request.form.get('client_representative')
}

# Prepare the headers, including the token for authorization
headers = {
'Authorization': f"Bearer {session.get('access_token')}"
}

# Send a POST request to the backend API to create the employee
response = requests.post(f"{BACKEND_API_URL}/create_employee", json=form_data, headers=headers)
result = response.json()

if response.status_code == 201:
# If employee creation was successful, flash a success message and redirect to dashboard
flash(f"Employee {form_data['employee_name']} created successfully.", 'success')
return redirect(url_for('dashboard'))
else:
# If there was an error, render the form again and display the error message
error = result.get('error', 'An error occurred while creating the employee.')
return render_template('create_employee.html', error=error)

# If it's a GET request, simply render the create_employee form
return render_template('create_employee.html')



@app.route('/employees_wo_contract', methods=['GET'])
@login_required
def employees_wo_contract():
headers = {
'Authorization': f"Bearer {session.get('access_token')}"
}

response = requests.get(f"{BACKEND_API_URL}/employees_wo_contract", headers=headers)
employees = response.json()

if response.status_code == 200:
return render_template('employees_wo_contract.html', employees=employees)
else:
error = employees.get('error', 'An error occurred while retrieving employees.')
return render_template('employees_wo_contract.html', error=error)


@app.route('/update_user/<int:user_id>', methods=['GET', 'POST'])
@login_required
def update_user(user_id):
if request.method == 'POST':
form_data = {
'name': request.form.get('name'),
'email': request.form.get('email'),
'password': request.form.get('password') # Optional
}

headers = {
'Authorization': f"Bearer {session.get('access_token')}"
}

response = requests.put(f"{BACKEND_API_URL}/update_user/{user_id}", json=form_data, headers=headers)
result = response.json()

if response.status_code == 200:
flash("User information updated successfully.")
return redirect(url_for('dashboard'))
else:
error = result.get('error', 'An error occurred while updating the user.')
return render_template('update_user.html', error=error, user=session.get('user'))

return render_template('update_user.html', user=session.get('user'))


if __name__ == "__main__":
app.run(host="0.0.0.0", port=5001)

Expand Down
33 changes: 33 additions & 0 deletions frontend/public/create_employee.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{% extends "home.html" %}

{% block content %}
<div class="row justify-content-center">
<div class="col-md-8 col-lg-6">
<h2 class="mb-4">Create New Employee</h2>
<form id="create-employee-form" action="/create_employee" method="post" class="needs-validation" novalidate>
<div class="mb-3">
<label for="employee_name" class="form-label">Employee Name</label>
<input type="text" id="employee_name" name="employee_name" class="form-control" required>
<div class="invalid-feedback">
Please enter the employee name.
</div>
</div>
<div class="mb-3">
<label for="company_name" class="form-label">Company Name</label>
<input type="text" id="company_name" name="company_name" class="form-control" required>
<div class="invalid-feedback">
Please enter the company name.
</div>
</div>
<!-- Add all required fields similar to the above two -->
<button type="submit" class="btn btn-success w-100">Create Employee</button>
</form>
<p class="mt-3 text-center"><a href="/dashboard">Back to Dashboard</a></p>
{% if error %}
<div class="alert alert-danger mt-3" role="alert">
{{ error }}
</div>
{% endif %}
</div>
</div>
{% endblock %}
187 changes: 187 additions & 0 deletions frontend/public/employees_wo_contract.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
{% extends "home.html" %}

{% block content %}
<div class="row justify-content-center">
<div class="col-md-8 col-lg-6">
<h2 class="mb-4">Create New Employee</h2>
<form id="create-employee-form" action="/create_employee" method="post" class="needs-validation" novalidate>

<!-- Employee Name -->
<div class="mb-3">
<label for="employee_name" class="form-label">Employee Name</label>
<input type="text" id="employee_name" name="employee_name" class="form-control" required>
<div class="invalid-feedback">
Please enter the employee name.
</div>
</div>

<!-- Company Name -->
<div class="mb-3">
<label for="company_name" class="form-label">Company Name</label>
<input type="text" id="company_name" name="company_name" class="form-control" required>
<div class="invalid-feedback">
Please enter the company name.
</div>
</div>

<!-- Start Date -->
<div class="mb-3">
<label for="start_date" class="form-label">Start Date</label>
<input type="date" id="start_date" name="start_date" class="form-control" required>
<div class="invalid-feedback">
Please enter a valid start date.
</div>
</div>

<!-- Job Title -->
<div class="mb-3">
<label for="job_title" class="form-label">Job Title</label>
<input type="text" id="job_title" name="job_title" class="form-control" required>
<div class="invalid-feedback">
Please enter the job title.
</div>
</div>

<!-- Job Responsibilities -->
<div class="mb-3">
<label for="job_responsibilities" class="form-label">Job Responsibilities</label>
<textarea id="job_responsibilities" name="job_responsibilities" class="form-control" rows="4" required></textarea>
<div class="invalid-feedback">
Please enter the job responsibilities.
</div>
</div>

<!-- Salary -->
<div class="mb-3">
<label for="salary" class="form-label">Salary</label>
<input type="number" step="0.01" id="salary" name="salary" class="form-control" required>
<div class="invalid-feedback">
Please enter the salary.
</div>
</div>

<!-- Benefits -->
<div class="mb-3">
<label for="benefits" class="form-label">Benefits</label>
<textarea id="benefits" name="benefits" class="form-control" rows="2"></textarea>
<div class="invalid-feedback">
Please enter any benefits.
</div>
</div>

<!-- Work Hours -->
<div class="mb-3">
<label for="work_hours" class="form-label">Work Hours</label>
<input type="text" id="work_hours" name="work_hours" class="form-control" required>
<div class="invalid-feedback">
Please enter the work hours.
</div>
</div>

<!-- Leave Days -->
<div class="mb-3">
<label for="leave_days" class="form-label">Leave Days</label>
<input type="number" id="leave_days" name="leave_days" class="form-control" required>
<div class="invalid-feedback">
Please enter the number of leave days.
</div>
</div>

<!-- Notice Period -->
<div class="mb-3">
<label for="notice_period" class="form-label">Notice Period</label>
<input type="text" id="notice_period" name="notice_period" class="form-control" required>
<div class="invalid-feedback">
Please enter the notice period.
</div>
</div>

<!-- Hourly Rate -->
<div class="mb-3">
<label for="hourly_rate" class="form-label">Hourly Rate</label>
<input type="number" step="0.01" id="hourly_rate" name="hourly_rate" class="form-control" required>
<div class="invalid-feedback">
Please enter the hourly rate.
</div>
</div>

<!-- Number of Hours -->
<div class="mb-3">
<label for="number_of_hours" class="form-label">Number of Hours</label>
<input type="number" step="0.01" id="number_of_hours" name="number_of_hours" class="form-control" required>
<div class="invalid-feedback">
Please enter the number of hours.
</div>
</div>

<!-- Description of Services -->
<div class="mb-3">
<label for="description_of_services" class="form-label">Description of Services</label>
<textarea id="description_of_services" name="description_of_services" class="form-control" rows="4" required></textarea>
<div class="invalid-feedback">
Please enter a description of services.
</div>
</div>

<!-- Fee Amount -->
<div class="mb-3">
<label for="fee_amount" class="form-label">Fee Amount</label>
<input type="number" step="0.01" id="fee_amount" name="fee_amount" class="form-control" required>
<div class="invalid-feedback">
Please enter the fee amount.
</div>
</div>

<!-- Payment Schedule -->
<div class="mb-3">
<label for="payment_schedule" class="form-label">Payment Schedule</label>
<input type="text" id="payment_schedule" name="payment_schedule" class="form-control" required>
<div class="invalid-feedback">
Please enter the payment schedule.
</div>
</div>

<!-- Ownership Terms -->
<div class="mb-3">
<label for="ownership_terms" class="form-label">Ownership Terms</label>
<textarea id="ownership_terms" name="ownership_terms" class="form-control" rows="3" required></textarea>
<div class="invalid-feedback">
Please enter the ownership terms.
</div>
</div>

<!-- Company Representative -->
<div class="mb-3">
<label for="company_representative" class="form-label">Company Representative</label>
<input type="text" id="company_representative" name="company_representative" class="form-control" required>
<div class="invalid-feedback">
Please enter the company representative's name.
</div>
</div>

<!-- Client Representative -->
<div class="mb-3">
<label for="client_representative" class="form-label">Client Representative</label>
<input type="text" id="client_representative" name="client_representative" class="form-control" required>
<div class="invalid-feedback">
Please enter the client representative's name.
</div>
</div>

<!-- Submit Button -->
<button type="submit" class="btn btn-success w-100">Create Employee</button>
</form>

<!-- Back to Dashboard Link -->
<p class="mt-3 text-center"><a href="/dashboard">Back to Dashboard</a></p>

<!-- Display Error Message if Any -->
{% if error %}
<div class="alert alert-danger mt-3" role="alert">
{{ error }}
</div>
{% endif %}
</div>
</div>
{% endblock %}

Loading

0 comments on commit 393ed28

Please sign in to comment.