using System;
using System.Collections.Generic;
using AyaNova.Biz;
using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;

namespace AyaNova.Models
{
    //NOTE: Any non required field (nullable in DB) sb nullable here, i.e. decimal? not decimal, 
    //otherwise the server will call it an invalid record if the field isn't sent from client

    public class NotifyDeliveryLog
    {
        public long Id { get; set; }
        public uint Concurrency { get; set; }

        [Required]
        public DateTime Processed { get; set; }
        public AyaType AyaType { get; set; }
        public long ObjectId { get; set; }
        [Required]
        public NotifyEventType EventType { get; set; }
        [Required]
        public long NotifySubscriptionId { get; set; }
        [Required]
        public long IdValue { get; set; }
        [Required]
        public decimal DecValue { get; set; }
        [Required]
        public long UserId { get; set; }
        [Required]
        public NotifyDeliveryMethod DeliveryMethod { get; set; }
        [Required]
        public bool Fail { get; set; }
        public string Error { get; set; }


        public NotifyDeliveryLog()
        {
            Processed = DateTime.UtcNow;
            IdValue = 0;
            DecValue = 0;
            AyaType = AyaType.NoType;
            ObjectId = 0;
        }

        //linked entity
        public NotifySubscription NotifySubscription { get; set; }

    }//eoc

}//eons
