using FruitBank.Common.Entities; using Microsoft.AspNetCore.Http; using Nop.Web.Framework.Models; using System.ComponentModel.DataAnnotations; namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models { public record EditShippingModel : BaseNopModel { public int Id { get; set; } public string LicencePlate { get; set; } [Required] public DateTime ShippingDate { get; set; } public bool IsAllMeasured { get; set; } // List of existing documents associated with this Shipping public List ExistingDocuments { get; set; } = new(); // For tracking newly uploaded files during the session public List NewlyUploadedFiles { get; set; } = new(); } public class ShippingDocumentModel { public int Id { get; set; } public ShippingDocument ShippingDocument { get; set; } public string FileName { get; set; } public string FilePath { get; set; } public int FileSize { get; set; } // in KB public DateTime UploadDate { get; set; } public string ContentType { get; set; } public bool IsActive { get; set; } = true; // Computed properties for display public string FormattedFileSize => $"{FileSize:N0} KB"; public string FormattedUploadDate => UploadDate.ToString("yyyy-MM-dd HH:mm"); } // Result model for AJAX operations public class DocumentOperationResult { public bool Success { get; set; } public string Message { get; set; } public ShippingDocumentModel Document { get; set; } public int DocumentId { get; set; } } // Model for bulk operations public class BulkDocumentOperation { public List DocumentIds { get; set; } = new(); public string Operation { get; set; } // "delete", "activate", "deactivate" } }