diff --git a/pom.xml b/pom.xml index b0a6389..4365294 100644 --- a/pom.xml +++ b/pom.xml @@ -27,8 +27,27 @@ spring-boot-starter-test test - + + org.projectlombok + lombok + 1.18.24 + provided + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-web + + + mysql + mysql-connector-java + + diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/ProjectController.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/ProjectController.java new file mode 100644 index 0000000..ca01d68 --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/ProjectController.java @@ -0,0 +1,53 @@ +package com.accenture.codingtest.springbootcodingtest.controller; + +import java.util.List; + +import com.accenture.codingtest.springbootcodingtest.entity.Project; +import com.accenture.codingtest.springbootcodingtest.model.Role; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import com.accenture.codingtest.springbootcodingtest.entity.Project; +import com.accenture.codingtest.springbootcodingtest.service.ProjectService; + +@RestController +@RequestMapping("/api") +public class ProjectController { + @Autowired + private ProjectService projectService; + + @GetMapping("/v1/projects") + public ResponseEntity> getAllProjects() { + return projectService.getAllProjects(); + } + + @PostMapping("/v1/projects/{role}") + public ResponseEntity saveProject(@RequestBody Project project, + @PathVariable("role") String role) { + ResponseEntity response; + if(Role.ADMIN.toString().equalsIgnoreCase(role)) { + response = projectService.saveProject(project); + } else { + response = new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + } + return response; + } + + @GetMapping("/v1/projects/{project_id}") + public ResponseEntity getProjectById(@PathVariable("project_id") String project_id) { + return projectService.getProjectById(project_id); + } + + @PutMapping("/v1/projects") + public ResponseEntity updateProject(@RequestBody Project project) { + return projectService.updateProject(project); + } + + @DeleteMapping("/v1/projects/{project_id}") + public ResponseEntity deleteProjectById(@PathVariable("project_id") String project_id) { + return projectService.deleteProject(project_id); + } + +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/TaskController.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/TaskController.java new file mode 100644 index 0000000..d897f2b --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/TaskController.java @@ -0,0 +1,70 @@ +package com.accenture.codingtest.springbootcodingtest.controller; + +import java.util.List; + +import com.accenture.codingtest.springbootcodingtest.model.Role; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import com.accenture.codingtest.springbootcodingtest.entity.Task; +import com.accenture.codingtest.springbootcodingtest.service.TaskService; + +@RestController +@RequestMapping("/api") +public class TaskController { + @Autowired + private TaskService taskService; + + @GetMapping("/v1/tasks") + public ResponseEntity> getAllTasks() { + return taskService.getAllTasks(); + } + + @PostMapping("/v1/tasks/{role}") + public ResponseEntity saveTask(@RequestBody Task task, @PathVariable("role") String role) { + ResponseEntity response = null; + if(Role.PRODUCT_OWNER.toString().equalsIgnoreCase(role)) { + response = taskService.saveTask(task); + } else { + response = new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + } + return response; + } + + @GetMapping("/v1/tasks/{task_id}") + public ResponseEntity getTaskById(@PathVariable("task_id") String task_id) { + return taskService.getTaskById(task_id); + } + + @PatchMapping("/v1/tasks/{role}") + public ResponseEntity updateTask(@RequestBody Task task, + @PathVariable("userId") String userId, + @PathVariable("role") String role) { + ResponseEntity response = null; + if(Role.PRODUCT_OWNER.toString().equalsIgnoreCase(role)) { + response = taskService.updateTask(task, userId); + } else { + response = new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + } + return response; + } + + @PutMapping("/v1/tasks/{role}") + public ResponseEntity updateTask(@RequestBody Task task, @PathVariable("role") String role) { + ResponseEntity response = null; + if(Role.PRODUCT_OWNER.toString().equalsIgnoreCase(role)) { + response = taskService.updateTask(task); + } else { + response = new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + } + return response; + } + + + @DeleteMapping("/v1/tasks/{task_id}") + public ResponseEntity deleteTaskById(@PathVariable("task_id") String task_id) { + return taskService.deleteTask(task_id); + } +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/UserController.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/UserController.java new file mode 100644 index 0000000..65099d1 --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/UserController.java @@ -0,0 +1,77 @@ +package com.accenture.codingtest.springbootcodingtest.controller; + +import com.accenture.codingtest.springbootcodingtest.entity.User; +import com.accenture.codingtest.springbootcodingtest.model.Role; +import com.accenture.codingtest.springbootcodingtest.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api") +public class UserController { + + @Autowired + private UserService userService; + + @GetMapping("/v1/users/{role}") + public ResponseEntity> getAllUsers(@PathVariable("role") String role) { + ResponseEntity> response = null; + if(Role.ADMIN.toString().equalsIgnoreCase(role)) { + response = userService.getAllUsers(); + } else { + response = new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + } + return response; + } + + @GetMapping("/v1/users/{user_id}/{role}") + public ResponseEntity getUserById(@PathVariable("user_id") String user_id, + @PathVariable("role") String role) { + ResponseEntity response = null; + if(Role.ADMIN.toString().equalsIgnoreCase(role)) { + response = userService.getUserById(user_id); + } else { + response = new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + } + return response; + } + + @PostMapping("/v1/users/{role}") + public ResponseEntity saveUser(@RequestBody User user, @PathVariable("role") String role) { + + ResponseEntity response = null; + if(Role.ADMIN.toString().equalsIgnoreCase(role)) { + response = userService.saveUser(user); + } else { + response = new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + } + return response; + } + + @PutMapping("/v1/users") + public ResponseEntity updateUser(@RequestBody User user, @PathVariable("role") String role) { + ResponseEntity response = null; + if(Role.ADMIN.toString().equalsIgnoreCase(role)) { + response = userService.updateUser(user); + } else { + response = new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + } + return response; + } + + @DeleteMapping("/v1/users/{user_id}") + public ResponseEntity deleteUserById(@PathVariable("user_id") String user_id, + @PathVariable("role") String role) { + ResponseEntity response; + if(Role.ADMIN.toString().equalsIgnoreCase(role)) { + response = userService.deleteUser(user_id); + } else { + response = new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + } + return response; + } +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/package-info.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/package-info.java deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/Project.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/Project.java new file mode 100644 index 0000000..07dab68 --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/Project.java @@ -0,0 +1,17 @@ +package com.accenture.codingtest.springbootcodingtest.entity; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Data +@Table(name="Project") +public class Project { + + @Id + private String id; + private String name; +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/Task.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/Task.java new file mode 100644 index 0000000..951c135 --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/Task.java @@ -0,0 +1,21 @@ +package com.accenture.codingtest.springbootcodingtest.entity; + + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Data +@Entity +@Table(name="Task") +public class Task { + @Id + private String id;// | uuid | required | pk + private String title;// | string | required + private String description;// | string + private String status;// | string | required + private String project_id;// | uuid | required + private String user_id;// | uuid | required +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/User.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/User.java new file mode 100644 index 0000000..8afde6f --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/User.java @@ -0,0 +1,27 @@ +package com.accenture.codingtest.springbootcodingtest.entity; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import lombok.Data; +import org.springframework.beans.factory.annotation.Required; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +@Data +@Entity +@Table(name="User") +@JsonSerialize +public class User { + + @Id + private String id; + + // @Required + private String username; + + //@Required + private String password; + +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/package-info.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/package-info.java deleted file mode 100644 index f87ee93..0000000 --- a/src/main/java/com/accenture/codingtest/springbootcodingtest/entity/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.accenture.codingtest.springbootcodingtest.entity; \ No newline at end of file diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Role.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Role.java new file mode 100644 index 0000000..74379dd --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Role.java @@ -0,0 +1,6 @@ +package com.accenture.codingtest.springbootcodingtest.model; + +public enum Role { + ADMIN, + PRODUCT_OWNER +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Status.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Status.java new file mode 100644 index 0000000..5f6313b --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Status.java @@ -0,0 +1,5 @@ +package com.accenture.codingtest.springbootcodingtest.model; + +public enum Status { + NOT_STARTED, IN_PROGRESS, READY_FOR_TEST, COMPLETED +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/ProjectRepository.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/ProjectRepository.java new file mode 100644 index 0000000..b1a9458 --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/ProjectRepository.java @@ -0,0 +1,7 @@ +package com.accenture.codingtest.springbootcodingtest.repository; + +import com.accenture.codingtest.springbootcodingtest.entity.Project; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ProjectRepository extends JpaRepository { +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/TaskRepository.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/TaskRepository.java new file mode 100644 index 0000000..2cba613 --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/TaskRepository.java @@ -0,0 +1,7 @@ +package com.accenture.codingtest.springbootcodingtest.repository; + +import com.accenture.codingtest.springbootcodingtest.entity.Task; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TaskRepository extends JpaRepository { +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/UserRepository.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/UserRepository.java new file mode 100644 index 0000000..046e205 --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/UserRepository.java @@ -0,0 +1,7 @@ +package com.accenture.codingtest.springbootcodingtest.repository; + +import com.accenture.codingtest.springbootcodingtest.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface UserRepository extends JpaRepository { +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/package-info.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/package-info.java deleted file mode 100644 index 0f16639..0000000 --- a/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.accenture.codingtest.springbootcodingtest.repository; \ No newline at end of file diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/service/ProjectService.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/ProjectService.java new file mode 100644 index 0000000..d0deef1 --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/ProjectService.java @@ -0,0 +1,65 @@ +package com.accenture.codingtest.springbootcodingtest.service; + +import java.util.List; +import java.util.Optional; + +import com.accenture.codingtest.springbootcodingtest.entity.Project; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import com.accenture.codingtest.springbootcodingtest.repository.ProjectRepository; + +@Service +public class ProjectService { + @Autowired + private ProjectRepository projectRepository; + + public ResponseEntity saveProject(Project project) { + ResponseEntity response = null; + if (project != null) { + response = new ResponseEntity<>(projectRepository.save(project), HttpStatus.OK); + } else { + response = new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + return response; + } + public ResponseEntity> getAllProjects() { + return new ResponseEntity<>(projectRepository.findAll(), HttpStatus.OK); + } + + public ResponseEntity getProjectById(String id) { + return new ResponseEntity<>(projectRepository.findById(id).get(), HttpStatus.OK); + } + + public ResponseEntity updateProject(Project project) { + ResponseEntity updatedProject = null; + String id = project.getId(); + Optional oldProjectOp = projectRepository.findById(id); + + if(oldProjectOp.isPresent()) { + Project oldProject = oldProjectOp.get(); + + oldProject.setName(project.getName()); + // oldProject.setProject_id(project.getProject_id()); + + updatedProject = new ResponseEntity<>(projectRepository.save(oldProject), HttpStatus.OK); + } else { + updatedProject = new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + + return updatedProject; + } + + public ResponseEntity deleteProject(String id) { + ResponseEntity response = null; + if (projectRepository.existsById(id)) { + projectRepository.deleteById(id); + response = new ResponseEntity<>(HttpStatus.OK); + } else { + response = new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + return response; + } + +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/service/TaskService.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/TaskService.java new file mode 100644 index 0000000..1d824fd --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/TaskService.java @@ -0,0 +1,84 @@ +package com.accenture.codingtest.springbootcodingtest.service; + +import com.accenture.codingtest.springbootcodingtest.entity.Task; +import com.accenture.codingtest.springbootcodingtest.model.Role; +import com.accenture.codingtest.springbootcodingtest.model.Status; +import com.accenture.codingtest.springbootcodingtest.repository.TaskRepository; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +@Service +public class TaskService { + + @Autowired + private TaskRepository taskRepository; + + public ResponseEntity saveTask(Task task) { + ResponseEntity response = null; + if (task != null) { + //initial status + task.setStatus(Status.NOT_STARTED.toString()); + response = new ResponseEntity<>(taskRepository.save(task), HttpStatus.OK); + } else { + response = new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + return response; + } + public ResponseEntity> getAllTasks() { + return new ResponseEntity<>(taskRepository.findAll(), HttpStatus.OK); + } + + public ResponseEntity getTaskById(String id) { + return new ResponseEntity<>(taskRepository.findById(id).get(), HttpStatus.OK); + } + + public ResponseEntity updateTask(Task task) { + ResponseEntity updatedTask = null; + String id = task.getId(); + Optional oldTaskOp = taskRepository.findById(id); + + if(oldTaskOp.isPresent()) { + Task oldTask = oldTaskOp.get(); + + oldTask.setDescription(task.getDescription()); + oldTask.setTitle(task.getTitle()); + oldTask.setStatus(task.getStatus()); + oldTask.setUser_id(task.getUser_id()); + // oldTask.setProject_id(task.getProject_id()); + + updatedTask = new ResponseEntity<>(taskRepository.save(oldTask), HttpStatus.OK); + } else { + updatedTask = new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + + return updatedTask; + } + public ResponseEntity updateTask(Task task, String userId) { + ResponseEntity response = null; + Optional taskRes = taskRepository.findById(task.getId()); + if (taskRes.isPresent()) { + if (taskRes.get().getUser_id().equalsIgnoreCase(userId)) { + taskRes.get().setStatus(task.getStatus()); + response =new ResponseEntity<>(taskRepository.save(taskRes.get()), HttpStatus.OK); + } + } + return response; + } + + public ResponseEntity deleteTask(String id) { + ResponseEntity response = null; + if (taskRepository.existsById(id)) { + taskRepository.deleteById(id); + response = new ResponseEntity<>(HttpStatus.OK); + } else { + response = new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + return response; + } +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/service/UserService.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/UserService.java new file mode 100644 index 0000000..9230755 --- /dev/null +++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/UserService.java @@ -0,0 +1,67 @@ +package com.accenture.codingtest.springbootcodingtest.service; + +import com.accenture.codingtest.springbootcodingtest.entity.User; +import com.accenture.codingtest.springbootcodingtest.repository.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class UserService { + + @Autowired + private UserRepository userRepository; + + public ResponseEntity saveUser(User user) { + ResponseEntity response = null; + if (user != null) { + response = new ResponseEntity<>(userRepository.save(user), HttpStatus.OK); + } else { + response = new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + return response; + } + + + public ResponseEntity> getAllUsers() { + return new ResponseEntity<>(userRepository.findAll(), HttpStatus.OK); + } + + public ResponseEntity getUserById(String id) { + return new ResponseEntity<>(userRepository.findById(id).get(), HttpStatus.OK); + } + + public ResponseEntity updateUser(User user) { + ResponseEntity updatedUser = null; + String id = user.getId(); + Optional oldUserOp = userRepository.findById(id); + + if(oldUserOp.isPresent()) { + User oldUser = oldUserOp.get(); + + oldUser.setUsername(user.getUsername()); + oldUser.setPassword(user.getPassword()); + + updatedUser = new ResponseEntity<>(userRepository.save(oldUser), HttpStatus.OK); + } else { + updatedUser = new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + + return updatedUser; + } + + public ResponseEntity deleteUser(String id) { + ResponseEntity response = null; + if (userRepository.existsById(id)) { + userRepository.deleteById(id); + response = new ResponseEntity<>(HttpStatus.OK); + } else { + response = new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + return response; + } +} diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/service/package-info.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/package-info.java deleted file mode 100644 index ad5937c..0000000 --- a/src/main/java/com/accenture/codingtest/springbootcodingtest/service/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.accenture.codingtest.springbootcodingtest.service; \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b13789..f16231d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,10 @@ +spring.datasource.url=jdbc:mysql://localhost/accenture +spring.datasource.driverClassName=com.mysql.jdbc.Driver +spring.datasource.username=root +spring.datasource.password=12345Welcome + + +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect +spring.jpa.hibernate.ddl-auto= update diff --git a/src/main/resources/template/create_project.html b/src/main/resources/template/create_project.html new file mode 100644 index 0000000..415d4c6 --- /dev/null +++ b/src/main/resources/template/create_project.html @@ -0,0 +1,10 @@ + + + + +Insert title here + + + + + \ No newline at end of file diff --git a/src/main/resources/template/create_task.html b/src/main/resources/template/create_task.html new file mode 100644 index 0000000..415d4c6 --- /dev/null +++ b/src/main/resources/template/create_task.html @@ -0,0 +1,10 @@ + + + + +Insert title here + + + + + \ No newline at end of file diff --git a/src/main/resources/template/create_user.html b/src/main/resources/template/create_user.html new file mode 100644 index 0000000..415d4c6 --- /dev/null +++ b/src/main/resources/template/create_user.html @@ -0,0 +1,10 @@ + + + + +Insert title here + + + + + \ No newline at end of file diff --git a/src/main/resources/template/edit_project.html b/src/main/resources/template/edit_project.html new file mode 100644 index 0000000..415d4c6 --- /dev/null +++ b/src/main/resources/template/edit_project.html @@ -0,0 +1,10 @@ + + + + +Insert title here + + + + + \ No newline at end of file diff --git a/src/main/resources/template/edit_task.html b/src/main/resources/template/edit_task.html new file mode 100644 index 0000000..415d4c6 --- /dev/null +++ b/src/main/resources/template/edit_task.html @@ -0,0 +1,10 @@ + + + + +Insert title here + + + + + \ No newline at end of file diff --git a/src/main/resources/template/edit_user.html b/src/main/resources/template/edit_user.html new file mode 100644 index 0000000..415d4c6 --- /dev/null +++ b/src/main/resources/template/edit_user.html @@ -0,0 +1,10 @@ + + + + +Insert title here + + + + + \ No newline at end of file diff --git a/src/main/resources/template/project.html b/src/main/resources/template/project.html new file mode 100644 index 0000000..415d4c6 --- /dev/null +++ b/src/main/resources/template/project.html @@ -0,0 +1,10 @@ + + + + +Insert title here + + + + + \ No newline at end of file diff --git a/src/main/resources/template/task.html b/src/main/resources/template/task.html new file mode 100644 index 0000000..6f9bc14 --- /dev/null +++ b/src/main/resources/template/task.html @@ -0,0 +1,79 @@ + + + + +Project Management System + + + + +
+
+

List Tasks

+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Task Id Task Title Task Description Task Status Task Project_Id Task Task_Id
+ Update + + Delete + +
+ +
+ + + \ No newline at end of file diff --git a/src/main/resources/template/user.html b/src/main/resources/template/user.html new file mode 100644 index 0000000..15a88e6 --- /dev/null +++ b/src/main/resources/template/user.html @@ -0,0 +1,76 @@ + + + + +Project Management System + + + + +
+
+

List Users

+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
User Id User Name Password Actions
+ Update + + Delete + +
+ +
+ + + \ No newline at end of file