// Asker Dagitim Otomasyonu | Ali AKYILDIRIM | www.aliakyildirim.com
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
// Asker Dagitim Otomasyonu | Ali AKYILDIRIM | www.aliakyildirim.com
namespace Askerr
{
    public partial class Form1 : Form
    {
        // Asker Dagitim Otomasyonu | Ali AKYILDIRIM | www.aliakyildirim.com
        // Kisiler ve Bölgeler’e Bagli Birer Dizi Olusturalim:
        ArrayList kisilerDizisi = new ArrayList();
        ArrayList bolgelerDizisi = new ArrayList();
        // Kisiler Tablosundan, Rasgele isimler üretelim:
        Random rastgeleKisi = new Random();
        // Bölge’nin Baslangiç degeri 0 (Sifir) Olsun:
        int bolge = 0;
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            // AskeriEkle metodunu tanimlayalim:
            AskeriEkle();
        }
        private void AskeriEkle()
        {
            // Kisiler TextBox’inda Girilen Bir Deger Varsa; Buton Tiklandiginda ListBox1’e ve Kisiler Dizisine Ekle:
            if (textBox1.Text != "" || textBox1.Text != null)
            {
                listBox1.Items.Add(textBox1.Text);
                kisilerDizisi.Add(textBox1.Text);
                // TextBox1’i Temizle ve Fokus Yap:
                textBox1.Clear();
                textBox1.Focus();
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                // dagit() Metodunu Çalistir:
                dagit();
            }
            catch (Exception)
            { }
        }
        private void dagit()
        {
            // Kisiler Dizisinin Eleman Sayisina ’kisi’ diyelim:
            int kisi = kisilerDizisi.Count;
            // For Döngüsü Olusturalim:
            for (int i = 0; i 
            {
                // Eger, Baslangiçta Tanimladigimiz ’bolge’ degiskeni ile ’bolgelerDizisi’ nin Eleman Sayilari Esitse:
                if (bolge == bolgelerDizisi.Count)
                {
                    // bolge 0 (sifir) olsun:
                    bolge = 0;
                }
                // Global’de Tanimladigimiz ’rastgeleKisi’ Degiskeni Için; Sifir’dan-Kisiler Dizisinin
                // Eleman Sayisinin Bir Eksigine Kadar Rasgele Deger Üretelim ve Buna ’rasgeleKisi’ Diyelim:
                int rasgeleKisi = rastgeleKisi.Next(0, kisilerDizisi.Count);
                // Eslesmeler Tablosunda Kisiler Dizisindeki Rasgele Kisileri ve
                // Bölgeler Dizisindeki Bölgeleri Aralarinda Tire (-) Isareti Koyarak Göster:
                listBox3.Items.Add(kisilerDizisi[rasgeleKisi] + " - " + bolgelerDizisi[bolge]);
                // ’bolge’ Degerini Bir Arttir:
                bolge++;
                // Kisiler Dizisindeki Rasgele Kisileri Temizle (Kaldir):
                kisilerDizisi.RemoveAt(rasgeleKisi);
            }
            // ListBox’lar Bos Degilse:
            int lb1 = listBox1.Items.Count;
            int lb2 = listBox2.Items.Count;
            if (lb1 != 0 || lb2 != 0)
            {
                // Dagitim Yap Butonunu "Disable" Yap:
                button3.Enabled = false;
            }
            else
            {
                button3.Enabled = true;
            }
        }
        private void button2_Click(object sender, EventArgs e)
        { BolgeyiEkle(); }
        // BölgeyiEkle Fonksiyonu Olusturalim:
        private void BolgeyiEkle()
        {
            // Bölgeler TextBox’inda Girilen Bir Deger Varsa; Buton Tiklandiginda ListBox2’ye ve Bölgeler Dizisine Ekle:
            if (textBox2.Text != "")
            {
                listBox2.Items.Add(textBox2.Text);
                bolgelerDizisi.Add(textBox2.Text);
                // TextBox2’yi Temizle ve Fokus Yap:
                textBox2.Clear();
                textBox2.Focus();
            }
        }
        private void button4_Click(object sender, EventArgs e)
        {
            // Eslesmeler Tablosunu Temizle:
            listBox3.Items.Clear();
            textBox1.Focus();
        }
        private void button5_Click(object sender, EventArgs e)
        {
            // Bölgeler Dizisinden Kaldir (Sil): (Bunu Yapmazsak, ListBox2’den Sildigimiz Herhangi Bir Item Için Dagit Yapinca Silnmemis Gibi Islem Görür:
            bolgelerDizisi.Remove(listBox2.Text);
            // Bölgeler Tablosundaki Degeri Kaldir (Sil):
            listBox2.Items.Remove(listBox2.Text);
            // Bölgeler TextBox’ina Odaklan:
            textBox2.Focus();
        }
        private void button6_Click(object sender, EventArgs e)
        {
            // Kisiler Dizisinden Kaldir (Sil): (Bunu Yapmazsak, ListBox1’den Sildigimiz Herhangi Bir Item Için Dagit Yapinca Silnmemis Gibi Islem Görür:
            kisilerDizisi.Remove(listBox1.Text);
            // Kisiler Tablosundaki Degeri Kaldir (Sil):
            listBox1.Items.Remove(listBox1.Text); 
            // Kisiler TextBox’ina Odaklan:
            textBox1.Focus();
        }
        private void button7_Click(object sender, EventArgs e)
        {
            // Dagitim Yap Butonunu "Enable" Yap:
            button3.Enabled = true;
            // Tüm Tablolari Temizle ve Kisiler Tablosuna Odaklan:
            listBox1.Items.Clear();
            listBox2.Items.Clear();
            listBox3.Items.Clear();
            textBox1.Focus();
        }
        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            // Kisiler TextBox’inda yazdiktan sonra "Enter" ’a basinca Basta tanimladigimiz AskeriEkle fonksiyonunu çalistir. (Kisiler ListBox’ina Ekle)
            if (e.KeyCode == Keys.Enter)
            {
                AskeriEkle();
                // Not: Multicolumn "false" olmali:
            }
        }
        private void textBox2_KeyDown(object sender, KeyEventArgs e)
        {
            // Bölgeler TextBox’inda yazdiktan sonra "Enter" ’a basinca Basta tanimladigimiz BolgeyiEkle fonksiyonunu çalistir. (Bölgeler ListBox’ina Ekle)
            if (e.KeyCode == Keys.Enter)
            {
                BolgeyiEkle();
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Focus();
        }
    }
}
// Asker Dagitim Otomasyonu | Ali AKYILDIRIM | www.aliakyildirim.com