using System.ComponentModel.DataAnnotations;

namespace LittleShop.DTOs;

public class ShippingRateDto
{
    public Guid Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public string? Description { get; set; }
    public string Country { get; set; } = string.Empty;
    public decimal MinWeight { get; set; }
    public decimal MaxWeight { get; set; }
    public decimal Price { get; set; }
    public int MinDeliveryDays { get; set; }
    public int MaxDeliveryDays { get; set; }
    public bool IsActive { get; set; }
    public DateTime CreatedAt { get; set; }
    public DateTime UpdatedAt { get; set; }
}

public class CreateShippingRateDto
{
    [Required]
    [StringLength(100)]
    public string Name { get; set; } = string.Empty;
    
    [StringLength(500)]
    public string? Description { get; set; }
    
    [Required]
    [StringLength(100)]
    public string Country { get; set; } = "United Kingdom";
    
    [Required]
    [Range(0, double.MaxValue)]
    public decimal MinWeight { get; set; }
    
    [Required]
    [Range(0, double.MaxValue)]
    public decimal MaxWeight { get; set; }
    
    [Required]
    [Range(0, double.MaxValue)]
    public decimal Price { get; set; }
    
    [Required]
    [Range(1, 365)]
    public int MinDeliveryDays { get; set; } = 1;
    
    [Required]
    [Range(1, 365)]
    public int MaxDeliveryDays { get; set; } = 3;
    
    public bool IsActive { get; set; } = true;
}

public class UpdateShippingRateDto : CreateShippingRateDto
{
}