package io.delphiplatform.api.v3.view;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

import io.delphiplatform.api.util.OffsetBasedPageRequest;
import io.delphiplatform.api.v3.model.Region;
import io.delphiplatform.api.v3.model.Regions;
import io.delphiplatform.api.v3.model.SortOrder;
import io.delphiplatform.api.v3.rdb.service.RegionService;

@Controller
@RequestMapping("${spring.data.rest.base-path:/v3}")
public class RegionsApiController implements RegionsApi {

    private final RegionService regionService;

    @Autowired
    public RegionsApiController(RegionService regionService) {
        this.regionService = regionService;
    }

    @Override
    public ResponseEntity<Region> findOne(String regionId) {
        return ResponseEntity.ok(regionService.findOne(regionId));
    }

    @Override
    public ResponseEntity<Regions> getSearchData(Integer limit, Integer offset, String sortBy, SortOrder sortOrder) {
        List<Region> items = regionService.find(OffsetBasedPageRequest.ofParamsToCamelCase(offset, limit, sortOrder, sortBy));
        return ResponseEntity.ok(new Regions().items(items).count(items.size()));
    }
}
