package itn.let.mail.service;

import java.time.LocalDateTime;

import org.springframework.http.HttpStatus;

import itn.let.mjo.pay.service.RefundVO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * 
 * @packageName : itn.let.mail.service 
 * @fileName 	: SuccessResponse.java 
 * @author 		: 이호영 
 * @date 		: 2022.07.04
 * @description : RestApi 응답에 사용할 Class
 * @TODO : CLASS 위치를 다시 잡아서 사용해야함
 * =========================================================== 
 * DATE          AUTHOR   NOTE 
 * ----------------------------------------------------------- *
 * 2022.07.04    이호영      최초 생성
 * 
 * 
 * 
 */



/*
 * • 1XX : 조건부 응답
 * • 2XX : 성공
 * • 3XX : 리다이렉션 완료
 * • 4XX : 요청 오류
 * • 500 : 서버 오류
 *
 * 참고 : https://km0830.tistory.com/33
 *
 * ====== 자주 사용하는 코드 =====
 * 200 : Ok : 서버가 클라이언트의 요청을 성공적으로 처리, 웹 페이지에서는 페이지 요청이 정상적으로 완료 (Ok)
 * 400 : Bad Request : 잘못 요청 (Bad Request)
 * 401 : Unauthorized : 권한 없음, 예를 들면, 로그인 페이지가 필요한 페이지를 로그인 없이 접속하려는 경우 반환되는 코드 (인증 실패) (Unauthorized)
 *
 * */
@Getter
@Setter
@NoArgsConstructor
public class StatusResponse {

	private  HttpStatus status;

	private  String message;
	
	private  RefundVO refundVO;
	
	private  Object object;
	
	private  String messageTemp;

	private LocalDateTime timestamp;

	public StatusResponse(HttpStatus status, RefundVO refundVO, LocalDateTime timestamp) {
		this.status = status;
		this.refundVO = refundVO;
		this.timestamp = timestamp;
	}
	
	public StatusResponse(HttpStatus status, Object object, LocalDateTime timestamp) {
		this.status = status;
		this.object = object;
		this.timestamp = timestamp;
	}
	
	public StatusResponse(HttpStatus status, String message, LocalDateTime timestamp) {
		this.status = status;
		this.message = message;
		this.timestamp = timestamp;
	}

	public StatusResponse(HttpStatus status, String message, String messageTemp, LocalDateTime timestamp) {
		this.status = status;
		this.message = message;
		this.timestamp = timestamp;
		this.messageTemp = messageTemp;
	}

	public StatusResponse(HttpStatus status, String message) {
		this.status = status;
		this.message = message;
	}


	public StatusResponse(HttpStatus status, String message, Object object) {
		this.status = status;
		this.message = message;
		this.object = object;
	}
	
 
	
	
}
