using bdAntifraude.dbcontext;

namespace bdAntifraude.db
{
    public partial class VIDA_ADMINISTRATIVA
    {
        /// <summary>
        /// Obtiene la descripción de la causa administrativa.
        /// </summary>
        /// <summary>
        /// Obtiene la descripción de la causa administrativa.
        /// </summary>
        public string CAUSA
        {
            get
            {
                return IDMOTIVONavigation?.DESCRIPCION ?? string.Empty;
            }
        }

        /// <summary>
        /// Verifica si hay líneas relacionadas cargadas en la propiedad LINEASVIDAADMINISTRATIVA.
        /// </summary>
        public bool TIENELINEAS
        {
            get
            {
                return LINEASVIDAADMINISTRATIVA != null &&
                       LINEASVIDAADMINISTRATIVA.Any(linea => linea.IDVIDAADMIN == this.IDVIDA);
            }
        }

        public string MotivoTipo
        {
            get
            {
                return this.IDMOTIVONavigation?.IDTIPOAPTOSNavigation?.DESCRIPCION!;
            }
        }

        public string DescripcionNivel {
            get
            {
                string dn = "";
                if (this.NIVEL_OLDNavigation?.IDNIVEL != 0){
                    return this.NIVEL_OLDNavigation?.NIVEL1 ?? "";
                }
                return dn;
            }

        }
        public string DescripcionAdscripcion(List<TIPOS_PERSONAL> listaTP)
        {
            string des = "";
            if (this.NRP?.Trim().Length > 12)
            {
                var caracter = this.NRP.Substring(11, 1);
                if (listaTP.Any(x => x.TIPO_PERSONAL == caracter))
                {
                    return listaTP?.FirstOrDefault(x => x.TIPO_PERSONAL == caracter)?.DESCRIPCION!;
                }
            }
            return des;
        }

        public string DescripcionGrupo1 {
            get {
                string Des = "";
                if (this?.NRP?.Trim().Length > 12)
                {
                    if (this?.NRP.Trim().Length >= 16)
                    {
                        Des = this?.NRP.Substring(12, 2)!;
                    }
                    else
                    {
                        switch (this?.NRP.Substring(12, 1))
                        {
                            case "A":
                                {
                                    Des = "A1";
                                    break;
                                }
                            case "B":
                                {
                                    Des = "A2";
                                    break;
                                }
                            case "C":
                                {
                                    Des = "C1";
                                    break;
                                }
                            case "D":
                                {
                                    Des = "C2";
                                    break;
                                }
                            case "E":
                                {
                                    Des = "E";
                                    break;
                                }
                            case "I":
                                {
                                    Des = "I";
                                    if (this.NRP.Substring(13, 1) != "1")
                                    {
                                        Des = this.NRP.Substring(12, 2);
                                    }

                                    break;
                                }
                            case "V":
                                {
                                    Des = "V";
                                    break;
                                }
                        }
                    }
                }
                return Des;
            }
        }
    }
}
