Esempio n. 1
0
        public void AddOrChangeAlternativesValuesForCriteria(Alternativa alternativa, Kriterij kriterij, string stvarnaVrijednost)
        {
            AHPEntities4 db = new AHPEntities4();

            if (alternativa != null && kriterij != null)
            {
                AlternativaKriterij alternativaKriterij = db.AlternativaKriterijs.Where(x => (x.alternativa == alternativa.id && x.kriterij == kriterij.id)).SingleOrDefault();

                if (alternativaKriterij != null)
                {
                    alternativaKriterij.stvarnaVrijednost = stvarnaVrijednost;
                    db.SaveChanges();
                }
                else
                {
                    AlternativaKriterij novaAlternativaKriterij = new AlternativaKriterij();
                    novaAlternativaKriterij.alternativa       = alternativa.id;
                    novaAlternativaKriterij.kriterij          = kriterij.id;
                    novaAlternativaKriterij.stvarnaVrijednost = stvarnaVrijednost;
                    var alternativaKriterijList = db.Set <AlternativaKriterij>();
                    alternativaKriterijList.Add(novaAlternativaKriterij);
                    int a = db.SaveChanges();
                }
            }
        }
        public static void CalculateResults(int id)
        {
            AHPEntities4       db          = new AHPEntities4();
            List <Alternativa> alternative = db.Alternativas.Where(x => (x.projekt == id && x.obrisana != true)).ToList();
            List <Kriterij>    kriteriji   = db.Kriterijs.Where(x => (x.projekt == id && x.obrisan != true && x.Kriterij1.Count() == 0)).ToList();
            List <CalculatedCriteriaValuesViewModel> listaKalkuliranihVrijednostiKriterija = new List <CalculatedCriteriaValuesViewModel>();

            foreach (var kriterij in kriteriji)
            {
                double?vrijednost = 0;
                if (kriterij.Kriterij2 != null)
                {
                    if (kriterij.Kriterij2.Kriterij2 != null)
                    {
                        if (kriterij.Kriterij2.Kriterij2.Kriterij2 != null)
                        {
                        }
                        else
                        {
                            vrijednost = kriterij.Kriterij2.Kriterij2.vrijednost * kriterij.Kriterij2.vrijednost * kriterij.vrijednost;
                        }
                    }
                    else
                    {
                        vrijednost = kriterij.Kriterij2.vrijednost * kriterij.vrijednost;
                    }
                }
                else
                {
                    vrijednost = kriterij.vrijednost;
                }

                CalculatedCriteriaValuesViewModel calculatedCriteriaValuesViewModel = new CalculatedCriteriaValuesViewModel();
                calculatedCriteriaValuesViewModel.Kriterij   = kriterij;
                calculatedCriteriaValuesViewModel.vrijednost = vrijednost;

                listaKalkuliranihVrijednostiKriterija.Add(calculatedCriteriaValuesViewModel);
            }

            List <AlternativaKriterij> alternativaKriteriji = db.AlternativaKriterijs.Where(x => x.Kriterij1.projekt == id).ToList();

            foreach (var alternativa in alternative)
            {
                double?rezultat = 0;
                foreach (var kriterijZaUsporedbu in kriteriji)
                {
                    AlternativaKriterij alternativaKriterij = alternativaKriteriji.Where(x => (x.alternativa == alternativa.id && x.kriterij == kriterijZaUsporedbu.id)).SingleOrDefault();

                    if (alternativaKriterij != null)
                    {
                        rezultat += kriterijZaUsporedbu.vrijednost * alternativaKriterij.izracunataVrijednost;
                    }
                }

                alternativa.vrijednost = rezultat;

                db.SaveChanges();
            }
        }
Esempio n. 3
0
        public void UpdateProjectsAlternativesConsistency(int id)
        {
            AHPEntities4       db          = new AHPEntities4();
            List <Kriterij>    kriteriji   = db.Kriterijs.Where(x => (x.projekt == id && x.obrisan != true && x.Kriterij2.obrisan != true && x.Kriterij1.Count() == 0)).ToList();
            List <Alternativa> alternative = db.Alternativas.Where(x => (x.projekt == id && x.obrisana != true)).ToList();
            List <UsporedbaAlternativaPremaKriteriju> usporedbe = db.UsporedbaAlternativaPremaKriterijus.Where(x => (x.Kriterij1.projekt == id && x.Alternativa.obrisana != true && x.Alternativa3.obrisana != true)).ToList();

            foreach (var kriterij in kriteriji)
            {
                int a = 0;
                List <UsporedbaAlternativaPremaKriteriju> usporedbeAlternativaPremaKriteriju = usporedbe.Where(x => x.kriterij == kriterij.id).ToList();

                foreach (var alternativa in alternative)
                {
                    int broj = usporedbe.Where(x => (x.kriterij == kriterij.id && (x.alternativa1 == alternativa.id || x.alternativa2 == alternativa.id))).Count();

                    if (broj != alternative.Count() - 1)
                    {
                        kriterij.konzistentneAlternative = false;
                        db.SaveChanges();
                        a = 1;
                        break;
                    }
                }

                if (a == 1)
                {
                    foreach (var alternativa1 in alternative)
                    {
                        alternativa1.vrijednost = null;
                        db.SaveChanges();
                    }
                }
                else if (a == 0)
                {
                    Tuple <bool, List <double?> > konzistentnostIVrijednost = DBOperationsHelper.GetAlternativesConsistencyFactorAndValues(alternative, usporedbeAlternativaPremaKriteriju, kriterij.id);


                    for (int i = 0; i < alternative.Count(); i++)
                    {
                        if (konzistentnostIVrijednost.Item2 != null)
                        {
                            int b = alternative[i].id;
                            List <AlternativaKriterij> alternativaKriterij = db.AlternativaKriterijs.Where(x => x.alternativa == b && x.kriterij == kriterij.id).ToList();
                            if (alternativaKriterij != null)
                            {
                                if (alternativaKriterij[0].izracunataVrijednost != konzistentnostIVrijednost.Item2[i])
                                {
                                    alternativaKriterij[0].izracunataVrijednost = konzistentnostIVrijednost.Item2[i].Value;
                                    db.SaveChanges();
                                }
                            }
                            else
                            {
                                AlternativaKriterij alternativariterijNova = new AlternativaKriterij();
                                alternativariterijNova.alternativa          = alternative[i].id;
                                alternativariterijNova.kriterij             = kriterij.id;
                                alternativariterijNova.izracunataVrijednost = konzistentnostIVrijednost.Item2[i].Value;

                                var alternativeKriteriji = db.Set <AlternativaKriterij>();
                                alternativeKriteriji.Add(alternativariterijNova);
                                db.SaveChanges();
                            }
                        }
                        else
                        {
                            if (alternative[i].vrijednost != null)
                            {
                                alternative[i].vrijednost = null;
                                db.SaveChanges();
                            }
                        }
                    }
                    kriterij.konzistentneAlternative = konzistentnostIVrijednost.Item1;
                    db.SaveChanges();
                }
            }
        }