package de.rwth.swc.sqa.api;

import de.rwth.swc.sqa.model.Customer;
import org.springframework.stereotype.Controller;

import de.rwth.swc.sqa.model.Ticket;
import de.rwth.swc.sqa.model.TicketRequest;
import de.rwth.swc.sqa.model.TicketValidationRequest;
import io.swagger.annotations.*;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore;

import javax.validation.Valid;
import javax.validation.constraints.*;
import java.util.List;
import java.util.Map;
import java.util.Optional;

@Controller
@RequestMapping("/tickets")
public class TicketController implements TicketsApi{
    Customer customer;

    @PostMapping("")
    public ResponseEntity<Ticket> buyTicket(@ApiParam(value = "TicketRequest object" ,required=true )  @Valid @RequestBody TicketRequest body) {
        getRequest().ifPresent(request -> {
            for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) {
                if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
                    String exampleString = "{ \"birthdate\" : \"1992-01-01\", \"validFor\" : \"1h\", \"zone\" : \"A\", \"student\" : true, \"discountCard\" : true, \"disabled\" : true, \"id\" : 0, \"validFrom\" : \"2020-10-29T10:38:59\" }";
                    ApiUtil.setExampleResponse(request, "application/json", exampleString);
                    break;
                }
            }
        });
        return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
    }

    @PostMapping("/validate")
    public ResponseEntity<Void> validateTicket(@ApiParam(value = "TicketValidationRequest object that needs to validated" ,required=true )  @Valid @RequestBody TicketValidationRequest body) {
        return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);

    }
}