using System; using System.Collections.Generic; namespace Yavsc.Api.Client; /// /// A single billable line of an estimate, mirroring the JSON shape of /// the server-side Yavsc.Models.Billing.CommandLine entity. /// public sealed class EstimateLineDto { public long Id { get; set; } public string Name { get; set; } = string.Empty; public string Description { get; set; } = string.Empty; public int Count { get; set; } = 1; public decimal UnitaryCost { get; set; } public long EstimateId { get; set; } public string Currency { get; set; } = "EUR"; } /// /// Estimate payload exchanged with the api/v1/estimate routes /// (EstimateApiController). and /// are always initialised: the server-side /// entity reads them from non-nullable string properties and a null /// list would break its serialisation. /// public sealed class EstimateDto { public long Id { get; set; } public long? CommandId { get; set; } public string Title { get; set; } = string.Empty; public string Description { get; set; } = string.Empty; public List Bill { get; set; } = new(); public List AttachedGraphics { get; set; } = new(); public List AttachedFiles { get; set; } = new(); public string? OwnerId { get; set; } public string ClientId { get; set; } = string.Empty; public string CommandType { get; set; } = string.Empty; public DateTime ProviderValidationDate { get; set; } public DateTime ClientValidationDate { get; set; } } /// /// Response of a successful estimate creation /// (Ok(new { estimate.Id, estimate.Bill })). /// public sealed class EstimateCreatedDto { public long Id { get; set; } public List Bill { get; set; } = new(); }