Esempio n. 1
0
 private tegundKennitolu FaTegund()
 {
     if (!string.IsNullOrWhiteSpace(Kt))
     {
         int    elm0;
         string str0 = Kt.Substring(0, 1);
         if (Int32.TryParse(str0, out elm0))
         {
             if (new List <string>()
             {
                 "0", "1", "2", "3"
             }.Contains(str0))
             {
                 return(tegundKennitolu.einstaklingur);
             }
             else if (new List <string>()
             {
                 "4", "5", "6", "7"
             }.Contains(str0))
             {
                 return(tegundKennitolu.fyrirtaeki);
             }
             else
             {
                 throw new Exception("Kennitölustrengur getur ekki verið löglegur");
             }
         }
     }
     throw new Exception("Kennitölustrengur getur ekki verið löglegur");
 }
Esempio n. 2
0
 /// <summary>
 /// Segir til um hvort kenitala er lögleg, þ.e. "well formed". En ekki hvort hún tilheyri einhverjum.
 /// </summary>
 /// <returns>Kennitala stenst vartölupróf</returns>
 public bool ErLogleg()
 {
     if ((!string.IsNullOrWhiteSpace(Kt)) && Kt.Count() == 10)
     {
         string stak0 = Kt.Substring(0, 1);
         string stak9 = Kt.Substring(9, 1);
         try
         {
             if (new int[] { 0, 1, 2, 3, 4, 5, 6, 7 }.Contains(Int32.Parse(stak0)) &&
                 new int[] { 0, 8, 9 }.Contains(Int32.Parse(stak9)))
             { //við erum með 10 staka streng sem byrjar og endar á réttri tölu
                 if (Int32.Parse(Kt.Substring(8, 1)) == FaVartolu())
                 {
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             }
         } catch (Exception e)
         {
             return(false);
         }
     }
     return(false);
 }
Esempio n. 3
0
 /// <summary>
 /// Reiknar vartölu fyrir kennitölu, þ.e. 9. stafinn í kennitölunni.
 /// Notar aðeins 8 stafi og því er mögulegt að skilgreina 8 stafi og reikna þann níunda.
 /// </summary>
 /// <returns>Vartölu (níunda staf) fyrir skilgreinda kennitölu</returns>
 public int FaVartolu()
 {
     try
     {
         int sum = 0;
         for (int i = 0; i < 8; i++)
         {
             sum += int.Parse(Kt.Substring(i, 1)) * margfeldi[i];
         }
         int vartala = 11 - (sum % 11);
         if (vartala == 11)
         {
             return(0);
         }
         else if (vartala == 10)
         {
             throw new Exception("Ekki hægt að reikna vartölu fyrir þennan kennitöluhluta");
         }
         else
         {
             return(vartala);
         }
     } catch (Exception e)
     {
         throw new Exception("Ekki hægt að reikna vartölu fyrir þennan kennitöluhluta", e);
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Reiknar fæðingardag eða stofndag út frá kennitölu.
        /// Kastar villu ef kennitala er ólögleg og ekki hægt að reikna dag.
        /// </summary>
        /// <returns>Fæðingar- eða stofndegi sem skilgreind kennitala gefur til kynna.</returns>
        public DateTime FaFaedingardag()
        {
            if (ErLogleg())
            {
                try
                {
                    int ar = 0;
                    switch (Kt.Substring(9, 1))
                    {
                    case "0":
                        ar = 2000;
                        break;

                    case "8":
                        ar = 1800;
                        break;

                    case "9":
                        ar = 1900;
                        break;
                    }
                    ar += Int32.Parse(Kt.Substring(4, 2));
                    if (Int32.Parse(Kt.Substring(0, 1)) > 3)
                    {
                        int day = (Int32.Parse(Kt.Substring(0, 1)) - 4) * 10 + Int32.Parse(Kt.Substring(1, 1));
                        return(new DateTime(ar, Int32.Parse(Kt.Substring(2, 2)), day));
                    }
                    else
                    {
                        return(new DateTime(ar, Int32.Parse(Kt.Substring(2, 2)), Int32.Parse(Kt.Substring(0, 2))));
                    }
                } catch (Exception e)
                {
                    throw new Exception("Ekki hægt að sækja dag úr kennitölu", e);
                }
            }
            throw new Exception("Ekki hægt að sækja dag úr ólöglegri kennitölu");
        }