Add claims
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
package com.hzwnrw.insurance.controller;
|
||||
|
||||
import com.hzwnrw.insurance.dto.ClaimDTO;
|
||||
import com.hzwnrw.insurance.service.ClaimService;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/claim")
|
||||
public class ClaimController {
|
||||
|
||||
private final ClaimService claimService;
|
||||
|
||||
public ClaimController(ClaimService claimService) {
|
||||
this.claimService = claimService;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public ResponseEntity<Page<ClaimDTO>> getAllClaims(Pageable pageable) {
|
||||
Page<ClaimDTO> claims = claimService.getAllClaims(pageable);
|
||||
return ResponseEntity.ok(claims);
|
||||
}
|
||||
|
||||
@PostMapping("/add")
|
||||
public ResponseEntity<ClaimDTO> createClaim(@RequestBody ClaimDTO claim){
|
||||
return ResponseEntity.ok(claimService.createClaim(claim));
|
||||
}
|
||||
|
||||
@PutMapping("/{id}/status")
|
||||
public ClaimDTO updateStatus(@PathVariable Long id, @RequestParam String status) {
|
||||
return claimService.updateStatus(id, status);
|
||||
}
|
||||
}
|
||||
@@ -22,11 +22,12 @@ public class InsuranceController {
|
||||
return ResponseEntity.ok(insuranceService.createInsurance(insurance));
|
||||
}
|
||||
|
||||
@PostMapping("/all")
|
||||
@GetMapping("/all")
|
||||
public List<InsuranceDTO> getAllInsurance() {
|
||||
return insuranceService.getAllInsurance();
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/detail/{id}")
|
||||
public ResponseEntity<InsuranceDetailDTO> getInsuranceDetail(@PathVariable Long id) {
|
||||
InsuranceDetailDTO detail = insuranceService.getInsuranceDetailById(id);
|
||||
|
||||
25
src/main/java/com/hzwnrw/insurance/dto/ClaimDTO.java
Normal file
25
src/main/java/com/hzwnrw/insurance/dto/ClaimDTO.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package com.hzwnrw.insurance.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class ClaimDTO {
|
||||
|
||||
private Long id;
|
||||
private String name;
|
||||
private String policyID;
|
||||
private String claimReason;
|
||||
private double claimAmount;
|
||||
private String status;
|
||||
|
||||
public ClaimDTO(Long id, String name, String policyID, String claimReason, double claimAmount, String status) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.policyID = policyID;
|
||||
this.claimReason = claimReason;
|
||||
this.claimAmount = claimAmount;
|
||||
this.status = status;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.hzwnrw.insurance.exception;
|
||||
|
||||
public class ResourceNotFoundException extends RuntimeException {
|
||||
public ResourceNotFoundException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.hzwnrw.insurance.handler;
|
||||
|
||||
import com.hzwnrw.insurance.exception.ResourceNotFoundException;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
|
||||
@ControllerAdvice
|
||||
public class GlobalExceptionHandler {
|
||||
|
||||
@ExceptionHandler(ResourceNotFoundException.class)
|
||||
public ResponseEntity<String> handleResourceNotFound(ResourceNotFoundException ex) {
|
||||
return new ResponseEntity<>(ex.getMessage(), HttpStatus.NOT_FOUND);
|
||||
}
|
||||
}
|
||||
|
||||
32
src/main/java/com/hzwnrw/insurance/model/Claim.java
Normal file
32
src/main/java/com/hzwnrw/insurance/model/Claim.java
Normal file
@@ -0,0 +1,32 @@
|
||||
package com.hzwnrw.insurance.model;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "claim")
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class Claim {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@Column(name = "name", nullable = false)
|
||||
private String name;
|
||||
|
||||
@Column(name = "policy_id", nullable = false)
|
||||
private String policyID;
|
||||
|
||||
@Column(name = "claim_reason", nullable = false)
|
||||
private String claimReason;
|
||||
|
||||
@Column(name = "claim_amount", nullable = false)
|
||||
private double claimAmount;
|
||||
|
||||
@Column(name = "status")
|
||||
private String status;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.hzwnrw.insurance.repository;
|
||||
|
||||
import com.hzwnrw.insurance.model.Claim;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface ClaimRepository extends JpaRepository<Claim, Long> {
|
||||
}
|
||||
@@ -2,6 +2,8 @@ package com.hzwnrw.insurance.repository;
|
||||
|
||||
import com.hzwnrw.insurance.model.InsuranceDetail;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface InsuranceDetailRepository extends JpaRepository<InsuranceDetail, Long> {
|
||||
}
|
||||
|
||||
43
src/main/java/com/hzwnrw/insurance/service/ClaimService.java
Normal file
43
src/main/java/com/hzwnrw/insurance/service/ClaimService.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package com.hzwnrw.insurance.service;
|
||||
|
||||
import com.hzwnrw.insurance.dto.ClaimDTO;
|
||||
import com.hzwnrw.insurance.exception.ResourceNotFoundException;
|
||||
import com.hzwnrw.insurance.mapper.GenericMapper;
|
||||
import com.hzwnrw.insurance.model.Claim;
|
||||
import com.hzwnrw.insurance.repository.ClaimRepository;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class ClaimService {
|
||||
|
||||
private final ClaimRepository claimRepository;
|
||||
|
||||
public ClaimService(ClaimRepository claimRepository) {
|
||||
this.claimRepository = claimRepository;
|
||||
}
|
||||
|
||||
public Page<ClaimDTO> getAllClaims(Pageable pageable) {
|
||||
return claimRepository.findAll(pageable)
|
||||
.map(entity -> GenericMapper.mapToDTO(entity, ClaimDTO.class));
|
||||
}
|
||||
|
||||
|
||||
public ClaimDTO createClaim(ClaimDTO dto) {
|
||||
Claim entity = GenericMapper.mapToEntity(dto, Claim.class);
|
||||
Claim saved = claimRepository.save(entity);
|
||||
return GenericMapper.mapToDTO(saved, ClaimDTO.class);
|
||||
}
|
||||
|
||||
public ClaimDTO updateStatus(Long claimId, String status) {
|
||||
Claim claim = claimRepository.findById(claimId)
|
||||
.orElseThrow(() -> new ResourceNotFoundException("Claim not found with id " + claimId));
|
||||
|
||||
claim.setStatus(status);
|
||||
Claim updatedClaim = claimRepository.save(claim);
|
||||
|
||||
return GenericMapper.mapToDTO(updatedClaim,ClaimDTO.class);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -31,20 +31,16 @@ public class InsuranceService {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public InsuranceDTO createInsurance(InsuranceDTO dto) {
|
||||
Insurance entity = GenericMapper.mapToEntity(dto, Insurance.class);
|
||||
Insurance saved = insuranceRepository.save(entity);
|
||||
return GenericMapper.mapToDTO(saved, InsuranceDTO.class);
|
||||
}
|
||||
|
||||
|
||||
public InsuranceDetailDTO getInsuranceDetailById(Long id) {
|
||||
return insuranceDetailRepository.findById(id)
|
||||
.map(entity -> GenericMapper.mapToDTO(entity, InsuranceDetailDTO.class))
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user