private ZodiacReply FindSignForDate(BirthDateRequest birthDate)
        {
            var day   = birthDate.Day;
            var month = birthDate.Mo;
            var year  = birthDate.Year;

            var season = Seasons.Spring;
            var sign   = ZodiacSign.Aquarius;

            var signRanges = ReadSignFile();

            int signIndex = -1;

            foreach (var signRange in signRanges)
            {
                if ((month == signRange.StartMonth && day >= signRange.StartDay) || (month == signRange.EndMonth && day <= signRange.EndDay))
                {
                    signIndex = signRange.SignIndex;
                    break;
                }
            }

            if (signIndex > -1)
            {
                if (month == 1 || month == 2 || month == 12)
                {
                    season = Seasons.Winter;
                }
                else if (month == 3 || month == 4 || month == 5)
                {
                    season = Seasons.Spring;
                }
                else if (month == 6 || month == 7 || month == 8)
                {
                    season = Seasons.Summer;
                }
                else if (month == 9 || month == 10 || month == 11)
                {
                    season = Seasons.Fall;
                }

                return(new ZodiacReply()
                {
                    Season = season, Sign = (ZodiacSign)signIndex
                });
            }
            else
            {
                Console.WriteLine("Could not find sign");
                return(null);
            }
        }
        public override Task <ZodiacReply> findZodie(BirthDateRequest request, ServerCallContext context)
        {
            Console.WriteLine("Request: " + request.Day + "/" + request.Mo + "/" + request.Year);

            Task <ZodiacReply> reply = null;

            try
            {
                reply = Task.FromResult(FindSignForDate(request));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

            return(reply);
        }
        private static BirthDateRequest PromptBirthday()
        {
            Console.Write("Date of birth: ");
            var dateOfBirthStr = Console.ReadLine();

            if (dateOfBirthStr == null || !IsDateValid(dateOfBirthStr))
            {
                Console.WriteLine("Invalid date!");
                System.Environment.Exit(1);
            }

            var fields = dateOfBirthStr.Split('/');

            var bdr = new BirthDateRequest();

            bdr.Day  = Int32.Parse(fields[0]);
            bdr.Mo   = Int32.Parse(fields[1]);
            bdr.Year = Int32.Parse(fields[2]);

            return(bdr);
        }