Ejemplo n.º 1
0
        static void Main(string[] args)
        {                 /*
                           * Utilizando a StarWars APi helper
                           * passos: determinar o total das naves (count)
                           * -verificar dinamicamente quantas paginas existem no arquivo
                           * -retornar os dados (result) em um List
                           * - calcular o numero de paradas
                           * - exibir o List
                           *
                           */
            var  api = new StarWarsAPIClient();
            int  count;   // Total de registros
            bool proximo; // se contém próxima página
            int  naves_por_pagina;


            Console.Write("Entre a distância desejada em MGLT: ");

            Globals.MGLT = Console.ReadLine();

            List <Nave> Ship = new List <Nave>();

            int indice = 1;

            Console.Write("Buscando Dados das Naves...\n\n");
            Console.WriteLine(" ]|| ---INICIO DA TRANSMISSAO-- -||[ ");
            Nave novanave = new Nave();

            do
            {
                StarWarsEntityList <Starship> nave = api.GetAllStarshipAsync(indice.ToString()).Result;
                count            = Convert.ToInt32(nave.count);
                proximo          = nave.isNext;
                naves_por_pagina = nave.results.Count();

                foreach (var navinha in nave.results)
                {
                    novanave.Name              = navinha.name;
                    novanave.MGLT              = navinha.MGLT;
                    novanave.Consumables       = navinha.consumables;
                    novanave.ResupplyFrequency = CalculeResupplyFrequency(novanave);
                    if (novanave.ResupplyFrequency == "unknown")
                    {
                        novanave.ResupplyFrequency = "indeterminado";
                    }
                    ;

                    Ship.Add(novanave);

                    Console.WriteLine("Nave: " + novanave.Name + " : Número de Paradas : " + novanave.ResupplyFrequency);
                }
                indice++;
            } while (proximo == true);

            Console.WriteLine("||--- FIM DA TRANSMISSAO ---||\n\n");
            Console.WriteLine("PRESSIONE QUALQUER TECLA PARA FINALIZAR...");
            Console.ReadLine();
        }
Ejemplo n.º 2
0
        public static string CalculeResupplyFrequency(Nave starship)
        {
            //Function From https://github.com/scharamoose/

            if (!Regex.IsMatch(starship.MGLT, @"^\d+$"))
            {
                return(starship.MGLT);
            }

            DateTime JourneyStart = DateTime.Now;
            DateTime JourneyEnd   = DateTime.Now;

            string[] tokenisedProvisionsOfConsumables = starship.Consumables.Split(' ');

            switch (tokenisedProvisionsOfConsumables[1].ToLower())
            {
            case "day":
            case "days":
                JourneyEnd = JourneyEnd.AddDays(Convert.ToDouble(tokenisedProvisionsOfConsumables[0]));
                break;

            case "week":
            case "weeks":
                JourneyEnd = JourneyEnd.AddDays(Convert.ToDouble(tokenisedProvisionsOfConsumables[0]) * 7);
                break;

            case "month":
            case "months":
                JourneyEnd = JourneyEnd.AddMonths(Convert.ToInt32(tokenisedProvisionsOfConsumables[0]));
                break;

            case "year":
            case "years":
                JourneyEnd = JourneyEnd.AddYears(Convert.ToInt32(tokenisedProvisionsOfConsumables[0]));
                break;
            }

            int minutes  = (int)(JourneyEnd - JourneyStart).TotalMinutes;
            int numHours = Enumerable.Range(0, minutes)
                           .Select(min => JourneyStart.AddMinutes(min))
                           // Arredondar para hora, já que MGLT é a velocidade por hora.
                           .GroupBy(dt => new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, 0, 0, 0))
                           .Count();

            return((Convert.ToInt64(Globals.MGLT) / (numHours * Convert.ToInt64(starship.MGLT))).ToString());
        }