Commision with grouos response
This commit is contained in:
parent
52abb281ff
commit
f31a50aa06
@ -33,6 +33,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@ -96,10 +97,20 @@ public class CommisionController extends TokenBasedController {
|
|||||||
|
|
||||||
@GetMapping("/user")
|
@GetMapping("/user")
|
||||||
@ApiOperation("Return list of user all commisions (history of schedules)")
|
@ApiOperation("Return list of user all commisions (history of schedules)")
|
||||||
public ResponseEntity<List<CommisionResponse>> getAlCommisions() throws UserNotFoundException {
|
public ResponseEntity<List<? extends CommisionResponse>> getAlCommisions(
|
||||||
|
@RequestParam(name = "groups", defaultValue = "false") @ApiParam(value = "Boolean if we want to display wiht commision's group ids") Boolean groups)
|
||||||
|
throws UserNotFoundException {
|
||||||
User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException());
|
User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException());
|
||||||
List<CommisionResponse> result = CommisionResponseMappers
|
|
||||||
.mapToResponse(this.commisionService.getUsersCommisions(user));
|
List<? extends CommisionResponse> result;
|
||||||
|
|
||||||
|
if (!groups) {
|
||||||
|
result = CommisionResponseMappers.mapToResponse(this.commisionService.getUsersCommisions(user));
|
||||||
|
} else {
|
||||||
|
result = CommisionResponseMappers
|
||||||
|
.mapToResponseWithGroups(this.commisionService.getUsersCommisions(user));
|
||||||
|
}
|
||||||
|
|
||||||
return new ResponseEntity<>(result, HttpStatus.OK);
|
return new ResponseEntity<>(result, HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,9 +6,15 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import com.plannaplan.entities.Commision;
|
import com.plannaplan.entities.Commision;
|
||||||
import com.plannaplan.responses.models.CommisionResponse;
|
import com.plannaplan.responses.models.CommisionResponse;
|
||||||
|
import com.plannaplan.responses.models.CommisionWithGroupsResponse;
|
||||||
|
|
||||||
public class CommisionResponseMappers {
|
public class CommisionResponseMappers {
|
||||||
public static final List<CommisionResponse> mapToResponse(List<Commision> commisions) {
|
public static final List<CommisionResponse> mapToResponse(List<Commision> commisions) {
|
||||||
return commisions.stream().filter(Objects::nonNull).map(CommisionResponse::new).collect(Collectors.toList());
|
return commisions.stream().filter(Objects::nonNull).map(CommisionResponse::new).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final List<CommisionWithGroupsResponse> mapToResponseWithGroups(List<Commision> commisions) {
|
||||||
|
return commisions.stream().filter(Objects::nonNull).map(CommisionWithGroupsResponse::new)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package com.plannaplan.responses.models;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import com.plannaplan.entities.Assignment;
|
||||||
|
import com.plannaplan.entities.Commision;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
@ApiModel(description = "Response shows information about commision and its groups.", value = "CommisionWithGroupsResponse")
|
||||||
|
public class CommisionWithGroupsResponse extends CommisionResponse {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "List of groups ids in databse that belongs to commision")
|
||||||
|
private List<Long> groups;
|
||||||
|
|
||||||
|
public CommisionWithGroupsResponse(Commision commision) {
|
||||||
|
super(commision);
|
||||||
|
this.groups = commision.getAssignments().stream().filter(Objects::nonNull)
|
||||||
|
.map(new Function<Assignment, Long>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long apply(Assignment arg0) {
|
||||||
|
return arg0.getGroup().getId();
|
||||||
|
}
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Long> getGroups() {
|
||||||
|
return groups;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -2,11 +2,16 @@ package com.plannaplan.responses.mappers;
|
|||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.plannaplan.entities.Assignment;
|
||||||
import com.plannaplan.entities.Commision;
|
import com.plannaplan.entities.Commision;
|
||||||
|
import com.plannaplan.entities.Groups;
|
||||||
import com.plannaplan.responses.models.CommisionResponse;
|
import com.plannaplan.responses.models.CommisionResponse;
|
||||||
|
import com.plannaplan.responses.models.CommisionWithGroupsResponse;
|
||||||
|
import com.plannaplan.types.WeekDay;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
@ -20,4 +25,33 @@ public class CommisionResponseMappersTest {
|
|||||||
assertTrue(resposne.get(0).getCommisionDate().equals(coms.get(0).getCommisionDate().toString()));
|
assertTrue(resposne.get(0).getCommisionDate().equals(coms.get(0).getCommisionDate().toString()));
|
||||||
assertTrue(resposne.get(1).getCommisionDate().equals(coms.get(1).getCommisionDate().toString()));
|
assertTrue(resposne.get(1).getCommisionDate().equals(coms.get(1).getCommisionDate().toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldMapListWithEntityToListOfResponsesWithGroups()
|
||||||
|
throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
|
||||||
|
|
||||||
|
final Field reader = Commision.class.getDeclaredField("assignments");
|
||||||
|
final Field groupReader = Groups.class.getDeclaredField("id");
|
||||||
|
reader.setAccessible(true);
|
||||||
|
groupReader.setAccessible(true);
|
||||||
|
|
||||||
|
final Commision com1 = new Commision(null);
|
||||||
|
final Groups group1 = new Groups(43, "BRAK", null, 840, WeekDay.MONDAY, null);
|
||||||
|
|
||||||
|
groupReader.set(group1, Long.valueOf(8));
|
||||||
|
reader.set(com1, Arrays.asList(new Assignment(group1, com1)));
|
||||||
|
|
||||||
|
final Commision com2 = new Commision(null);
|
||||||
|
final Groups group2 = new Groups(124, "BRAK", null, 900, WeekDay.WEDNESDAY, null);
|
||||||
|
|
||||||
|
groupReader.set(group2, Long.valueOf(9));
|
||||||
|
reader.set(com2, Arrays.asList(new Assignment(group2, com2)));
|
||||||
|
|
||||||
|
final List<CommisionWithGroupsResponse> resposne = CommisionResponseMappers
|
||||||
|
.mapToResponseWithGroups(Arrays.asList(com1, com2));
|
||||||
|
|
||||||
|
assertTrue(resposne.size() == 2);
|
||||||
|
assertTrue(resposne.get(0).getGroups().get(0) == 8);
|
||||||
|
assertTrue(resposne.get(1).getGroups().get(0) == 9);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.plannaplan.responses.models;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import com.plannaplan.entities.Assignment;
|
||||||
|
import com.plannaplan.entities.Commision;
|
||||||
|
import com.plannaplan.entities.Groups;
|
||||||
|
import com.plannaplan.types.WeekDay;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class CommisionWithGroupsResponseTest {
|
||||||
|
@Test
|
||||||
|
public void shouldMapCommisionToResponse()
|
||||||
|
throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
|
||||||
|
final Field reader = Commision.class.getDeclaredField("assignments");
|
||||||
|
final Field groupReader = Groups.class.getDeclaredField("id");
|
||||||
|
reader.setAccessible(true);
|
||||||
|
groupReader.setAccessible(true);
|
||||||
|
|
||||||
|
final Commision com = new Commision(null);
|
||||||
|
final Groups group = new Groups(43, "BRAK", null, 840, WeekDay.MONDAY, null);
|
||||||
|
|
||||||
|
groupReader.set(group, Long.valueOf(8));
|
||||||
|
reader.set(com, Arrays.asList(new Assignment(group, com)));
|
||||||
|
|
||||||
|
final CommisionWithGroupsResponse comResponse = new CommisionWithGroupsResponse(com);
|
||||||
|
|
||||||
|
assertTrue(comResponse.getGroups().get(0) == 8);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user