package com.sonymusic.dx.dxadvsearchservice.controllers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.sonymusic.dx.dxadvsearchservice.model.ListModel;
import com.sonymusic.dx.dxadvsearchservice.model.ParticipantModel;
import com.sonymusic.dx.dxadvsearchservice.searchModel.ParticipantSearchModel;
import com.sonymusic.dx.dxadvsearchservice.service.ParticipantService;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;

@Tag(name = "Participants", description = "Participant Advanced Search")
@RestController
@RequestMapping("/participants")
public class ParticipantAdvSearchController {

    @Autowired
    private ParticipantService participantService;

    @Operation(
            summary = "Search artists",
            description = "Advanced search on Participants.",
            responses = {
                    @ApiResponse(responseCode = "200", description = "OK"),
                    @ApiResponse(responseCode = "400", description = "Bad request")
            }
    )
    @PostMapping("/advSearchParticipant")
    public ListModel<ParticipantModel> getAdvSearchParticipants(@RequestBody ParticipantSearchModel participant,
                                                          @RequestParam(defaultValue = "1")int page,
                                                          @RequestParam(defaultValue = "20")int size) {
        return participantService.advSearchParticipant(participant,page,size);
    }
}
