package be.swsb.fiazard.ordering.openinghours;
import be.swsb.fiazard.common.error.ErrorR;
import com.codahale.metrics.annotation.Timed;
import com.google.common.collect.Lists;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiResponse;
import com.wordnik.swagger.annotations.ApiResponses;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.time.DayOfWeek;
import java.time.LocalTime;
import java.util.List;
@Api(value = OpeningHourResourceV1.OPENING_HOUR_BASE_URI, description = "Operations about opening hours")
@Path(OpeningHourResourceV1.OPENING_HOUR_BASE_URI)
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class OpeningHourResourceV1 {
public static final String OPENING_HOUR_BASE_URI = "/v1/openinghours";
private static final List<OpeningHourR> openingHours;
private static final OpeningHourR mondayOpeningHour = new OpeningHourR.Builder()
.withDayOfWeek(DayOfWeek.MONDAY)
.withHour(new OpenPeriodR.Builder()
.withFrom(LocalTime.of(9, 30))
.withUntil(LocalTime.of(17, 30))
.build())
.build();
private static final OpeningHourR tuesdayOpeningHour = new OpeningHourR.Builder()
.withDayOfWeek(DayOfWeek.TUESDAY)
.withHour(new OpenPeriodR.Builder()
.withFrom(LocalTime.of(9, 30))
.withUntil(LocalTime.of(17, 30))
.build())
.build();
private static final OpeningHourR wednesdayOpeningHour = new OpeningHourR.Builder()
.withDayOfWeek(DayOfWeek.WEDNESDAY)
.withHour(new OpenPeriodR.Builder()
.withFrom(LocalTime.of(9, 30))
.withUntil(LocalTime.of(17, 30))
.build())
.build();
private static final OpeningHourR thursdayOpeningHour = new OpeningHourR.Builder()
.withDayOfWeek(DayOfWeek.THURSDAY)
.withHour(new OpenPeriodR.Builder()
.withFrom(LocalTime.of(9, 30))
.withUntil(LocalTime.of(17, 30))
.build())
.build();
private static final OpeningHourR fridayOpeningHour = new OpeningHourR.Builder()
.withDayOfWeek(DayOfWeek.FRIDAY)
.withHour(new OpenPeriodR.Builder()
.withFrom(LocalTime.of(9, 30))
.withUntil(LocalTime.of(17, 30))
.build())
.build();
private static final OpeningHourR saturdayOpeningHour = new OpeningHourR.Builder()
.withDayOfWeek(DayOfWeek.SATURDAY)
.withHour(new OpenPeriodR.Builder()
.withFrom(LocalTime.of(9, 30))
.withUntil(LocalTime.of(17, 30))
.build())
.build();
private static final OpeningHourR sundayOpeningHour = new OpeningHourR.Builder()
.withDayOfWeek(DayOfWeek.SUNDAY)
.withHour(new OpenPeriodR.Builder()
.withFrom(LocalTime.of(9, 30))
.withUntil(LocalTime.of(17, 30))
.build())
.build();
static {
openingHours = Lists.newArrayList(
mondayOpeningHour,
tuesdayOpeningHour,
wednesdayOpeningHour,
thursdayOpeningHour,
fridayOpeningHour,
saturdayOpeningHour,
sundayOpeningHour);
}
@GET
@Timed
@ApiResponses(value = {
@ApiResponse(code = 200, response = OpeningHourR[].class, message = ""),
@ApiResponse(code = 403, response = ErrorR.class, message = "Unauthorized")
})
//TODO move to Managing Module?
public Response getAll() {
return Response.ok(openingHours, MediaType.APPLICATION_JSON_TYPE).build();
}
}