package com.dne.ems.dto;

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;

/**
 * 位置更新请求数据传输对象
 *
 * <p>用于接收用户位置更新请求，包含经纬度坐标信息。
 * 主要用于网格员上报当前位置或移动设备用户更新位置信息。</p>
 *
 * <p>验证规则：
 * <ul>
 *   <li>纬度范围必须在-90到90度之间</li>
 *   <li>经度范围必须在-180到180度之间</li>
 * </ul>
 *
 * @param latitude 纬度坐标，有效范围-90到90度
 * @param longitude 经度坐标，有效范围-180到180度
 * @version 1.0
 * @since 2024
 */
public record LocationUpdateRequest(
        @NotNull(message = "Latitude cannot be null")
        @Min(value = -90, message = "Latitude must be between -90 and 90")
        @Max(value = 90, message = "Latitude must be between -90 and 90")
        Double latitude,

        @NotNull(message = "Longitude cannot be null")
        @Min(value = -180, message = "Longitude must be between -180 and 180")
        @Max(value = 180, message = "Longitude must be between -180 and 180")
        Double longitude
) {}