public Data()
 {
     tm       = new Telemovel();
     e        = new Ecra();
     c        = new Camera();
     p        = new Processador();
     DataBase = new DataClassesCBRDataContext();
 }
 public void AdicionarCaso()
 {
     submeterNaDB();
     tm = new Telemovel();
     e  = new Ecra();
     c  = new Camera();
     p  = new Processador();
 }
        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();
        }
 private void detach_Ecras(Ecra entity)
 {
     this.SendPropertyChanging();
     entity.ResoluçãoEcra = null;
 }
 private void attach_Ecras(Ecra entity)
 {
     this.SendPropertyChanging();
     entity.ResoluçãoEcra = this;
 }
 partial void DeleteEcra(Ecra instance);
 partial void UpdateEcra(Ecra instance);
 partial void InsertEcra(Ecra instance);