Ejemplo n.º 1
0
        // GET: Evaluation
        public ActionResult Index(int id, int?kriterij)
        {
            AHPEntities4 db = new AHPEntities4();
            List <UsporedbaKriterija> criteriaComparison = new List <UsporedbaKriterija>();

            Projekt  project = db.Projekts.Where(x => x.id == id).SingleOrDefault();
            Kriterij parent  = null;

            if (kriterij != null)
            {
                parent = db.Kriterijs.Where(x => x.id == kriterij).SingleOrDefault();
                foreach (Kriterij podkriterij in parent.Kriterij1.Where(x => x.obrisan != true).ToList())
                {
                    List <UsporedbaKriterija> a = podkriterij.UsporedbaKriterijas.Where(x => (x.Kriterij.obrisan != true && x.Kriterij3.obrisan != true)).ToList();

                    //Je li dovoljno jednostrano ili je potrebno obostrano?? ispitati
                    //List<UsporedbaKriterija> b = podkriterij.UsporedbaKriterijas1.Where(x => (x.Kriterij.obrisan != true && x.Kriterij3.obrisan != true)).ToList();

                    criteriaComparison.AddRange(a);
                }
            }
            else
            {
                criteriaComparison = db.UsporedbaKriterijas.Where(x => (x.Kriterij.Projekt1.id == id && x.Kriterij3.Projekt1.id == id && x.Kriterij.Kriterij2 == null && x.Kriterij3.Kriterij2 == null && x.Kriterij.obrisan != true && x.Kriterij3.obrisan != true)).ToList();
            }

            EvaluationCriteriaViewModel evaluationCriteriaViewModel = new EvaluationCriteriaViewModel(project, parent, criteriaComparison, GetListOfCriteria(id));

            return(View(evaluationCriteriaViewModel));
        }
 public EvaluationCriteriaViewModel(Projekt project, Kriterij criteria, List <UsporedbaKriterija> criteriaComparison, List <Kriterij> listOfCriteria)
 {
     this.Projekt          = project;
     this.KriterijRoditelj = criteria;
     this.ListaUsporedaba  = criteriaComparison;
     this.ListaKriterija   = listOfCriteria;
     this.ContentHeader    = GetContentHeader(project.naziv, criteria.naziv);
 }
Ejemplo n.º 3
0
        public static Tuple <bool, List <double?> > CreateCriteriaMatrix(List <Kriterij> primljenaListaKriterija, List <UsporedbaKriterija> usporedbe)
        {
            int brojKriterija = primljenaListaKriterija.Count();

            double?[,] matricaKriterija = new double?[brojKriterija, brojKriterija];

            bool matricaPotpuna = true;


            for (int i = 0; i < primljenaListaKriterija.Count; i++)
            {
                Kriterij kriterij1 = new Kriterij();
                kriterij1 = primljenaListaKriterija[i];
                for (int j = 0; j < primljenaListaKriterija.Count; j++)
                {
                    if (i == j)
                    {
                        matricaKriterija[i, j] = 1;
                    }
                    else if (i < j)
                    {
                        Kriterij kriterij2 = new Kriterij();
                        kriterij2 = primljenaListaKriterija[j];
                        double?            vrijednost;
                        UsporedbaKriterija usp = usporedbe.Find(x => (x.kriterij1 == kriterij1.id && x.kriterij2 == kriterij2.id));
                        if (usp != null)
                        {
                            vrijednost             = usp.vrijednost;
                            matricaKriterija[j, i] = vrijednost;
                            matricaKriterija[i, j] = 1 / vrijednost;
                        }
                        else
                        {
                            matricaPotpuna = false;
                            break;
                        }
                    }
                }
            }

            Tuple <bool, List <double?> > konzistentnostIVrijednostiKriterija = null;

            if (matricaPotpuna)
            {
                konzistentnostIVrijednostiKriterija = CheckConsistencyAndGetValues(matricaKriterija);
            }
            else
            {
                konzistentnostIVrijednostiKriterija = new Tuple <bool, List <double?> >(false, null);
            }


            return(konzistentnostIVrijednostiKriterija);
        }
Ejemplo n.º 4
0
        public ActionResult DeleteCriteria(int id)
        {
            AHPEntities4 db       = new AHPEntities4();
            Kriterij     kriterij = db.Kriterijs.Where(x => x.id == id).SingleOrDefault();

            kriterij.obrisan = true;

            if (db.SaveChanges() != 0)
            {
                UpdateProjectsCriteriaConsistency(id);
                UpdateProjectsAlternativesConsistency(id);
                return(Redirect(Url.Action("Index", "Project", new { id = kriterij.projekt })));
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 5
0
        public PartialViewResult GetCriteriaAlternativesMenuFullPartialView(int id, int kriterij)
        {
            AHPEntities4 db = new AHPEntities4();

            List <Kriterij>                      kriteriji                     = GetListOfCriteria(id);
            Projekt                              odabraniProjekt               = db.Projekts.Where(x => x.id == id).SingleOrDefault();
            List <Alternativa>                   alternative                   = db.Alternativas.Where(x => (x.projekt == id && x.obrisana != true)).ToList();
            List <AlternativaKriterij>           alternativaKriterij           = db.AlternativaKriterijs.Where(x => (x.kriterij == kriterij && x.Alternativa1.obrisana != true)).ToList();
            Kriterij                             odabraniKriterij              = db.Kriterijs.Where(x => x.id == kriterij).SingleOrDefault();
            List <AlternativesComparedViewModel> alternativesComparedViewModel = new List <AlternativesComparedViewModel>();

            foreach (var alternativa1 in alternative)
            {
                foreach (var alternativa2 in alternative)
                {
                    if (alternativa1.id != alternativa2.id)
                    {
                        if (alternativesComparedViewModel.Where(x => ((x.Alternativa1.id == alternativa1.id && x.Alternativa2.id == alternativa2.id) || (x.Alternativa2.id == alternativa1.id && x.Alternativa1.id == alternativa2.id))).Count() == 0)
                        {
                            alternativesComparedViewModel.Add(new AlternativesComparedViewModel(alternativa1, alternativa2));
                        }
                    }
                }
            }

            List <UsporedbaAlternativaPremaKriteriju> usporedbaAlternativaPremaKriteriju = odabraniKriterij.UsporedbaAlternativaPremaKriterijus.Where(x => (x.Kriterij1.id == kriterij)).ToList();


            EvaluationAlternativesViewModel evaluationAlternativesViewModel = new EvaluationAlternativesViewModel();

            evaluationAlternativesViewModel.Projekt                            = odabraniProjekt;
            evaluationAlternativesViewModel.AlternativaKriterij                = alternativaKriterij;
            evaluationAlternativesViewModel.Kriteriji                          = kriteriji;
            evaluationAlternativesViewModel.Kriterij                           = odabraniKriterij;
            evaluationAlternativesViewModel.Alternative                        = alternative;
            evaluationAlternativesViewModel.ListaKombinacijaAlternativa        = alternativesComparedViewModel;
            evaluationAlternativesViewModel.UsporedbaAlternativaPremaKriteriju = usporedbaAlternativaPremaKriteriju;

            return(PartialView("_CriteriaMenuAlternativesPartial", evaluationAlternativesViewModel));
        }
Ejemplo n.º 6
0
        public ActionResult AddCriteria(int projectId, int?parentId, string name, string info)
        {
            AHPEntities4 db       = new AHPEntities4();
            Kriterij     kriterij = new Kriterij {
                naziv = name, opis = info, projekt = projectId, idRoditelja = parentId, konzistentno = true, obrisan = false
            };
            var kriteriji = db.Set <Kriterij>();

            kriteriji.Add(kriterij);

            if (db.SaveChanges() != 0)
            {
                List <Alternativa> alternative = db.Alternativas.Where(x => (x.projekt == projectId && x.obrisana != true)).ToList();
                foreach (Alternativa alternativa in alternative)
                {
                    AddOrChangeAlternativesValuesForCriteria(alternativa, kriterij, null);
                }

                Projekt projekt = db.Projekts.Where(x => x.id == projectId).SingleOrDefault();
                projekt.konzistentno = false;

                if (parentId != null)
                {
                    Kriterij roditelj = db.Kriterijs.Where(x => x.id == parentId).SingleOrDefault();
                    roditelj.konzistentno = false;
                }

                db.SaveChanges();

                DBOperationsHelper.AddNewCriteriaComparisons(projectId);
                UpdateProjectsCriteriaConsistency(projectId);
                UpdateProjectsAlternativesConsistency(projectId);


                return(Redirect(Url.Action("Index", "Project", new { id = projectId })));
            }

            return(Redirect(Url.Action("Index", "Project", new { id = projectId })));
        }
Ejemplo n.º 7
0
        public void UpdateProjectsCriteriaConsistency(int id)
        {
            AHPEntities4    db             = new AHPEntities4();
            int             maxLevel       = 0;
            List <Kriterij> listaRoditelja = db.Kriterijs.Where(x => x.projekt == id && x.Kriterij2.obrisan != true).Select(x => x.Kriterij2).Distinct().ToList();

            List <CriteriaParentsGroupedByLevelsViewModel> listOfCriteriaParentsGroupedByLevels = new List <CriteriaParentsGroupedByLevelsViewModel>();

            foreach (Kriterij roditelj in listaRoditelja)
            {
                int razina = 0;

                CriteriaParentsGroupedByLevelsViewModel criteriaParentsGroupedByLevelsViewModel = null;
                if (roditelj == null)
                {
                    Kriterij kr = new Kriterij();
                    kr.Kriterij1 = db.Kriterijs.Where(x => (x.Kriterij2 == null && x.projekt == id)).ToList();
                    criteriaParentsGroupedByLevelsViewModel = new CriteriaParentsGroupedByLevelsViewModel(razina, kr);
                }
                else
                {
                    Kriterij rod = roditelj.Kriterij2;

                    razina++;

                    if (rod == null)
                    {
                        criteriaParentsGroupedByLevelsViewModel = new CriteriaParentsGroupedByLevelsViewModel(razina, roditelj);
                        if (razina > maxLevel)
                        {
                            maxLevel = razina;
                        }
                    }
                    else
                    {
                        while (rod != null)
                        {
                            razina++;

                            rod = rod.Kriterij2;
                            if (rod == null)
                            {
                                criteriaParentsGroupedByLevelsViewModel = new CriteriaParentsGroupedByLevelsViewModel(razina, roditelj);
                                if (razina > maxLevel)
                                {
                                    maxLevel = razina;
                                }
                                break;
                            }
                        }
                    }
                }
                listOfCriteriaParentsGroupedByLevels.Add(criteriaParentsGroupedByLevelsViewModel);
            }

            int lev = maxLevel;

            while (lev >= 0)
            {
                List <Kriterij> listaRoditeljaPremaLevelima = listOfCriteriaParentsGroupedByLevels.Where(x => x.Level == lev).Select(x => x.Roditelj).ToList();

                foreach (Kriterij roditelj in listaRoditeljaPremaLevelima)
                {
                    List <Kriterij> listaKriterijaRoditelja = roditelj.Kriterij1.Where(x => x.obrisan != true).ToList();
                    Tuple <bool, List <double?> > konzistentnostIVrijednostKriterija = DBOperationsHelper.GetConsistencyFactorAndCriteriaValues(listaKriterijaRoditelja, roditelj.id, id);

                    if (roditelj.id == 0)
                    {
                        Projekt projekt = db.Projekts.Where(x => x.id == id).SingleOrDefault();
                        if (projekt.konzistentno != konzistentnostIVrijednostKriterija.Item1)
                        {
                            projekt.konzistentno = konzistentnostIVrijednostKriterija.Item1;
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                        Kriterij kriterijZaUpdate = db.Kriterijs.Where(x => x.id == roditelj.id).SingleOrDefault();
                        if (kriterijZaUpdate.konzistentno != konzistentnostIVrijednostKriterija.Item1)
                        {
                            kriterijZaUpdate.konzistentno = konzistentnostIVrijednostKriterija.Item1;
                            db.SaveChanges();
                        }
                    }

                    for (int i = 0; i < listaKriterijaRoditelja.Count(); i++)
                    {
                        if (konzistentnostIVrijednostKriterija.Item2 != null)
                        {
                            if (listaKriterijaRoditelja[i].vrijednost != konzistentnostIVrijednostKriterija.Item2[i])
                            {
                                listaKriterijaRoditelja[i].vrijednost = konzistentnostIVrijednostKriterija.Item2[i].Value;
                                db.SaveChanges();
                            }
                        }
                        else
                        {
                            if (listaKriterijaRoditelja[i].vrijednost != null)
                            {
                                listaKriterijaRoditelja[i].vrijednost = null;
                                db.SaveChanges();
                            }
                        }
                    }
                }
                lev--;
            }
        }
Ejemplo n.º 8
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();
                }
            }
        }
Ejemplo n.º 9
0
 public CriteriaParentsGroupedByLevelsViewModel(int level, Kriterij roditelj)
 {
     this.Level    = level;
     this.Roditelj = roditelj;
 }
Ejemplo n.º 10
0
        static void Main(string[] args)
        {
            bool kraj      = false;
            bool nastaviti = true;

            Executor        executor       = new Executor();
            List <Kriterij> listaKriterija = new List <Kriterij>();

            List <Kriterij>[]           poljeListaKriterija = new List <Kriterij> [5];
            Dictionary <string, double> vrijednostKriterija = new Dictionary <string, double>();

            double[,] matricaKriterija;
            Dictionary <string, Dictionary <string, double> > popisVrijednostiKriterija = new Dictionary <string, Dictionary <string, double> >();



            //while (kraj == false)
            //{
            //    Console.WriteLine("1. Unos alternative, 2. Unos kriterija, 3. Ispis kriterija, 9. Izlaz");

            //    switch (Console.ReadLine())
            //    {
            //        case "1":
            //            Console.WriteLine("---Odabrali ste unos alternative---");
            //            Console.WriteLine("Naziv alternative: ");
            //            string alternativa = Console.ReadLine();
            //            executor.DodajAlternativu(alternativa);

            //            break;
            //        case "2":
            //            Console.WriteLine("---Odabrali ste unos kriterija---");
            //            Console.WriteLine("Naziv kriterija: ");
            //            executor.DodajKriterij(Console.ReadLine(), -1);

            //            break;
            //        case "3":
            //            Console.WriteLine("---Odabrali ste ispis kriterija---");
            //            listaKriterija = executor.DohvatiListuKriterija();

            //            for (int i = 0; i < listaKriterija.Count; i++)
            //            {
            //                Kriterij kriterij = new Kriterij();
            //                kriterij = listaKriterija[i];
            //                if (kriterij.Roditelj != null)
            //                {
            //                    Console.WriteLine(kriterij.Naziv + " -->  " + kriterij.Id + "  ===  " + executor.DohvatiKriterijPremaId(kriterij.Roditelj.Id).Naziv);
            //                }
            //                else
            //                {
            //                    Console.WriteLine(kriterij.Naziv + " -->  " + kriterij.Id + "  ===  " + "'bez roditelja'");
            //                }

            //            }

            //            while (nastaviti == true)
            //            {
            //                Console.WriteLine("1 ---> Dodati podkriterij");
            //                Console.WriteLine("2 ---> Nastaviti bez dodavanja podkriterija");
            //                if (Console.ReadLine() == "1")
            //                {
            //                    Console.WriteLine("Unesi naziv podkriterija ");
            //                    string nazivPodkriterija = Console.ReadLine();
            //                    Console.WriteLine("Unesi id roditelja ");
            //                    int idRoditelja = Convert.ToInt32(Console.ReadLine());
            //                    executor.DohvatiKriterijPremaId(idRoditelja);
            //                    executor.DodajKriterij(nazivPodkriterija, idRoditelja);
            //                    nastaviti = true;
            //                }
            //                else
            //                {
            //                    nastaviti = false;
            //                }
            //            }



            //            break;
            //        case "9":
            //            kraj = true;
            //            break;
            //        default:
            //            Console.WriteLine("---Pogrešan unos---");
            //            break;

            //    }
            //}


            //postupak usporedbe kriterija
            poljeListaKriterija = executor.KreirajSkupineKriterija();

            for (int a = 0; a < poljeListaKriterija.Length; a++)
            {
                listaKriterija = poljeListaKriterija[a];

                matricaKriterija = executor.KreirajNovuMatricuKriterija(listaKriterija);

                bool konzistentno = false;
                //listaKriterija = executor.DohvatiListuKriterija();

                while (!konzistentno)
                {
                    for (int i = 0; i < listaKriterija.Count; i++)
                    {
                        Kriterij kriterij1 = new Kriterij();
                        kriterij1 = listaKriterija[i];
                        for (int j = 0; j < listaKriterija.Count; j++)
                        {
                            Kriterij kriterij2 = new Kriterij();
                            kriterij2 = listaKriterija[j];
                            double vrijednost = 1;

                            if (i < j)
                            {
                                Console.WriteLine(kriterij1.Naziv + " - " + kriterij2.Naziv);
                                vrijednost             = Convert.ToDouble(Console.ReadLine());
                                matricaKriterija[i, j] = vrijednost;
                                matricaKriterija[j, i] = 1 / vrijednost;
                            }
                            else if (i == j)
                            {
                                matricaKriterija[i, j] = 1;
                            }
                        }
                    }

                    konzistentno = executor.ProvjeriKonzistentnost(matricaKriterija);
                }


                List <Kriterij> lisKrit = new List <Kriterij>();
                string          kriterijRoditeljNaziv = "";
                lisKrit = poljeListaKriterija[a];
                if (lisKrit[0].Roditelj != null)
                {
                    kriterijRoditeljNaziv = lisKrit[0].Roditelj.Naziv;
                }
                else
                {
                    kriterijRoditeljNaziv = "null";
                }


                vrijednostKriterija = executor.IzracunajVrijednostKriterija(matricaKriterija, listaKriterija);


                popisVrijednostiKriterija.Add(kriterijRoditeljNaziv, vrijednostKriterija);
            }
            //kraj - postupak usporedbe kriterija
            //izlaz - dictionary s imenom kriterija


            Console.ReadLine();
        }
Ejemplo n.º 11
0
        public ActionResult Alternatives(int projekt, int kriterij)
        {
            AHPEntities4 db = new AHPEntities4();
            Projekt      odabraniProjekt = db.Projekts.Where(x => x.id == projekt).SingleOrDefault();

            if (kriterij != -1)
            {
                List <Kriterij>            kriteriji           = GetListOfCriteria(projekt);
                List <Alternativa>         alternative         = db.Alternativas.Where(x => (x.projekt == projekt && x.obrisana != true)).ToList();
                List <AlternativaKriterij> alternativaKriterij = db.AlternativaKriterijs.Where(x => (x.kriterij == kriterij && x.Alternativa1.obrisana != false)).ToList();


                Kriterij odabraniKriterij = db.Kriterijs.Where(x => x.id == kriterij).SingleOrDefault();

                List <AlternativesComparedViewModel> alternativesComparedViewModel = new List <AlternativesComparedViewModel>();

                foreach (var alternativa1 in alternative)
                {
                    foreach (var alternativa2 in alternative)
                    {
                        if (alternativa1.id != alternativa2.id)
                        {
                            if (alternativesComparedViewModel.Where(x => ((x.Alternativa1.id == alternativa1.id && x.Alternativa2.id == alternativa2.id) || (x.Alternativa2.id == alternativa1.id && x.Alternativa1.id == alternativa2.id))).Count() == 0)
                            {
                                alternativesComparedViewModel.Add(new AlternativesComparedViewModel(alternativa1, alternativa2));
                            }
                        }
                    }
                }



                List <UsporedbaAlternativaPremaKriteriju> usporedbaAlternativaPremaKriteriju = odabraniKriterij.UsporedbaAlternativaPremaKriterijus.Where(x => (x.Kriterij1.id == kriterij)).ToList();

                EvaluationAlternativesViewModel evaluationAlternativesViewModel = new EvaluationAlternativesViewModel();
                evaluationAlternativesViewModel.Kriterij                           = odabraniKriterij;
                evaluationAlternativesViewModel.Projekt                            = odabraniProjekt;
                evaluationAlternativesViewModel.AlternativaKriterij                = alternativaKriterij;
                evaluationAlternativesViewModel.Kriteriji                          = kriteriji;
                evaluationAlternativesViewModel.Alternative                        = alternative;
                evaluationAlternativesViewModel.ListaKombinacijaAlternativa        = alternativesComparedViewModel;
                evaluationAlternativesViewModel.UsporedbaAlternativaPremaKriteriju = usporedbaAlternativaPremaKriteriju;
                return(View(evaluationAlternativesViewModel));
            }
            else
            {
                List <Kriterij> kriteriji = GetListOfCriteria(projekt);

                kriterij = kriteriji[0].id;
                List <Alternativa>         alternative         = db.Alternativas.Where(x => (x.projekt == projekt && x.obrisana != true)).ToList();
                List <AlternativaKriterij> alternativaKriterij = db.AlternativaKriterijs.Where(x => (x.kriterij == kriterij && x.Alternativa1.obrisana != false)).ToList();


                Kriterij odabraniKriterij = db.Kriterijs.Where(x => x.id == kriterij).SingleOrDefault();

                List <AlternativesComparedViewModel> alternativesComparedViewModel = new List <AlternativesComparedViewModel>();

                foreach (var alternativa1 in alternative)
                {
                    foreach (var alternativa2 in alternative)
                    {
                        if (alternativa1.id != alternativa2.id)
                        {
                            if (alternativesComparedViewModel.Where(x => ((x.Alternativa1.id == alternativa1.id && x.Alternativa2.id == alternativa2.id) || (x.Alternativa2.id == alternativa1.id && x.Alternativa1.id == alternativa2.id))).Count() == 0)
                            {
                                alternativesComparedViewModel.Add(new AlternativesComparedViewModel(alternativa1, alternativa2));
                            }
                        }
                    }
                }



                List <UsporedbaAlternativaPremaKriteriju> usporedbaAlternativaPremaKriteriju = odabraniKriterij.UsporedbaAlternativaPremaKriterijus.Where(x => (x.Kriterij1.id == kriterij)).ToList();

                EvaluationAlternativesViewModel evaluationAlternativesViewModel = new EvaluationAlternativesViewModel();
                evaluationAlternativesViewModel.Kriterij                           = odabraniKriterij;
                evaluationAlternativesViewModel.Projekt                            = odabraniProjekt;
                evaluationAlternativesViewModel.AlternativaKriterij                = alternativaKriterij;
                evaluationAlternativesViewModel.Kriteriji                          = kriteriji;
                evaluationAlternativesViewModel.Alternative                        = alternative;
                evaluationAlternativesViewModel.ListaKombinacijaAlternativa        = alternativesComparedViewModel;
                evaluationAlternativesViewModel.UsporedbaAlternativaPremaKriteriju = usporedbaAlternativaPremaKriteriju;
                return(View(evaluationAlternativesViewModel));
            }
        }