package com.app.Controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
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.RestController;

import com.app.Dto.AffaireDto;
import com.app.Dto.UpdateDateEffetRequest;
import com.app.Repository.SouscriptionRepository;
import com.app.Services.AffaireService;
import com.app.exceptions.AffaireNotFoundExcep;
@RestController
@RequestMapping("/api/v1/affaire")
public class AffaireController {
	@Autowired
	private AffaireService affaireService;

	private SouscriptionRepository sousRepository;

	@PostMapping("/save")
	public Long save(@RequestBody AffaireDto dtomp) {
		//System.out.println(dtomp.getEnfants().size());
		System.out.println(dtomp.getAssureDto().getCodePostal());
		return affaireService.save(dtomp);
	}

	@DeleteMapping("/delete/{id}")

	public void delete(@PathVariable Long id) throws AffaireNotFoundExcep {
		affaireService.delete(id);
	}

	/*@PostMapping("/AffaireEnfant")
	public AffaireSaveMany saveAffaire (@RequestBody AffaireSaveMany affaireDtoSavemany)

	{
		return affaireService.saveAffaire(affaireDtoSavemany);

			//missionService.addMissiontoEmplyee( e.nameEmployee, e.nameMission);

		}*/
	//Optional<Enfant> enfant = dindOneByEmal(String email);
	@GetMapping("/listerAffaire")
	public  List<AffaireDto> listeAffaire()
	{

	return affaireService.findAllAffaire();

	}

	@GetMapping("/AffaireByAssure/{id}")
	public  List<AffaireDto> AffaireAssure(@PathVariable Long id)
	{
		System.out.println(id);

	return affaireService.listeraffaireByAssure(id);

	}

	@GetMapping("/findOne/{id}")
	public  AffaireDto OneAffaireAssure(@PathVariable Long id)throws AffaireNotFoundExcep
	{
		System.out.println(id);

	   return affaireService.findById(id);

	}

	@GetMapping("/AffaireBySou/{id}")
	public  AffaireDto AffaireSous(@PathVariable Long id)throws AffaireNotFoundExcep
	{
	   return affaireService.findBySouscriptionId(id);

	}

	@PostMapping("/updatedateeffet")
    public ResponseEntity<Long> updateDateEffet(@RequestBody UpdateDateEffetRequest request) {
        Long updatedId = affaireService.updateDateEffet(request.getId(), request.getNewDateEffet());
        return ResponseEntity.ok(updatedId);
    }
	
	
	/*@GetMapping("/AffaireBySou/{id}")
	public   AffaireDto  AffaireSous(@PathVariable Long id)
	{
		Optional<Affaire> r = affaireRepository.findBySouscriptionId(id);
		if (r.isPresent()) {
			return AffaireDto.fromEntity(r.get()) ;
		}
		return null;
	}*/

}
