using System;
using System.Text.RegularExpressions;
using fatd_faturamento.ENTIDADE.API.Interfaces;

namespace fatd_faturamento.ENTIDADE.API.FaturaInstantanea.Request
{
    public class entidadeAPIFaturaInstantaneaAnalisarNormalRequest : entidadeAPIIRequestInterfaces
    {
        public string SISTEMA { get; set; }
        public string ZONA { get; set; }
        public string LIVRO { get; set; }
        public string CONTA { get; set; }
        public string LEITURAANTERIOR { get; set; }
        public string LEITURAATUAL { get; set; }
        public DateTime? DATALEITURAANTERIOR { get; set; }
        public DateTime? DATALEITURAATUAL { get; set; }
        public DateTime? DATAAPRESENTACAO { get; set; }
        public DateTime? DATAFATURAMENTO { get; set; }
        public DateTime? DATAVENCIMENTO { get; set; }
        public DateTime? DATAPROXIMALEITURA { get; set; }
        public DateTime? DATAVENCIMENTOPPUBLICO { get; set; }
        public bool FATURARCUSTODISPONIBILIDADE { get; set; }

        public bool Valido(out string Mensagem)
        {
            Mensagem = String.Empty;

            if (string.IsNullOrEmpty(SISTEMA) || SISTEMA.Trim() == string.Empty)
            {
                Mensagem = "SISTEMA não Informado";
                return false;
            }

            if (string.IsNullOrEmpty(ZONA) || ZONA.Trim() == string.Empty || !Regex.IsMatch(ZONA, @"^[0-9]+$"))
            {
                Mensagem = "ZONA não Informada";
                return false;
            }

            if (string.IsNullOrEmpty(LIVRO) || LIVRO.Trim() == string.Empty || !Regex.IsMatch(LIVRO, @"^[0-9]+$"))
            {
                Mensagem = "LIVRO não Informado";
                return false;
            }

            if (string.IsNullOrEmpty(CONTA) || CONTA.Trim() == string.Empty || !Regex.IsMatch(CONTA, @"^[0-9]+$"))
            {
                Mensagem = "CONTA não Informada";
                return false;
            }

            if (string.IsNullOrEmpty(LEITURAANTERIOR) || LEITURAANTERIOR.Trim() == string.Empty || !Regex.IsMatch(LEITURAANTERIOR, @"^[0-9]+$"))
            {
                Mensagem = "LEITURA ANTERIOR não Informada";
                return false;
            }

            if (string.IsNullOrEmpty(LEITURAATUAL) || LEITURAATUAL.Trim() == string.Empty || !Regex.IsMatch(LEITURAATUAL, @"^[0-9]+$"))
            {
                Mensagem = "LEITURA ATUAL não Informada";
                return false;
            }

            if (!DATALEITURAANTERIOR.HasValue)
            {
                Mensagem = "DATA LEITURA ANTERIOR não Informada";
                return false;
            }

            if (!DATALEITURAATUAL.HasValue)
            {
                Mensagem = "DATA LEITURA ATUAL não Informada";
                return false;
            }

            if (!DATAAPRESENTACAO.HasValue)
            {
                Mensagem = "DATA APRESENTAÇÃO não Informada";
                return false;
            }

            if (!DATAFATURAMENTO.HasValue)
            {
                Mensagem = "DATA FATURAMENTO não Informada";
                return false;
            }

            if (!DATAVENCIMENTO.HasValue)
            {
                Mensagem = "DATA VENCIMENTO não Informada";
                return false;
            }

            if (!DATAPROXIMALEITURA.HasValue)
            {
                Mensagem = "DATA PROXIMA LEITURA não Informada";
                return false;
            }

            if (!DATAVENCIMENTOPPUBLICO.HasValue)
            {
                Mensagem = "DATA VENCIMENTO P PUBLICO não Informada";
                return false;
            }

            return true;
        }

    }
}
