using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FlowControl
{
    class Examples52_54
    {
        public static void SimpleSwitch()
        {
            string workStatus = "BrakZblizajacegoSieTerminu";

            // Listing 2-52
            switch (workStatus)
            {
                case "SzefWPracowni":
                    WorkDiligently();
                    break;

                case "BrakZblizajacegoSieTerminu":
                case "TerminNaKarku":
                    CheckTwitter();
                    CheckEmail();
                    CheckTwitter();
                    ContemplateGettingOnWithSomeWork();
                    CheckTwitter();
                    CheckTwitter();
                    break;

                case "TerminZostalPrzekroczony":
                    WorkFuriously();
                    break;

                default:
                    CheckTwitter();
                    CheckEmail();
                    break;
            }
        }

        private static void WorkFuriously()
        {
            Console.WriteLine("Zajęty... jestem zajęty!");
        }

        private static void ContemplateGettingOnWithSomeWork()
        {
            Console.WriteLine("A może by tak... ocho! Facebook!");
        }

        private static void CheckEmail()
        {
            Console.WriteLine("Sprawdzam pocztę");
        }

        private static void CheckTwitter()
        {
            Console.WriteLine("Sprawdzam Twittera");
        }

        private static void WorkDiligently()
        {
            Console.WriteLine("Zajęty");
        }

        //// Kod umieszczony w komentarzu gdyż ilustruje błąd.
        //public static void IllegalFallThrough()
        //{
        //    string x = "Jeden";

        //    // Listing 2-53
        //    switch (x)
        //    {
        //        case "Jeden":
        //            Console.WriteLine("One");
        //        case "Dwa":  // Tego kodu nie uda się skompilować!
        //            Console.WriteLine("Jeden i dwa");
        //            break;
        //    }
        //}

        public static void FallThrough()
        {
            string x = "Jeden";

            // Listing 2-54
            switch (x)
            {
                case "Jeden":
                    Console.WriteLine("Jeden");
                    goto case "Dwa";
                case "Dwa":
                    Console.WriteLine("Jeden i dwa");
                    break;
            }
        }
    }
}
