Exemplo n.º 1
0
        public static List <string> CalculaMelhorPreco(List <Orcamento> orcamentos)
        {
            List <string> _dadosMelhorPreco = new List <string>();

            double  melhorCusto        = orcamentos[0].Custo;
            Petshop petshopMelhorPreco = orcamentos[0].PetShop;

            //Analisando cada preço de Petshop passado e seta o menor valor
            foreach (Orcamento orcamento in orcamentos)
            {
                if (orcamento.Custo < melhorCusto)
                {
                    melhorCusto        = orcamento.Custo;
                    petshopMelhorPreco = orcamento.PetShop;
                }
            }

            //Analisa se o menor valor encontrado se repetiu mais de uma vez entre os custos
            if (orcamentos.Count(x => x.Custo == melhorCusto) > 1)
            {
                _dadosMelhorPreco = Desempate(melhorCusto, orcamentos);
            }
            else
            {
                _dadosMelhorPreco.Add(petshopMelhorPreco.Nome);
                _dadosMelhorPreco.Add(melhorCusto.ToString("F2"));
            }

            return(_dadosMelhorPreco);
        }
Exemplo n.º 2
0
        //Caso haja empate entre os custos, é chamada a função de desempate
        private static List <string> Desempate(double melhorCusto, List <Orcamento> orcamentos)
        {
            List <string> _dadosMelhorPreco  = new List <string>();
            Petshop       petshopMelhorPreco = orcamentos[0].PetShop;
            double        menorDistancia     = maiorDistancia;

            //Percorre todo o vetor de objetos Petshop
            foreach (Orcamento orcamento in orcamentos)
            {
                //Analisa se o custo do Petshop é igual ao menor custo encontrado
                if (orcamento.Custo == melhorCusto)
                {
                    //Analisa a distância entre os Petshops e retorna o mais próximo
                    if (orcamento.PetShop.Distancia < menorDistancia)
                    {
                        menorDistancia     = orcamento.PetShop.Distancia;
                        petshopMelhorPreco = orcamento.PetShop;
                    }
                }
            }

            //Adiciona os dados do Petshop mais próximo à lista de informações do
            //Petshop com as melhores condições
            _dadosMelhorPreco.Add(petshopMelhorPreco.Nome);
            _dadosMelhorPreco.Add(melhorCusto.ToString("F2"));

            return(_dadosMelhorPreco);
        }
Exemplo n.º 3
0
        public ActionResult Get(string dataDoBanho, int caesPequenos, int caesGrandes)
        {
            if (string.IsNullOrEmpty(dataDoBanho))
            {
                return(new JsonResult(new {
                    Response = "Favor informar o dia do banho e a quantidade de caes pequenos e grandes "
                }));
            }

            var data = Convert.ToDateTime(dataDoBanho);

            var vaiRex         = new VaiRex();
            var meuCaninoFeliz = new MeuCaninoFeliz();
            var chowChawgas    = new ChowChawgas();

            // Calcula o valor total do banho
            vaiRex.CalcularValorBanho(data, caesPequenos, caesGrandes);
            meuCaninoFeliz.CalcularValorBanho(data, caesPequenos, caesGrandes);
            chowChawgas.CalcularValorBanho(data, caesPequenos, caesGrandes);

            Petshop melhorPetshop = Petshop.ComparaValores(vaiRex, meuCaninoFeliz, chowChawgas);

            return(new JsonResult(new
            {
                nome = melhorPetshop.nome,
                valorTotal = melhorPetshop.valorTotal,
                distanciaEmKm = melhorPetshop.distanciaEmQuilometros
            }));
        }
Exemplo n.º 4
0
        public void VerificaValorBanhoFimDeSemanaTest()
        {
            var meuCaninoFeliz = new MeuCaninoFeliz();
            var vaiRex         = new VaiRex();
            var chowChawgas    = new ChowChawgas();

            var dataFimDeSemana   = new DateTime(2020, 07, 18);
            var quantCaesPequenos = 2;
            var quantCaesGrandes  = 1;

            // Action
            // Calcula o valor total dos banhos em cada petshop
            meuCaninoFeliz.CalcularValorBanho(dataFimDeSemana, quantCaesPequenos, quantCaesGrandes);
            vaiRex.CalcularValorBanho(dataFimDeSemana, quantCaesPequenos, quantCaesGrandes);
            chowChawgas.CalcularValorBanho(dataFimDeSemana, quantCaesPequenos, quantCaesGrandes);

            // Verifica qual é o melhor petshop
            var melhorPetshop = Petshop.ComparaValores(meuCaninoFeliz, vaiRex, chowChawgas);

            // Assert
            Assert.AreEqual(96, meuCaninoFeliz.valorTotal);
            Assert.AreEqual(95, vaiRex.valorTotal);
            Assert.AreEqual(105, chowChawgas.valorTotal);

            Assert.AreEqual(melhorPetshop, vaiRex);
        }
Exemplo n.º 5
0
        public Solucao()
        {
            _petshops = new List <Petshop>();

            Petshop mcFeliz = new Petshop
            {
                Banhos    = new List <Banho>(MontaListaBanho(40.00, (40.00 * 1.2), 20.00, (20.00 * 1.2))),
                Distancia = 2,
                Nome      = "Meu Canino Feliz"
            };

            _petshops.Add(mcFeliz);

            Petshop vRex = new Petshop
            {
                Banhos    = new List <Banho>(MontaListaBanho(50.00, 55.00, 15.00, 20.00)),
                Distancia = 1.7,
                Nome      = "Vai Rex"
            };

            _petshops.Add(vRex);

            Petshop cChawgas = new Petshop
            {
                Banhos    = new List <Banho>(MontaListaBanho(45.00, 45.00, 30.00, 30.00)),
                Distancia = 0.8,
                Nome      = "ChowChawgas"
            };

            _petshops.Add(cChawgas);
        }
Exemplo n.º 6
0
        public void EditarPetshopTeste()
        {
            var psService = new PetshopService();

            var psEditar  = psService.ListarPetshops().ElementAt(0);
            var psEditada = new Petshop("PetshopEditada", 10, 10, 20, 20, 0.7);

            var editou = psService.EditarPetshop(psEditar, psEditada);

            Assert.True(editou);
            Assert.Contains(psEditada, psService.ListarPetshops());
        }
Exemplo n.º 7
0
        public void CalcularPrecoBanhoTeste_DiaSemanaSucesso()
        {
            var      psService    = new PetshopService();
            var      ps           = new Petshop("Petshop de teste", 10, 20, 15, 30, 1.5);
            DateTime data         = DateTime.Parse("2019-03-06");
            int      caesPequenos = 3;
            int      caesGrandes  = 5;

            var resultado = psService.CalcularPrecoBanho(ps, data, caesPequenos, caesGrandes);

            Assert.Equal(resultado, 10 * 3 + 20 * 5);
        }
Exemplo n.º 8
0
        public void VerificaFinalDeSemanaTest()
        {
            var petshop = new Petshop();

            var dataSemana      = new DateTime(2020, 07, 16);
            var dataFimDeSemana = new DateTime(2020, 07, 18);

            // Action
            var resultadoSemana      = petshop.VerificaFinalDeSemana(dataSemana);
            var resultadoFimDeSemana = petshop.VerificaFinalDeSemana(dataFimDeSemana);

            // Assert
            Assert.IsTrue(resultadoFimDeSemana);
            Assert.IsFalse(resultadoSemana);
        }
Exemplo n.º 9
0
        public void Resolve_IntoRegistered_Singleton()
        {
            var container = Container.Create();
            var food      = new CatFood();
            var petshop   = new Petshop();

            container.Register <IPetFood>(Scope.Singleton, food);
            container.Register(Scope.Singleton, petshop);

            container.InjectIntoRegistered();

            var cached = container.GetCached <Petshop>();

            Assert.AreEqual(food, cached.Food);
        }
Exemplo n.º 10
0
        public void InserirPetshopTeste()
        {
            var psService   = new PetshopService();
            var psAdicionar = new Petshop("PSTeste", 10, 15, 20, 30, 2.0);

            psService.InserirPetshop(psAdicionar);

            var psAdicionada = psService.BuscarPetshop(psAdicionar.Nome);

            Assert.Equal(psAdicionar.Nome, psAdicionada.Nome);
            Assert.Equal(psAdicionar.PrecoDiaUtilPequeno, psAdicionada.PrecoDiaUtilPequeno);
            Assert.Equal(psAdicionar.PrecoDiaUtilGrande, psAdicionada.PrecoDiaUtilGrande);
            Assert.Equal(psAdicionar.PrecoFimDeSemanaPequeno, psAdicionada.PrecoFimDeSemanaPequeno);
            Assert.Equal(psAdicionar.PrecoFimDeSemanaGrande, psAdicionada.PrecoFimDeSemanaGrande);
            Assert.Equal(psAdicionar.Distancia, psAdicionada.Distancia);
        }
Exemplo n.º 11
0
        public void CompararDistanciaTeste_Sucesso()
        {
            var psService = new PetshopService();

            var ps1           = new Petshop("PS1", 10, 20, 15, 30, 1.2);
            var ps2           = new Petshop("PS2", 10, 20, 15, 30, 1.1);
            var listaPetshops = new List <Petshop>
            {
                ps1,
                ps2
            };

            var resultado = psService.CompararDistancia(listaPetshops);

            Assert.Equal(ps2.Distancia, resultado.Distancia);
        }
Exemplo n.º 12
0
        public IActionResult Add_finish(string Name, string Breed, string type)
        {
            Pet new_pet = new Pet();

            switch (type)
            {
            case "Dog":
                new_pet = new Dog(Name, Breed);
                break;

            case "Cat":
                new_pet = new Cat(Name, Breed);
                break;
            }
            Petshop.AddPet(new_pet);
            return(View("Add_finish", new_pet));
        }
Exemplo n.º 13
0
        public void Resolve_IntoRegistered_Transient()
        {
            var container  = Container.Create();
            var food       = new CatFood();
            var petshopOne = new Petshop();
            var petshopTwo = new Petshop();

            container.Register <IPetFood>(Scope.Singleton, food);
            container.Register(Scope.Transient, petshopOne);
            container.Register(Scope.Transient, petshopTwo);

            container.InjectIntoRegistered();

            var cached = container.GetCachedMultiple <Petshop>();

            CollectionAssert.AllItemsAreNotNull(cached.Select(item => item.Food));
            CollectionAssert.AllItemsAreInstancesOfType(cached.Select(item => item.Food), typeof(IPetFood));
        }
Exemplo n.º 14
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Cat Cadife = new Cat("Cadife", 'F', "Calico");

            Cadife.printGreetings();
            Petshop.AddCat(Cadife);

            Console.WriteLine("Let there be snakes!");
            Mamba     mamba     = new Mamba();
            CornSnake cornSnake = new CornSnake();

            Console.WriteLine(Snake.Poisonous);     //True
            Console.WriteLine(Mamba.Poisonous);     //True
            Console.WriteLine(CornSnake.Poisonous); //False
            Console.WriteLine(mamba.greeting);      //"Hello from Animal!"
            Console.WriteLine(cornSnake.greeting);  //"Hello from Animal!"

            mamba.Length = 150;                     //The length of a snake cannot exceed 100!
            mamba.Length = 30.2768f;
            Console.WriteLine(mamba.Length);        //30.28

            IShape triangle = new Triangle(1, 2);

            Console.WriteLine(ShapeOperations.DoubleAndRoundArea(triangle)); //2

            Customer annaCustomer     = new ("Anna", "Karenina");
            Customer annaCustomerCopy = new ("Anna", "Karenina");

            Console.WriteLine(annaCustomer == annaCustomerCopy); //True
            Console.WriteLine(annaCustomer);                     //Customer { FirstName = Anna, LastName = Karenina }

            Customer annaChanged = annaCustomer with {
                FirstName = "Anneta"
            };

            Console.WriteLine(annaCustomer == annaChanged); //False

            BusinessCustomer annaBusinessCustomer = new("Anna", "Karenina", "Perfumes Corp");

            Console.WriteLine(annaCustomer == annaBusinessCustomer); //False because annaCustomer does not include the BusinessName field
        }
    }
Exemplo n.º 15
0
        public static void Main()
        {
            Dog sharo = new Dog("Sharo", "");
            Cat catya = new Cat("Katya", "I said Miauu Miau!");
            Dog rex   = new Dog("Rex", "I said Bauuu Bauu Bauuu!");

            Petshop.AddPet(sharo);
            Petshop.AddPet(catya);
            Petshop.AddPet(rex);

            //Console.WriteLine(sharo.Introduce());
            //Console.WriteLine(catya.Introduce());
            //Console.WriteLine(rex.Introduce());
            try
            {
                Console.WriteLine(Petshop.IntorduceAll());
            }
            catch
            {
            }
        }
 public static IQueryable<Petshop.Data.Entities.Product> ByCategory(this IQueryable<Petshop.Data.Entities.Product> queryable, Petshop.Data.Entities.Category category)
 {
     return queryable.ByCategory(ComparisonOperator.Equals, category);
 }
 public static IQueryable<Petshop.Data.Entities.Cart> ByProfile(this IQueryable<Petshop.Data.Entities.Cart> queryable, ComparisonOperator comparisonOperator, Petshop.Data.Entities.Profile profile)
 {
     switch(comparisonOperator)
     {
         case ComparisonOperator.Equals:
             return queryable.Where(c => c.Profile == profile);
         
         case ComparisonOperator.NotEquals:
             return queryable.Where(c => c.Profile != profile);
             
         default:
             throw new ArgumentException("Parameter 'comparisonOperator' must be ComparisonOperator.Equals or ComparisonOperator.NotEquals to support Association type.", "comparisonOperator");
     }
 }
 public static IQueryable<Petshop.Data.Entities.Cart> ByProfile(this IQueryable<Petshop.Data.Entities.Cart> queryable, Petshop.Data.Entities.Profile profile)
 {
     return queryable.ByProfile(ComparisonOperator.Equals, profile);
 }
 public static IQueryable<Petshop.Data.Entities.Item> BySupplier(this IQueryable<Petshop.Data.Entities.Item> queryable, ComparisonOperator comparisonOperator, Petshop.Data.Entities.Supplier supplier)
 {
     switch(comparisonOperator)
     {
         case ComparisonOperator.Equals:
             return queryable.Where(i => i.Supplier == supplier);
         
         case ComparisonOperator.NotEquals:
             return queryable.Where(i => i.Supplier != supplier);
             
         default:
             throw new ArgumentException("Parameter 'comparisonOperator' must be ComparisonOperator.Equals or ComparisonOperator.NotEquals to support Association type.", "comparisonOperator");
     }
 }
 public static IQueryable<Petshop.Data.Entities.Item> BySupplier(this IQueryable<Petshop.Data.Entities.Item> queryable, Petshop.Data.Entities.Supplier supplier)
 {
     return queryable.BySupplier(ComparisonOperator.Equals, supplier);
 }
 public static IQueryable<Petshop.Data.Entities.Item> ByProduct(this IQueryable<Petshop.Data.Entities.Item> queryable, Petshop.Data.Entities.Product product)
 {
     return queryable.ByProduct(ComparisonOperator.Equals, product);
 }
 public static IQueryable<Petshop.Data.Entities.LineItem> ByOrder(this IQueryable<Petshop.Data.Entities.LineItem> queryable, Petshop.Data.Entities.Order order)
 {
     return queryable.ByOrder(ComparisonOperator.Equals, order);
 }
 public static IQueryable<Petshop.Data.Entities.Product> ByCategory(this IQueryable<Petshop.Data.Entities.Product> queryable, ComparisonOperator comparisonOperator, Petshop.Data.Entities.Category category)
 {
     switch(comparisonOperator)
     {
         case ComparisonOperator.Equals:
             return queryable.Where(p => p.Category == category);
         
         case ComparisonOperator.NotEquals:
             return queryable.Where(p => p.Category != category);
             
         default:
             throw new ArgumentException("Parameter 'comparisonOperator' must be ComparisonOperator.Equals or ComparisonOperator.NotEquals to support Association type.", "comparisonOperator");
     }
 }