Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
21 changes: 20 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,27 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
Expand Down
Original file line number Diff line number Diff line change
@@ -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<List<Project>> getAllProjects() {
return projectService.getAllProjects();
}

@PostMapping("/v1/projects/{role}")
public ResponseEntity<Project> saveProject(@RequestBody Project project,
@PathVariable("role") String role) {
ResponseEntity<Project> 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<Project> getProjectById(@PathVariable("project_id") String project_id) {
return projectService.getProjectById(project_id);
}

@PutMapping("/v1/projects")
public ResponseEntity<Project> updateProject(@RequestBody Project project) {
return projectService.updateProject(project);
}

@DeleteMapping("/v1/projects/{project_id}")
public ResponseEntity<Void> deleteProjectById(@PathVariable("project_id") String project_id) {
return projectService.deleteProject(project_id);
}

}
Original file line number Diff line number Diff line change
@@ -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<List<Task>> getAllTasks() {
return taskService.getAllTasks();
}

@PostMapping("/v1/tasks/{role}")
public ResponseEntity<Task> saveTask(@RequestBody Task task, @PathVariable("role") String role) {
ResponseEntity<Task> 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<Task> getTaskById(@PathVariable("task_id") String task_id) {
return taskService.getTaskById(task_id);
}

@PatchMapping("/v1/tasks/{role}")
public ResponseEntity<Task> updateTask(@RequestBody Task task,
@PathVariable("userId") String userId,
@PathVariable("role") String role) {
ResponseEntity<Task> 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<Task> updateTask(@RequestBody Task task, @PathVariable("role") String role) {
ResponseEntity<Task> 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<Void> deleteTaskById(@PathVariable("task_id") String task_id) {
return taskService.deleteTask(task_id);
}
}
Original file line number Diff line number Diff line change
@@ -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<List<User>> getAllUsers(@PathVariable("role") String role) {
ResponseEntity<List<User>> 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<User> getUserById(@PathVariable("user_id") String user_id,
@PathVariable("role") String role) {
ResponseEntity<User> 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<User> saveUser(@RequestBody User user, @PathVariable("role") String role) {

ResponseEntity<User> 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<User> updateUser(@RequestBody User user, @PathVariable("role") String role) {
ResponseEntity<User> 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<Void> deleteUserById(@PathVariable("user_id") String user_id,
@PathVariable("role") String role) {
ResponseEntity<Void> response;
if(Role.ADMIN.toString().equalsIgnoreCase(role)) {
response = userService.deleteUser(user_id);
} else {
response = new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
}
return response;
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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;

}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.accenture.codingtest.springbootcodingtest.model;

public enum Role {
ADMIN,
PRODUCT_OWNER
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.accenture.codingtest.springbootcodingtest.model;

public enum Status {
NOT_STARTED, IN_PROGRESS, READY_FOR_TEST, COMPLETED
}
Original file line number Diff line number Diff line change
@@ -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<Project, String> {
}
Original file line number Diff line number Diff line change
@@ -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<Task, String> {
}
Original file line number Diff line number Diff line change
@@ -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<User, String> {
}

This file was deleted.

Loading