using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Numeroloji.Controllers
{
    public class Data
    {
        private static List<Alfabe> AlfabeListesi()
        {
            List<Alfabe> liste = new List<Alfabe>()
            {
                new Alfabe { Harf = "A", Deger = 1 },
                new Alfabe { Harf = "B", Deger = 2 },
                new Alfabe { Harf = "C", Deger = 3 },
                new Alfabe { Harf = "Ç", Deger = 3 },
                new Alfabe { Harf = "D", Deger = 4 },
                new Alfabe { Harf = "E", Deger = 5 },
                new Alfabe { Harf = "F", Deger = 6 },
                new Alfabe { Harf = "G", Deger = 7 },
                new Alfabe { Harf = "Ğ", Deger = 7 },
                new Alfabe { Harf = "H", Deger = 8 },
                new Alfabe { Harf = "I", Deger = 9 },
                new Alfabe { Harf = "İ", Deger = 9 },
                new Alfabe { Harf = "J", Deger = 1 },
                new Alfabe { Harf = "K", Deger = 2 },
                new Alfabe { Harf = "L", Deger = 3 },
                new Alfabe { Harf = "M", Deger = 4 },
                new Alfabe { Harf = "N", Deger = 5 },
                new Alfabe { Harf = "O", Deger = 6 },
                new Alfabe { Harf = "Ö", Deger = 6 },
                new Alfabe { Harf = "P", Deger = 7 },
                new Alfabe { Harf = "R", Deger = 9 },
                new Alfabe { Harf = "S", Deger = 1 },
                new Alfabe { Harf = "Ş", Deger = 1 },
                new Alfabe { Harf = "T", Deger = 2 },
                new Alfabe { Harf = "U", Deger = 3 },
                new Alfabe { Harf = "Ü", Deger = 3 },
                new Alfabe { Harf = "V", Deger = 4 },
                new Alfabe { Harf = "Y", Deger = 7 },
                new Alfabe { Harf = "Z", Deger = 8 }
            };

            return liste;
        }

        //Ad Hesapla
        public static int AdRakamsalDeger(string Ad)
        {

            var harfler = Ad.Replace(" ","-").ToCharArray();
            int toplam = 0;

            foreach (var h in harfler)
            {
                if(h != '-')
                    toplam += AlfabeListesi().Where(i => i.Harf.Contains(h)).FirstOrDefault().Deger;
            }

            Kontrol:
            if (toplam > 9)
            {
                if (toplam == 11 || toplam == 22) return toplam;

                var rakamlar = toplam.ToString().ToCharArray();
                toplam = 0;

                foreach (var r in rakamlar)
                {
                    toplam += (int)(char.GetNumericValue(r));
                }

                goto Kontrol;
            }

            return toplam;
        }

        //Dogum Tarihi Hesapla
        public static int DogumTarihiRakamsalDeger(string DogumTarihi)
        {
            Kontrol:
            var rakamlar = DogumTarihi.ToCharArray();
            int toplam = 0;

            foreach (var r in rakamlar)
            {
                toplam += (int)(char.GetNumericValue(r));
            }

            if (toplam > 9)
            {
                if (toplam == 11 || toplam == 22) return toplam;

                DogumTarihi = toplam.ToString();

                goto Kontrol;
            }

            return toplam;
        }

        //Bu Yilin Hesapla
        public static int YilRakamsalDeger()
        {
            string buYil = DateTime.Today.Year.ToString();

            Kontrol:
            var rakamlar = buYil.ToCharArray();
            int toplam = 0;

            foreach (var r in rakamlar)
            {
                toplam += (int)(char.GetNumericValue(r));
            }

            if (toplam > 9)
            {
                buYil = toplam.ToString();

                goto Kontrol;
            }

            return toplam;
        }
    }

    public class Alfabe
    {
        public string Harf { get; set; }
        public int Deger { get; set; }
    }

    /*
     * ASPXPLUS.Net Hazir Web Yazilim Paketleri
     * NİSAN 2017
     */
}