using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

using Hiperscan.Spectroscopy.ReferenceChecks;

namespace Hiperscan.Extensions.ReferenceCheck.Control.Evaluation
{
    [Serializable]
    [DataContract]
    public class BlackResult
    {
        [DataMember]
        public string SerialNumber { get; set; }
        [DataMember]
        public bool BlackQualityAssuranceCheck { get; set; }
        [DataMember]
        public BlackReferenceCheckResult BlackReferenceCheckResult { get; set; }
    }

    [Serializable]
    [DataContract]
    public class WhiteResult
    {
        [DataMember]
        public string SerialNumber { get; set; }
        [DataMember]
        public StandardWhiteReferenceCheckResult StandardWhiteReferenceCheckResult { get; set; }
    }

    [Serializable]
    [DataContract]
    public class WhitePEResult
    {
        [DataMember]
        public string SerialNumber { get; set; }
        [DataMember]
        public SampleInsertWhiteReferenceCheckResult SampleInsertWhiteReferenceCheckResult { get; set; }
    }

    [Serializable]
    [DataContract]
    public class TransflectanceResult
    {
        [DataMember]
        public string SerialNumber { get; set; }
        [DataMember]
        public TransflectanceInsertCheckResult TransflectanceInsertCheckResult { get; set; }
    }


    [Serializable]
    [DataContract]
    public class BlackSessionResults
    {
        [DataMember]
        public int SessionNumber { get; set; }
        [DataMember]
        public List<BlackResult> BlackResults{ get; set; }
    }

    [Serializable]
    public class WhiteSessionResults
    {
        [DataMember]
        public int SessionNumber { get; set; }
        [DataMember]
        public List<WhiteResult> WhiteResults{ get; set; }
    }

    [Serializable]
    [DataContract]
    public class WhitePESessionResults
    {
        [DataMember]
        public int SessionNumber { get; set; }
        [DataMember]
        public List<WhitePEResult> WhitePEResults{ get; set; }
    }

    [Serializable]
    [DataContract]
    public class TransflectanceSessionResults
    {
        [DataMember]
        public int SessionNumber { get; set; }
        [DataMember]
        public List<TransflectanceResult> TransflectanceResults { get; set; }
    }
}
