Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
4ff3530
Initial changes for sprint 2 sign in and main menu functionality, inc…
snowcycle Jan 11, 2020
656e63d
Create MainMenuRouteController.java
moyeneka Feb 12, 2021
4104a9b
define ActiveEmployeeExistsQuery.java class
Chase-Garrett Feb 12, 2021
6543709
define EmployeeSignInCommand.java
Chase-Garrett Feb 12, 2021
0fbae3b
routing class
moyeneka Feb 12, 2021
51bb8c9
update
moyeneka Feb 12, 2021
ba4db6c
update
moyeneka Feb 12, 2021
6592a95
Update .project
moyeneka Feb 12, 2021
e5034e6
Initial Commit
benhodges65 Feb 14, 2021
8c54573
Initial commit
uarkNathanSecrest Feb 14, 2021
574097f
Update ViewModelNames.java
moyeneka Feb 16, 2021
de50cc6
Update MainMenuRouteController.java
moyeneka Feb 16, 2021
7be099d
Update MainMenuRouteController.java
moyeneka Feb 16, 2021
5bb9e8d
add method to query database
Chase-Garrett Feb 17, 2021
090ceca
add method to check if any active employees and throw exception if false
Chase-Garrett Feb 17, 2021
deb0e6c
Added click event handlers and getters for buttons
benhodges65 Feb 18, 2021
1f4a16c
Update MainMenuRouteController.java
moyeneka Feb 19, 2021
6e01ed0
Create mainMenu.html
moyeneka Feb 19, 2021
14eb849
Complete ActiveEmployeeExistsQuery class, ready for testing
Chase-Garrett Feb 19, 2021
8c0c4ec
correting minor error
Chase-Garrett Feb 19, 2021
6cccec9
Cleaned code and imported dependencies
Chase-Garrett Feb 20, 2021
17f6aae
Create mainMenu.html
patrickng99 Feb 22, 2021
10a3d1b
Merge branch 'Sprint2Starter' of https://github.com/team-placeholder-…
patrickng99 Feb 22, 2021
e3e08ef
Update mainMenu.html
patrickng99 Feb 22, 2021
58d8522
Update mainMenu.html
patrickng99 Feb 22, 2021
684e30b
Add files via upload
benhodges65 Feb 23, 2021
8aaa04a
Re-routing
patrickng99 Feb 25, 2021
e8710bd
Style update
patrickng99 Feb 25, 2021
e51c663
created ActiveUserDeleteCommand class
Chase-Garrett Feb 26, 2021
88f56e0
Update to dpendencies
Chase-Garrett Feb 27, 2021
30c4115
testing the view
moyeneka Mar 1, 2021
f3ba2f7
update to dependencies and begun to build out the class
Chase-Garrett Mar 1, 2021
47f1ec5
added implement statement that was missing from the class
Chase-Garrett Mar 1, 2021
7cf7dd5
mainMenu view and routing
moyeneka Mar 1, 2021
51ce713
Update ProductListingRouteController.java
moyeneka Mar 1, 2021
a58bcb8
Update application.properties
moyeneka Mar 1, 2021
8553e77
Update RegisterApplication.java
moyeneka Mar 1, 2021
466de2f
Update ActiveEmployeeExistsQuery.java
Chase-Garrett Mar 2, 2021
f8a1bea
Fixed products listing button
patrickng99 Mar 2, 2021
7c6b0c2
Fixing errors in product listing button
patrickng99 Mar 2, 2021
dbeeeeb
changes to ActiveUserDeleteCommand method
Chase-Garrett Mar 2, 2021
babf1cf
corrected formatting
Chase-Garrett Mar 2, 2021
056f216
removing and replacing task 4 stuff
uarkNathanSecrest Mar 3, 2021
8ea2876
Update SignInRouteController.java
pingyhead Mar 3, 2021
eaadfdc
Implemented EmployeeSignIn.java
uarkNathanSecrest Mar 3, 2021
168d0bd
Update SignInRestController.java
pingyhead Mar 3, 2021
be672ee
Corrected placement of @Transactional
Chase-Garrett Mar 3, 2021
2825e5d
corrected import statement for transactional
Chase-Garrett Mar 3, 2021
1f8aae9
removed unneeded import statements
Chase-Garrett Mar 3, 2021
cf94ca2
added missing return statement
Chase-Garrett Mar 3, 2021
3322013
Added employeeId, password, and submit inputs to the sign in page
cw062 Mar 4, 2021
746fdd8
Update mainMenu.html
patrickng99 Mar 4, 2021
a70343f
added dependencies
Chase-Garrett Mar 5, 2021
077b1bd
Defined primary functions
Chase-Garrett Mar 5, 2021
68488ea
added properties to complete the class
Chase-Garrett Mar 5, 2021
8753963
Update ViewModelNames.java
pingyhead Mar 5, 2021
5764c0c
Add files via upload
cdbridge Mar 5, 2021
56a3d31
help
moyeneka Mar 5, 2021
7b41b06
Merge branch 'Sprint2SignIn' of https://github.com/team-placeholder-s…
moyeneka Mar 5, 2021
9bc6eba
Update signIn.js
cdbridge Mar 5, 2021
9de52e0
Update mainMenu.js
patrickng99 Mar 5, 2021
72e856b
Revert "help"
moyeneka Mar 5, 2021
0e1cb9c
Create signIn.html
pingyhead Mar 5, 2021
14dfe35
Update mainMenu.js
patrickng99 Mar 5, 2021
16e1198
Update mainMenu.js
patrickng99 Mar 5, 2021
34c527d
Merge branch 'Sprint2Starter' of https://github.com/team-placeholder-…
patrickng99 Mar 5, 2021
1310e9e
Update ViewModelNames.java
pingyhead Mar 5, 2021
c822388
Update mainMenu.js
patrickng99 Mar 5, 2021
ac08405
Merge branch 'Sprint2Starter' of https://github.com/team-placeholder-…
patrickng99 Mar 5, 2021
4f952d3
Update EmployeeSignIn.java
pingyhead Mar 5, 2021
236c05d
Update EmployeeSignInCommand.java
pingyhead Mar 5, 2021
4f20f8d
Merge branch 'Sprint2Starter' into Sprint2SignIn
moyeneka Mar 5, 2021
0b6168f
Update EmployeeSignIn.java
pingyhead Mar 5, 2021
24b4c2e
Updated implementation
uarkNathanSecrest Mar 5, 2021
dbb417c
commented out parts to debug
uarkNathanSecrest Mar 5, 2021
223ddf5
Update ActiveUserDeleteCommand.java
uarkNathanSecrest Mar 5, 2021
126556b
Update ActiveUserDeleteCommand.java
uarkNathanSecrest Mar 5, 2021
e6c4575
Create EmployeeCreateCommand.java
uarkNathanSecrest Mar 5, 2021
455d6ad
Create EmployeeDeleteCommand.java
uarkNathanSecrest Mar 5, 2021
c250a87
Create EmployeeQuery.java
uarkNathanSecrest Mar 5, 2021
366ce39
Create EmployeeUpdateCommand.java
uarkNathanSecrest Mar 5, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .project
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,16 @@
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
<filteredResources>
<filter>
<id>1613163986495</id>

<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>
41 changes: 41 additions & 0 deletions signIn.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<html xmlns:th="https://www.thymeleaf.org">

<head>
<title>Register - Sign In</title>
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" type="text/css" href="/styles/master.css">

<script type="text/javascript" src="/scripts/master.js" defer></script>
<script type="text/javascript" src="/scripts/signIn.js" defer></script>
</head>

<body>

<div class="header">
<h1 class="primary-message">Sign In</h1>
</div>

<div id="main" class="main">
<div id="error" th:class="${#strings.isEmpty(errorMessage)} ? hidden : ''">
<h4 id="errorMessage" class="error-message" th:text="${errorMessage}"></h4>
</div>

<form action="/" method="POST" onsubmit="return validateForm();" class="inputContent">
<div>
<input id="employeeId" type="number" name="employeeId" placeholder="Employee ID" class="update" th:value="${employeeId}" />
</div>
<br />
<div>
<input id="password" type="password" name="password" placeholder="Password" class="update" />
</div>
<br /><br />
<div>
<input type="submit" value="Sign In" class="submit" />
</div>
</form>
</div>

</body>

</html>
39 changes: 39 additions & 0 deletions signIn.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
document.addEventListener("DOMContentLoaded", function(event) {
const employeeIdEditElement = getEmployeeId();
employeeIdEditElement.focus();
employeeIdEditElement.select();
});

//Get elements for the Employee Id and Password
function getEmployeeId() {
return document.getElementById("employeeId");
}

function getPassword() {
return document.getElementById("password");
}

//Validates the Id is not blank and is a number; Validates that Password is not null
function validateForm() {
const employeeIdEditElement = getEmployeeId();
Comment on lines +1 to +18
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change

if(isNaN(Number(employeeIdEditElement.value)) || (Number(employeeIdEditElement.value) <= 0))
{
displayError("Employee Id must be a positive numerical value.");

employeeIdEditElement.focus();
employeeIdEditElement.select();
return false;
}

const passwordEditElement = getPassword();
if ((passwordEditElement.value == null) || (passwordEditElement.value.trim() === ""))
{
displayError("Password must be valid and cannot be blank.");

passwordEditElement.focus();
Comment on lines +19 to +33
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here

passwordEditElement.select();
return false;

}
return true;
}
Comment on lines +34 to +39
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here

Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/*package edu.uark.registerapp.commands.activeUsers;

import java.util.Optional;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.pringframework.transaction.annotation.Transactional;


import edu.uark.registerapp.commands.VoidCommandInterface;
import edu.uark.registerapp.nodels.entities.ActiveUserEntity;
import edu.uark.registerapp.models.repositories.ActiveUserRepository;

@Service
public class ActiveUserDeleteCommand implements VoidCommandInterface{
@Override
@Transactional
public void execute(){
final Optional<ActiveUserEntity> activeUserEntity=
this.activeUserRepository.findBySessionKey(this.sessionKey);

if(!activeUserEntity.isPresent()){
this.activeUserRepository.delete(activeUserEntity.get());
}
}

private String sessionKey;

public String getSessionKey(){
return this.sessionKey;
}

public ActiveUserDeleteCommand setSessionKey(final String sessionKey){
this.sessionKey = sessionKey;
return this;
}

@Autowired
private ActiveUserRepository activeUserRepository;
}
*/


package edu.uark.registerapp.commands.activeUsers;

import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import edu.uark.registerapp.commands.VoidCommandInterface;
import edu.uark.registerapp.models.entities.ActiveUserEntity;
import edu.uark.registerapp.models.repositories.ActiveUserRepository;

@Service
public class ActiveUserDeleteCommand implements VoidCommandInterface {
@Transactional
@Override
public void execute() {
final Optional<ActiveUserEntity> activeUserEntity =
this.activeUserRepository.findBySessionKey(this.sessionKey);

if (activeUserEntity.isPresent()) {
this.activeUserRepository.delete(activeUserEntity.get());
}
}

// Properties
private String sessionKey;
public String getSessionKey() {
return this.sessionKey;
}
public ActiveUserDeleteCommand setSessionKey(final String sessionKey) {
this.sessionKey = sessionKey;
return this;
}

@Autowired
private ActiveUserRepository activeUserRepository;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package edu.uark.registerapp.commands.employees;

import org.apache.commons.lang3.StringUtils;
import edu.uark.registerapp.models.repositories.EmployeeRepository;
import edu.uark.registerapp.commands.exceptions.NotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ActiveEmployeeExistsQuery implements EmployeeRepository{
@Override
public void ActiveEmployeeExistsQuery(){
if(!this.employeeRepository.existsByIsActive(true)){
throw new NotFoundException("Employee");
}
}

@Autowire
private EmployeeRepository employeeRepository;
}
Comment on lines +1 to +20
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here

Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package edu.uark.registerapp.commands.employees;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import edu.uark.registerapp.commands.ResultCommandInterface;
import edu.uark.registerapp.commands.employees.helpers.EmployeeHelper;
import edu.uark.registerapp.commands.exceptions.UnprocessableEntityException;
import edu.uark.registerapp.models.api.Employee;
import edu.uark.registerapp.models.entities.EmployeeEntity;
import edu.uark.registerapp.models.enums.EmployeeClassification;
import edu.uark.registerapp.models.repositories.EmployeeRepository;

@Service
public class EmployeeCreateCommand implements ResultCommandInterface<Employee> {
@Override
public Employee execute() {
this.validateProperties();

if (this.isInitialEmployee) {
this.apiEmployee.setClassification(
EmployeeClassification.GENERAL_MANAGER.getClassification());
}

// Create a new ENTITY object from the API object details.
final EmployeeEntity employeeEntity =
this.employeeRepository.save(new EmployeeEntity(this.apiEmployee));

// Synchronize information generated by the database upon INSERT.
this.apiEmployee.setId(employeeEntity.getId());
// Only send the password over the network when modifying the database.
this.apiEmployee.setPassword(StringUtils.EMPTY);
this.apiEmployee.setCreatedOn(employeeEntity.getCreatedOn());
this.apiEmployee.setEmployeeId(
EmployeeHelper.padEmployeeId(
employeeEntity.getEmployeeId()));

return this.apiEmployee;
}

// Helper methods
private void validateProperties() {
if (StringUtils.isBlank(this.apiEmployee.getFirstName())) {
throw new UnprocessableEntityException("first name");
}
if (StringUtils.isBlank(this.apiEmployee.getLastName())) {
throw new UnprocessableEntityException("last name");
}
if (StringUtils.isBlank(this.apiEmployee.getPassword())) {
throw new UnprocessableEntityException("password");
}

if (!this.isInitialEmployee
&& (EmployeeClassification.map(this.apiEmployee.getClassification()) == EmployeeClassification.NOT_DEFINED)) {

throw new UnprocessableEntityException("classification");
}
}

// Properties
private Employee apiEmployee;
public Employee getApiEmployee() {
return this.apiEmployee;
}
public EmployeeCreateCommand setApiEmployee(final Employee apiEmployee) {
this.apiEmployee = apiEmployee;
return this;
}

private boolean isInitialEmployee;
public boolean getIsInitialEmployee() {
return this.isInitialEmployee;
}
public EmployeeCreateCommand setIsInitialEmployee(
final boolean isInitialEmployee
) {

this.isInitialEmployee = isInitialEmployee;
return this;
}

@Autowired
private EmployeeRepository employeeRepository;

public EmployeeCreateCommand() {
this.isInitialEmployee = false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package edu.uark.registerapp.commands.employees;

import java.util.Optional;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import edu.uark.registerapp.commands.VoidCommandInterface;
import edu.uark.registerapp.commands.exceptions.NotFoundException;
import edu.uark.registerapp.models.entities.EmployeeEntity;
import edu.uark.registerapp.models.repositories.EmployeeRepository;

@Service
public class EmployeeDeleteCommand implements VoidCommandInterface {
@Transactional
@Override
public void execute() {
final Optional<EmployeeEntity> employeeEntity =
this.employeeRepository.findById(this.employeeId);

if (!employeeEntity.isPresent()) { // No record with the associated record ID exists in the database.
throw new NotFoundException("Product");
}

this.employeeRepository.delete(employeeEntity.get());
}

// Properties
private UUID employeeId;
public UUID getEmployeeId() {
return this.employeeId;
}
public EmployeeDeleteCommand setEmployeeId(final UUID productId) {
this.employeeId = productId;
return this;
}

@Autowired
private EmployeeRepository employeeRepository;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package edu.uark.registerapp.commands.employees;

import java.util.Optional;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import edu.uark.registerapp.commands.ResultCommandInterface;
import edu.uark.registerapp.commands.exceptions.NotFoundException;
import edu.uark.registerapp.models.api.Employee;
import edu.uark.registerapp.models.entities.EmployeeEntity;
import edu.uark.registerapp.models.repositories.EmployeeRepository;

@Service
public class EmployeeQuery implements ResultCommandInterface<Employee> {
@Override
public Employee execute() {
final Optional<EmployeeEntity> employeeEntity =
this.employeeRepository.findById(this.employeeId);

if (employeeEntity.isPresent()) {
return new Employee(employeeEntity.get());
} else {
throw new NotFoundException("Employee");
}
}

// Properties
private UUID employeeId;
public UUID getEmployeeId() {
return this.employeeId;
}
public EmployeeQuery setEmployeeId(final UUID employeeId) {
this.employeeId = employeeId;
return this;
}

@Autowired
private EmployeeRepository employeeRepository;
}
Loading