public void AdicionarCaso()
 {
     submeterNaDB();
     tm = new Telemovel();
     e  = new Ecra();
     c  = new Camera();
     p  = new Processador();
 }
 public Data()
 {
     tm       = new Telemovel();
     e        = new Ecra();
     c        = new Camera();
     p        = new Processador();
     DataBase = new DataClassesCBRDataContext();
 }
        public void Avaliação()
        {
            double melhorSimiliridade = 0; //ainda não foi encontrado nenhuma aproximação
            double similiridadeItem   = 0;
            int    idItem             = 0;

            const double pesoMarca                 = 0.35;
            const double pesoRam                   = 0.075;
            const double pesoMemoriainterna        = 0.05;
            const double pesomAhBateria            = 0.05;
            const double pesoResEcra               = 0.1;
            const double pesoTamanho               = 0.025;
            const double pesoProcessadorvelocidade = 0.1;
            const double pesoProcessadornucleos    = 0.025;
            const double pesoCamerafrontal         = 0.025;
            const double pesoCameratraseira        = 0.05;
            const double pesoEstado                = 0.1;
            const double pesoIdade                 = 0.05;

            foreach (Telemovel item in DataBase.Telemovels)
            {
                //pesos acima
                similiridadeItem = SimiliridadeMarca(DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome, item.marca.nome) * pesoMarca + SimiliridadeRam(tm.ram, item.ram) * pesoRam + SimiliridadeMemoriaInterna(tm.memoriaInterna, item.memoriaInterna) * pesoMemoriainterna
                                   + SimiliridademAhBateria(tm.mAhBateria, item.mAhBateria) * pesomAhBateria + SimiliridadeResoluçãoEcra(DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação, item.Ecra.ResoluçãoEcra.designação) * pesoResEcra
                                   + SimiliridadeTamanhoEcra(e.tamanho, item.Ecra.tamanho) * pesoTamanho + SimiliridadeVelocidadeProcessador(p.velocidadeProcessador, item.Processador.velocidadeProcessador) * pesoProcessadorvelocidade
                                   + SimiliridadeNucleosProcessador(p.nucleosProcessador, item.Processador.nucleosProcessador) * pesoProcessadornucleos + SimiliridadeResolucaoCameraFrontal(c.resolucaoFrontal, item.Camera.resolucaoFrontal) * pesoCamerafrontal
                                   + SimiliridadeResolucaoCameraTraseira(c.resolucaoTraseira, item.Camera.resolucaoTraseira) * pesoCameratraseira + SimiliridadeEstado(DataBase.Estados.Single(x => x.idEstado == tm.idEstado).designação, item.Estado.designação) * pesoEstado
                                   + SimiliridadeIdade(tm.idade, item.idade) * pesoIdade;

                if (similiridadeItem > melhorSimiliridade)
                {
                    melhorSimiliridade = similiridadeItem;
                    tm.valorFinal      = Convert.ToInt32(item.valorFinal); //int da base de dados nao é compativel com int do visual studio
                    idItem             = item.idTelemovel;
                }
            }
            submeterNaDB();

            if (similiridadeItem != 1)
            {
                acertarPreço(DataBase.Telemovels.Single(x => x.idTelemovel == idItem));
            }

            tm = new Telemovel(); //reinicializar para a proxima avaliação
            e  = new Ecra();
            c  = new Camera();
            p  = new Processador();
        }
        public void acertarPreço(Telemovel caso)
        {
            List <Telemovel> listT = DataBase.Telemovels.OrderByDescending(p => p.idTelemovel).ToList();
            int idT = listT.First().idTelemovel;  //para buscarmos o ultimo a ser inserido (primeiro nesta lista porque está ordenada em descending)

            if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome != caso.marca.nome)
            {
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "Apple" && caso.marca.nome == "Samsung")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.1);
                }
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "Samsung" && caso.marca.nome == "Apple")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.1);
                }
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "LG" && caso.marca.nome == "Samsung")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.2);
                }
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "Samsung" && caso.marca.nome == "LG")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.2);
                }
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "LG" && caso.marca.nome == "Apple")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.3);
                }
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "Apple" && caso.marca.nome == "LG")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.3);
                }
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "Outras" && caso.marca.nome == "LG")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.3);
                }
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "LG" && caso.marca.nome == "Outras")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.3);
                }
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "Outras" && caso.marca.nome == "Samsung")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.4);
                }
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "Samsung" && caso.marca.nome == "Outras")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.4);
                }
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "Outras" && caso.marca.nome == "Apple")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.6);
                }
                if (DataBase.marcas.Single(x => x.idMarca == tm.idMarca).nome == "Apple" && caso.marca.nome == "Outras")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.6);
                }
            }

            if (tm.ram > caso.ram)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeRam(tm.ram, caso.ram)) * 0.05);
            }

            if (tm.ram < caso.ram)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeRam(tm.ram, caso.ram)) * 0.05);
            }

            if (tm.memoriaInterna > caso.memoriaInterna)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeMemoriaInterna(tm.memoriaInterna, caso.memoriaInterna)) * 0.025);
            }

            if (tm.memoriaInterna < caso.memoriaInterna)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeMemoriaInterna(tm.memoriaInterna, caso.memoriaInterna)) * 0.025);
            }

            if (tm.mAhBateria > caso.mAhBateria)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridademAhBateria(tm.mAhBateria, caso.mAhBateria)) * 0.05);
            }

            if (tm.mAhBateria < caso.mAhBateria)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridademAhBateria(tm.mAhBateria, caso.mAhBateria)) * 0.05);
            }

            if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação != caso.Ecra.ResoluçãoEcra.designação)
            {
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "640x480 (VGA)" && caso.Ecra.ResoluçãoEcra.designação == "1280x720 (HD)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.05);
                }
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "1280x720 (HD)" && caso.Ecra.ResoluçãoEcra.designação == "640x480 (VGA)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.05);
                }

                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "640x480 (VGA)" && caso.Ecra.ResoluçãoEcra.designação == "1920x1080 (FULL HD)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.08);
                }
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "1920x1080 (FULL HD)" && caso.Ecra.ResoluçãoEcra.designação == "640x480 (VGA)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.08);
                }

                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "640x480 (VGA)" && caso.Ecra.ResoluçãoEcra.designação == "2560x1440 (2K)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.1);
                }
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "2560x1440 (2K)" && caso.Ecra.ResoluçãoEcra.designação == "640x480 (VGA)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.1);
                }

                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "640x480 (VGA)" && caso.Ecra.ResoluçãoEcra.designação == "3840x2160 (4K)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.15);
                }
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "3840x2160 (4K)" && caso.Ecra.ResoluçãoEcra.designação == "640x480 (VGA)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.15);
                }
                //--------------
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "1920x1080 (FULL HD)" && caso.Ecra.ResoluçãoEcra.designação == "1280x720 (HD)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.06);
                }
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "1280x720 (HD)" && caso.Ecra.ResoluçãoEcra.designação == "1920x1080 (FULL HD)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.06);
                }

                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "2560x1440 (2K)" && caso.Ecra.ResoluçãoEcra.designação == "1280x720 (HD)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.08);
                }
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "1280x720 (HD)" && caso.Ecra.ResoluçãoEcra.designação == "2560x1440 (2K)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.08);
                }

                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "1280x720 (HD)" && caso.Ecra.ResoluçãoEcra.designação == "3840x2160 (4K)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.12);
                }
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "3840x2160 (4K)" && caso.Ecra.ResoluçãoEcra.designação == "1280x720 (HD)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.12);
                }
                //----------------
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "2560x1440 (2K)" && caso.Ecra.ResoluçãoEcra.designação == "1920x1080 (FULL HD)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.06);
                }
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "1980x1080 (FULL HD)" && caso.Ecra.ResoluçãoEcra.designação == "2560x1440 (2K)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.06);
                }

                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "3840x2160 (4K)" && caso.Ecra.ResoluçãoEcra.designação == "1920x1080 (FULL HD)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.08);
                }
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "1980x1080 (FULL HD)" && caso.Ecra.ResoluçãoEcra.designação == "3840x2160 (4K)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.08);
                }
                //-----------------
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "3840x2160 (4K)" && caso.Ecra.ResoluçãoEcra.designação == "2560x1440 (2K)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.04);
                }
                if (DataBase.ResoluçãoEcras.Single(x => x.idResoluçãoEcra == e.idResoluçãoEcra).designação == "2560x1440 (2K)" && caso.Ecra.ResoluçãoEcra.designação == "3840x2160 (4K)")
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= (int)(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal * 0.04);
                }
            }

            if (e.tamanho > caso.Ecra.tamanho)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeTamanhoEcra(e.tamanho, caso.Ecra.tamanho)) * 0.025);
            }

            if (e.tamanho < caso.Ecra.tamanho)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeTamanhoEcra(e.tamanho, caso.Ecra.tamanho)) * 0.025);
            }

            if (p.velocidadeProcessador > caso.Processador.velocidadeProcessador)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeVelocidadeProcessador(p.velocidadeProcessador, caso.Processador.velocidadeProcessador)) * 0.05);
            }

            if (p.velocidadeProcessador < caso.Processador.velocidadeProcessador)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeVelocidadeProcessador(p.velocidadeProcessador, caso.Processador.velocidadeProcessador)) * 0.05);
            }

            if (p.nucleosProcessador > caso.Processador.nucleosProcessador)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeNucleosProcessador(p.nucleosProcessador, caso.Processador.nucleosProcessador)) * 0.025);
            }

            if (p.nucleosProcessador < caso.Processador.nucleosProcessador)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeNucleosProcessador(p.nucleosProcessador, caso.Processador.nucleosProcessador)) * 0.025);
            }

            if (c.resolucaoFrontal > caso.Camera.resolucaoFrontal)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeResolucaoCameraFrontal(c.resolucaoFrontal, caso.Camera.resolucaoFrontal)) * 0.05);
            }

            if (c.resolucaoFrontal < caso.Camera.resolucaoFrontal)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeResolucaoCameraFrontal(c.resolucaoFrontal, caso.Camera.resolucaoFrontal)) * 0.05);
            }

            if (c.resolucaoTraseira > caso.Camera.resolucaoTraseira)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeResolucaoCameraTraseira(c.resolucaoTraseira, caso.Camera.resolucaoTraseira)) * 0.05);
            }

            if (c.resolucaoTraseira < caso.Camera.resolucaoTraseira)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeResolucaoCameraTraseira(c.resolucaoTraseira, caso.Camera.resolucaoTraseira)) * 0.05);
            }

            if (DataBase.Estados.Single(x => x.idEstado == tm.idEstado).designação != caso.Estado.designação)
            {
                int e1 = 0, e2 = 0;
                if (DataBase.Estados.Single(x => x.idEstado == tm.idEstado).designação == "Péssimo")
                {
                    e1 = 0;
                }
                if (DataBase.Estados.Single(x => x.idEstado == tm.idEstado).designação == "Mau")
                {
                    e1 = 1;
                }
                if (DataBase.Estados.Single(x => x.idEstado == tm.idEstado).designação == "Intermédio")
                {
                    e1 = 2;
                }
                if (DataBase.Estados.Single(x => x.idEstado == tm.idEstado).designação == "Bom")
                {
                    e1 = 3;
                }
                if (DataBase.Estados.Single(x => x.idEstado == tm.idEstado).designação == "Muito Bom")
                {
                    e1 = 4;
                }
                if (DataBase.Estados.Single(x => x.idEstado == tm.idEstado).designação == "Como Novo")
                {
                    e1 = 5;
                }

                if (caso.Estado.designação == "Péssimo")
                {
                    e2 = 0;
                }
                if (caso.Estado.designação == "Mau")
                {
                    e2 = 1;
                }
                if (caso.Estado.designação == "Intermédio")
                {
                    e2 = 2;
                }
                if (caso.Estado.designação == "Bom")
                {
                    e2 = 3;
                }
                if (caso.Estado.designação == "Muito Bom")
                {
                    e2 = 4;
                }
                if (caso.Estado.designação == "Como Novo")
                {
                    e2 = 5;
                }

                int resultado = (5 - Math.Abs(e1 - e2)) / 5;
                if (e1 > e2) //impossivel ser igual, verificado antes
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *((1 - resultado) * 0.1));
                }
                else
                {
                    DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *((1 - resultado) * 0.1));
                }
            }

            if (tm.idade > caso.idade)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal += Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeIdade(tm.idade, caso.idade)) * 0.1);
            }

            if (tm.idade < caso.idade)
            {
                DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal -= Convert.ToInt32(DataBase.Telemovels.Single(x => x.idTelemovel == idT).valorFinal *(1 - SimiliridadeIdade(tm.idade, caso.idade)) * 0.1);
            }
            DataBase.SubmitChanges();
        }
 private void detach_Telemovels(Telemovel entity)
 {
     this.SendPropertyChanging();
     entity.marca = null;
 }
 private void attach_Telemovels(Telemovel entity)
 {
     this.SendPropertyChanging();
     entity.marca = this;
 }
 private void detach_Telemovels(Telemovel entity)
 {
     this.SendPropertyChanging();
     entity.Processador = null;
 }
 partial void DeleteTelemovel(Telemovel instance);
 partial void UpdateTelemovel(Telemovel instance);
 partial void InsertTelemovel(Telemovel instance);