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();
                }
            }
        }
Beispiel #2
0
        public static Tuple <bool, List <double?> > GetAlternativesConsistencyFactorAndValues(List <Alternativa> alternative, List <UsporedbaAlternativaPremaKriteriju> usporedbe, int kriterij)
        {
            AHPEntities4 db = new AHPEntities4();
            Tuple <bool, List <double?> > aa = Executor.CreateAlternativeMatrix(alternative, usporedbe);

            return(aa);
        }
Beispiel #3
0
        public static void AddNewCriteriaComparisons(int idProjekta)
        {
            AHPEntities4              db        = new AHPEntities4();
            List <Kriterij>           kriteriji = db.Kriterijs.Where(x => (x.Projekt1.id == idProjekta && x.obrisan != true)).ToList();
            List <UsporedbaKriterija> usporedbe = db.UsporedbaKriterijas.ToList();

            for (int i = 0; i < kriteriji.Count; i++)
            {
                for (int j = 0; j < kriteriji.Count; j++)
                {
                    int kriterij1 = kriteriji[i].id;
                    int kriterij2 = kriteriji[j].id;

                    if (kriterij1 != kriterij2 && kriteriji[i].idRoditelja == kriteriji[j].idRoditelja)
                    {
                        bool usporedbePostoje = (db.UsporedbaKriterijas.Any(x => (((x.kriterij1 == kriterij1 && x.kriterij2 == kriterij2) || (x.kriterij1 == kriterij2 && x.kriterij2 == kriterij1) && x.Kriterij.obrisan != true && x.Kriterij3.obrisan != true))));
                        if (!usporedbePostoje)
                        {
                            var usporedbaKriterija = db.Set <UsporedbaKriterija>();
                            usporedbaKriterija.Add(new UsporedbaKriterija {
                                kriterij1 = kriteriji[i].id, kriterij2 = kriteriji[j].id, vrijednost = null
                            });
                            db.SaveChanges();
                        }
                    }
                }
            }
        }
        public List <Kriterij> GetListOfCriteria(int id)
        {
            AHPEntities4    db       = new AHPEntities4();
            List <Kriterij> criteria = db.Kriterijs.Where(x => (x.projekt == id && x.Kriterij2 == null && x.obrisan != true)).ToList();

            return(criteria);
        }
Beispiel #5
0
        public static Tuple <bool, List <double?> > GetConsistencyFactorAndCriteriaValues(List <Kriterij> kriteriji, int roditelj, int projektId)
        {
            AHPEntities4 db = new AHPEntities4();
            List <UsporedbaKriterija> listaUsporedaba = new List <UsporedbaKriterija>();

            if (kriteriji.Count() >= 2)
            {
                if (kriteriji.Where(x => x.konzistentno != true).Count() != 0)
                {
                    return(new Tuple <bool, List <double?> >(false, null));
                }
                else
                {
                    if (roditelj == 0)
                    {
                        listaUsporedaba = db.UsporedbaKriterijas.Where(x => ((x.Kriterij.Kriterij2 == null || x.Kriterij3.Kriterij2 == null) && (x.Kriterij.obrisan != true && x.Kriterij3.obrisan != true) && (x.Kriterij.projekt == projektId || x.Kriterij3.projekt == projektId))).ToList();
                        return(Executor.CreateCriteriaMatrix(kriteriji, listaUsporedaba));
                    }
                    else
                    {
                        listaUsporedaba = db.UsporedbaKriterijas.Where(x => ((x.Kriterij.idRoditelja == roditelj || x.Kriterij3.idRoditelja == roditelj) && (x.Kriterij.obrisan != true && x.Kriterij3.obrisan != true))).ToList();
                        if (listaUsporedaba.Where(x => x.vrijednost == null).Count() > 0)
                        {
                            return(new Tuple <bool, List <double?> >(false, null));
                        }
                        return(Executor.CreateCriteriaMatrix(kriteriji, listaUsporedaba));
                    }
                }
            }
            else
            {
                return(new Tuple <bool, List <double?> >(false, null));
            }
        }
        public List <Alternativa> GetListOfAlternatives(int id)
        {
            AHPEntities4       db           = new AHPEntities4();
            List <Alternativa> alternatives = db.Alternativas.Where(x => (x.projekt == id && x.obrisana != true)).ToList();

            return(alternatives);
        }
        // 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 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();
            }
        }
        public ActionResult Result(int id)
        {
            EvaluationController.CalculateResults(id);

            AHPEntities4       db          = new AHPEntities4();
            List <Alternativa> alternative = db.Alternativas.Where(x => (x.projekt == id && x.obrisana != true)).OrderByDescending(y => y.vrijednost).ToList();

            return(View(alternative));
        }
        public void ChangeCriteriaComparisonFactor(int criteria1, int criteria2, double factor)
        {
            AHPEntities4       db = new AHPEntities4();
            UsporedbaKriterija usporedbaKriterija = db.UsporedbaKriterijas.Where(x => (x.kriterij1 == criteria1 && x.kriterij2 == criteria2)).SingleOrDefault();

            usporedbaKriterija.vrijednost = factor;

            int a = db.SaveChanges();
        }
Beispiel #11
0
        public ActionResult Index()
        {
            AHPEntities4          db       = new AHPEntities4();
            var                   userId   = User.Identity.GetUserId();
            IEnumerable <Projekt> projekti = db.Projekts.Where(c => (c.korisnik == userId && c.obrisan != true)).OrderByDescending(c => c.zadnjaPromjena).ToList();

            HomeViewModel homeViewModel = new HomeViewModel(projekti);

            return(View(homeViewModel));
        }
        public PartialViewResult GetCriteriaMenuFullPartialView(int id)
        {
            AHPEntities4 db = new AHPEntities4();

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

            EvaluationCriteriaViewModel evaluationCriteriaViewModel = new EvaluationCriteriaViewModel();

            evaluationCriteriaViewModel.Projekt        = projekt;
            evaluationCriteriaViewModel.ListaKriterija = GetListOfCriteria(id);

            return(PartialView("_CriteriaMenuPartial", evaluationCriteriaViewModel));
        }
        public bool AuthorizeUserProject(string UID, int id)
        {
            AHPEntities4 db = new AHPEntities4();

            Projekt projekt = db.Projekts.Where(x => (x.id == id && x.korisnik == UID)).SingleOrDefault();

            if (projekt != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public ActionResult DeleteProject(int id)
        {
            AHPEntities4 db      = new AHPEntities4();
            Projekt      projekt = db.Projekts.Where(x => x.id == id).SingleOrDefault();

            projekt.obrisan = true;

            if (db.SaveChanges() != 0)
            {
                return(Redirect(Url.Action("Index", "Home")));
            }
            else
            {
                return(null);
            }
        }
        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);
            }
        }
        // GET: Project
        public ActionResult Index(int id)
        {
            AHPEntities4        db = new AHPEntities4();
            CustomAuthorization customAuthorization = new CustomAuthorization();
            bool userAuthorized = customAuthorization.AuthorizeUserProject(User.Identity.GetUserId(), id);

            if (userAuthorized == true)
            {
                Projekt            project      = db.Projekts.Where(x => x.id == id).SingleOrDefault();
                List <Alternativa> alternatives = db.Alternativas.Where(x => (x.projekt == id && x.obrisana != true)).ToList();
                List <Kriterij>    criteria     = db.Kriterijs.Where(x => (x.projekt == id && x.Kriterij2 == null && x.obrisan != true)).ToList();
                List <Dnevnik>     logs         = db.Dnevniks.Where(x => x.projekt == id).OrderByDescending(y => y.vrijeme).ToList();

                ProjectViewModel projektViewModel = new ProjectViewModel(project, criteria, alternatives, logs);
                return(View(projektViewModel));
            }
            else
            {
                return(Redirect("/Home/Index"));
            }
        }
        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));
        }
        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 })));
        }
        public ActionResult AddAlternative(int projectId, string name, string info)
        {
            AHPEntities4 db          = new AHPEntities4();
            Alternativa  alternativa = new Alternativa {
                naziv = name, opis = info, projekt = projectId, obrisana = false
            };
            var alternative = db.Set <Alternativa>();

            alternative.Add(alternativa);
            Projekt projekt = db.Projekts.SingleOrDefault(b => b.id == projectId);

            if (db.SaveChanges() != 0)
            {
                DateTime trenutnoVrijeme = DateTime.Now;


                List <Kriterij> kriteriji = db.Kriterijs.Where(x => (x.projekt == projectId && x.obrisan != true && x.Kriterij1.Count == 0)).ToList();
                foreach (Kriterij kriterij in kriteriji)
                {
                    AddOrChangeAlternativesValuesForCriteria(alternativa, kriterij, null);
                }

                //UpdateAlternativesComparison(projectId);

                var dnevnik = db.Set <Dnevnik>();
                dnevnik.Add(new Dnevnik {
                    tipZapisa = 4, vrijeme = trenutnoVrijeme, dodatneInformacije = name, korisnik = projekt.korisnik, status = 1, projekt = projectId
                });

                UpdateProjectsAlternativesConsistency(projectId);

                db.SaveChanges();

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

            return(Redirect(Url.Action("Index", "Project", new { id = projectId })));
        }
        public ActionResult AddProject(string naziv, string opis)
        {
            DateTime date        = DateTime.Now;
            var      idKorisnika = User.Identity.GetUserId();

            AHPEntities4 db      = new AHPEntities4();
            Projekt      projekt = new Projekt {
                naziv = naziv, opis = opis, korisnik = idKorisnika, datum = date, zadnjaPromjena = date, konzistentno = false, fazaProjekta = 3
            };

            var projekti = db.Set <Projekt>();

            projekti.Add(projekt);

            if (db.SaveChanges() != 0)
            {
                int idProjekta = projekt.id;
                return(Redirect(Url.Action("Index", "Project", new { id = idProjekta })));
            }
            else
            {
                return(null);
            }
        }
        public void ChangeAlternativeComparisonFactor(int alternative1, int alternative2, int criteria, float factor)
        {
            AHPEntities4 db = new AHPEntities4();
            UsporedbaAlternativaPremaKriteriju usporedbaAlternativaPremaKriteriju = db.UsporedbaAlternativaPremaKriterijus.Where(x => (x.alternativa1 == alternative1 && x.alternativa2 == alternative2 && x.kriterij == criteria)).SingleOrDefault();

            if (usporedbaAlternativaPremaKriteriju != null)
            {
                usporedbaAlternativaPremaKriteriju.vrijednost = factor;
            }
            else
            {
                var usporedbaAlternativaPremaKriterijuLista = db.Set <UsporedbaAlternativaPremaKriteriju>();
                UsporedbaAlternativaPremaKriteriju uapk     = new UsporedbaAlternativaPremaKriteriju();
                uapk.alternativa1 = alternative1;
                uapk.alternativa2 = alternative2;
                uapk.kriterij     = criteria;
                uapk.vrijednost   = factor;
                usporedbaAlternativaPremaKriterijuLista.Add(uapk);
            }
            if (db.SaveChanges() > 0)
            {
                //UpdateProjectsAlternativesConsistency(usporedbaAlternativaPremaKriteriju.Kriterij1.projekt);
            }
        }
        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));
            }
        }
        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();
                }
            }
        }
        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--;
            }
        }