using FruitBank.Common.Dtos;
using FruitBank.Common.Enums;
using Mango.Nop.Core.Dtos;
using Mango.Nop.Core.Interfaces;
using Mango.Nop.Core.Interfaces.ForeignKeys;

namespace FruitBank.Common.Interfaces;

public interface IOrderDto : IMgOrderDto<OrderItemDto, ProductDto>, IMeasured, IMeasurable, IMeasurableStatus, IGenericAttributeForeignCollection<List<GenericAttributeDto>>
{
    DateTime? DateOfReceipt { get; }
    DateTime DateOfReceiptOrCreated { get; }

    string TimeOfReceiptText { get; }

    int RevisorId { get; }
    int MeasurementOwnerId { get; }

    string? LicensePlate { get; }
    OrderSiteSnapshot? Site { get; }

    bool IsComplete { get; }
    bool HasMeasuringAccess(int? customerId, bool isRevisorUser = false);

    bool IsOtherMeasuringInProgress(int? customerId);
}