using Nop.Web.Framework.Models;
using Nop.Web.Framework.Mvc.ModelBinding;

namespace Nop.Web.Areas.Admin.Models.Orders;

/// <summary>
/// Represents a recurring payment model
/// </summary>
public partial record RecurringPaymentModel : BaseNopEntityModel
{
    #region Ctor

    public RecurringPaymentModel()
    {
        RecurringPaymentHistorySearchModel = new RecurringPaymentHistorySearchModel();
    }

    #endregion

    #region Properties

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.ID")]
    public override int Id { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.CycleLength")]
    public int CycleLength { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.CyclePeriod")]
    public int CyclePeriodId { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.CyclePeriod")]
    public string CyclePeriodStr { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.TotalCycles")]
    public int TotalCycles { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.StartDate")]
    public string StartDate { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.IsActive")]
    public bool IsActive { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.NextPaymentDate")]
    public string NextPaymentDate { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.CyclesRemaining")]
    public int CyclesRemaining { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.InitialOrder")]
    public int InitialOrderId { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.Customer")]
    public int CustomerId { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.Customer")]
    public string CustomerEmail { get; set; }

    [NopResourceDisplayName("Admin.RecurringPayments.Fields.PaymentType")]
    public string PaymentType { get; set; }

    public bool CanCancelRecurringPayment { get; set; }

    public bool LastPaymentFailed { get; set; }

    public RecurringPaymentHistorySearchModel RecurringPaymentHistorySearchModel { get; set; }

    #endregion
}