Skip to content

Commit

Permalink
feat: add endpoint for update status at delivery
Browse files Browse the repository at this point in the history
  • Loading branch information
tamireshc committed Aug 2, 2023
1 parent 437b4ff commit 3236e66
Show file tree
Hide file tree
Showing 10 changed files with 110 additions and 19 deletions.
38 changes: 36 additions & 2 deletions src/main/java/com/betrybe/controller/DeliveryController.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
package com.betrybe.controller;

import com.betrybe.entities.DeliveryRequest;
import com.betrybe.entities.StatusRequest;
import com.betrybe.entities.StatusResponse;
import com.betrybe.enuns.Status;
import com.betrybe.exceptions.NotFoundException;
import com.betrybe.models.Delivery;
import com.betrybe.models.Drone;
import com.betrybe.service.DeliveryService;
import com.betrybe.service.DroneService;
import jakarta.inject.Inject;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
Expand All @@ -14,6 +20,8 @@
public class DeliveryController {
@Inject
DeliveryService deliveryService;
@Inject
DroneService droneService;

@GET
public Response getAll() {
Expand All @@ -24,17 +32,43 @@ public Response getAll() {
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response create(DeliveryRequest deliveryRequest) {
public Response create(DeliveryRequest deliveryRequest) throws NotFoundException {
Drone droneSearch = droneService.findById(deliveryRequest.getDroneId());
if (droneSearch == null) {
throw new NotFoundException("Drone not Found");
}
Delivery delivery = deliveryService.created(deliveryRequest);
return Response.status(201).entity(delivery).build();
}

@PUT
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/status/{id}")
public Response updateStatus(@PathParam("id") Integer id, StatusRequest statusRequest) throws NotFoundException {
Delivery delivery = deliveryService.findById(id);
if(delivery == null){
throw new NotFoundException("Delivery not found");
}
Status newStatus = deliveryService.updateStatus(id, statusRequest);
StatusResponse statusResponse = new StatusResponse();
statusResponse.setStatus(statusRequest.getStatus());
if(newStatus == null){
statusResponse.setStatus("status not allowed");
return Response.status(400).entity(statusResponse).build();
}
return Response.status(200).entity(statusResponse).build();
}

@PUT
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/{id}")
public Response update(@PathParam("id") Integer id, DeliveryRequest deliveryRequest) {
System.out.println(id);
Delivery deliverySearch = deliveryService.findById(id);
if(deliverySearch == null){
throw new NotFoundException("Delivery not found");
}
Delivery delivery = deliveryService.update(id, deliveryRequest);
return Response.status(200).entity(delivery).build();
}
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/com/betrybe/controller/DroneController.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ public class DroneController {

@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response create(Drone drone) {
String result = droneService.create(drone);
return Response.status(201).build();
public Response create(Drone droneRequest) {
Drone drone = droneService.create(droneRequest);
return Response.status(201).entity(drone).build();
}

@GET
Expand All @@ -38,15 +38,15 @@ public Response getAll() {
public Response update(@PathParam("id") Integer id, Drone drone) throws NotFoundException {
Drone droneSearch = droneService.findById(id);
if (droneSearch == null) {
throw new NotFoundException("Drone not Found");
throw new NotFoundException("Drone not found");
}
Drone droneAtt = droneService.update(id, drone);
return Response.ok(droneAtt).build();
}

@DELETE
@Path("/{id}")
public Response update(@PathParam("id") Integer id) {
public Response delete(@PathParam("id") Integer id) {
Drone droneSearch = droneService.findById(id);
if (droneSearch == null) {
throw new NotFoundException("Drone not Found");
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/betrybe/entities/DeliveryRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@
import java.time.LocalDateTime;

public class DeliveryRequest {
private LocalDateTime schedule_delivery;
private String schedule_delivery;
private LocalDateTime delivery_date;
private Status status;
private Integer droneId;
private Video video;
private Position position;

public LocalDateTime getSchedule_delivery() {
public String getSchedule_delivery() {
return schedule_delivery;
}

public void setSchedule_delivery(LocalDateTime schedule_delivery) {
public void setSchedule_delivery(String schedule_delivery) {
this.schedule_delivery = schedule_delivery;
}

Expand Down
13 changes: 13 additions & 0 deletions src/main/java/com/betrybe/entities/StatusRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.betrybe.entities;

public class StatusRequest {
private String status;

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}
}
13 changes: 13 additions & 0 deletions src/main/java/com/betrybe/entities/StatusResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.betrybe.entities;

public class StatusResponse {
private String status;

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}
}
2 changes: 1 addition & 1 deletion src/main/java/com/betrybe/enuns/Status.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.betrybe.enuns;

public enum Status {
CREATED,
ONROUTE,
FINISHED,
CREATED,
CANCELED,
}
1 change: 0 additions & 1 deletion src/main/java/com/betrybe/models/Delivery.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ public class Delivery {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

@Column
private LocalDateTime schedule_delivery;
@Column
Expand Down
38 changes: 35 additions & 3 deletions src/main/java/com/betrybe/service/DeliveryService.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.betrybe.service;

import com.betrybe.entities.DeliveryRequest;
import com.betrybe.entities.StatusRequest;
import com.betrybe.enuns.Status;
import com.betrybe.models.Delivery;
import com.betrybe.models.Drone;
import com.betrybe.models.Position;
Expand All @@ -9,6 +11,7 @@
import com.betrybe.repository.DroneRepository;
import com.betrybe.repository.PositionRepository;
import com.betrybe.repository.VideoRepository;
import com.betrybe.util.FormaterForLocalDateTime;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import jakarta.transaction.Transactional;
Expand All @@ -34,22 +37,51 @@ public List<Delivery> getAll() {
return deliveryRepository.listAll();
}

public Delivery findById(Integer id) {
return deliveryRepository.findById(id);
}

@Transactional
public Delivery created(DeliveryRequest deliveryRequest) {
Delivery delivery = new Delivery();

Drone drone = droneRepository.findById(deliveryRequest.getDroneId());

delivery.setDrone(drone);

Position position = deliveryRequest.getPosition();
delivery.setPosition(position);
positionRepository.persist(position);

delivery.setSchedule_delivery(LocalDateTime.now());
delivery.setDrone(drone);
delivery.setPosition(position);
LocalDateTime dateTimeSchedule = FormaterForLocalDateTime.conversor(deliveryRequest.getSchedule_delivery());
delivery.setSchedule_delivery(dateTimeSchedule);

delivery.setStatus(deliveryRequest.getStatus());

deliveryRepository.persist(delivery);
return delivery;
}

@Transactional
public Status updateStatus(Integer id, StatusRequest statusRequest) {
Delivery delivery = deliveryRepository.findById(id);
Status status = null;
switch (statusRequest.getStatus()) {
case "ONROUTE":
status = Status.ONROUTE;
break;
case "FINISHED":
status = Status.FINISHED;
break;
case "CANCELED":
status = Status.CANCELED;
break;
}
delivery.setStatus(status);
deliveryRepository.persist(delivery);
return status;
}

@Transactional
public Delivery update(Integer id, DeliveryRequest deliveryRequest) {
Delivery delivery = deliveryRepository.findById(id);
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/betrybe/service/DroneService.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ public class DroneService {
DroneRepository droneRepository;

@Transactional
public String create(Drone droneRequest) {
public Drone create(Drone droneRequest) {
Drone drone = new Drone();
drone.setBrand(droneRequest.getBrand());
drone.setModel(droneRequest.getModel());
droneRepository.persist(drone);
return "Created";
return drone;
}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class formaterForLocalDateTime {
public static LocalDateTime conversos(String dataHoraStr){
public class FormaterForLocalDateTime {
public static LocalDateTime conversor(String dataHoraStr){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy-HH:mm");
LocalDateTime dataHora = LocalDateTime.parse(dataHoraStr, formatter);
return dataHora;
Expand Down

0 comments on commit 3236e66

Please sign in to comment.