package com.hpay.hpay_mobile_api.controllers;

import com.hpay.hpay_mobile_api.DTO.SochitelResponseDto;
import com.hpay.hpay_mobile_api.entities.Sochitel;
import com.hpay.hpay_mobile_api.services.SochitelService;
import com.hpay.hpay_mobile_api.DTO.SochitelRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;

import java.time.LocalDateTime;


@RestController
@RequestMapping("/api/sochitel")
@RequiredArgsConstructor
public class SochitelController {

    private final SochitelService sochitelService;

    @GetMapping("/transactions")
    public Page<SochitelResponseDto> getTransactions(
            @RequestParam(required = false) Integer idClient,
            @RequestParam(required = false) Integer idCompte,
            @RequestParam(required = false) LocalDateTime dateStart,
            @RequestParam(required = false) LocalDateTime dateEnd,
            @RequestParam(defaultValue = "0") int page,
            @RequestParam(defaultValue = "10") int size,
            @RequestParam(defaultValue = "desc") String sortDirection
    ) {
        return sochitelService.getTransactions(idClient, idCompte, dateStart, dateEnd, page, size, sortDirection);
    }


    @PostMapping("/insert")
    public ResponseEntity<Sochitel> create(@Valid @RequestBody SochitelRequest request) {
        Sochitel saved = sochitelService.insert(request);
        return ResponseEntity.ok(saved);
    }

}
