示例#1
0
        public ActionResult Index()
        {
            using (ppij_databaseEntities data = new ppij_databaseEntities()) {
                ViewBag.Title = User.Identity.Name;
                Osoba osoba = data.Osoba.Where(o => o.korisnicko_ime_osoba == User.Identity.Name).FirstOrDefault();
                ViewBag.razinaPrava = osoba.razina_prava;
                //Debug.WriteLine("razina prava" + osoba.razina_prava);
                PostavkeModel model = new PostavkeModel();
                model.changePassword          = new ChangePasswordBindingModel();
                model.ostalePostavke          = new OstalePostavke();
                model.mojeVlastiteInstrukcije = new MojeInstrukcije();

                var queryPredmeti = from predmet in data.Predmet
                                    join osobaPredmet in data.osoba_predmet on predmet.ID_predmet equals osobaPredmet.ID_predmet
                                    where osobaPredmet.ID_osoba == osoba.ID_osoba
                                    select predmet;
                ViewBag.predmeti = queryPredmeti.ToList <Predmet>();

                model.mojeVlastiteInstrukcije.mojiTermini = osoba.Termin.Select(t => t.ID_termin).ToList().ConvertAll <string>(x => x.ToString());
                model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_instruktor = new List <dogovor_term_osoba>();
                model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_klijent    = new List <dogovor_term_osoba>();
                model.mojeVlastiteInstrukcije.mojiPredmeti  = new List <OpisanPredmet>();
                model.mojeVlastiteInstrukcije.sveKategorije = new List <Kategorija>();
                model.mojeVlastiteInstrukcije.sveUstanove   = new List <Ustanova>();
                model.mojeVlastiteInstrukcije.sviPredmeti   = new List <Predmet>();


                foreach (dogovor_termin dogovor in osoba.dogovor_termin.ToList())
                {
                    if (dogovor.dogovor_status != 20 && dogovor.dogovor_status != 0 &&
                        dogovor.datum_dogovor.Value > DateTime.Now.AddDays(-10) &&
                        dogovor.dogovor_status != 3)
                    {
                        //dogovor.datum_dogovor = dogovor.datum_dogovor.Value.AddHours((int)dogovor.Termin.FirstOrDefault().period_termin);
                        //Debug.WriteLine(dogovor.datum_dogovor.Value + " " + (int)dogovor.Termin.FirstOrDefault().period_termin);
                        model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_instruktor.Add(new dogovor_term_osoba()
                        {
                            termin   = dogovor,
                            lokacija = dogovor.Lokacija,
                            ime      = data.Osoba.Where(o => o.ID_osoba == dogovor.ID_klijent).FirstOrDefault().ime_osoba,
                            prezime  = data.Osoba.Where(o => o.ID_osoba == dogovor.ID_klijent).FirstOrDefault().prezime_osoba,
                            predmet  = data.Predmet.Where(k => k.ID_predmet == dogovor.ID_predmet).FirstOrDefault().naziv_predmet,
                            odustani = false,
                            seen     = false
                        });
                    }
                }
                foreach (dogovor_termin dogovor in osoba.dogovor_termin1.ToList())
                {
                    if (dogovor.dogovor_status != 0 && dogovor.datum_dogovor.Value > DateTime.Now.AddDays(-10) && dogovor.dogovor_status != 2 && dogovor.dogovor_status != 20)
                    {
                        //dogovor.datum_dogovor = dogovor.datum_dogovor.Value.AddHours((int)dogovor.Termin.FirstOrDefault().period_termin);
                        //Debug.WriteLine(dogovor.datum_dogovor.Value + " " + (int)dogovor.Termin.FirstOrDefault().period_termin);
                        model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_klijent.Add(new dogovor_term_osoba()
                        {
                            termin   = dogovor,
                            lokacija = dogovor.Lokacija,
                            ime      = data.Osoba.Where(o => o.ID_osoba == dogovor.ID_instruktor).FirstOrDefault().ime_osoba,
                            prezime  = data.Osoba.Where(o => o.ID_osoba == dogovor.ID_instruktor).FirstOrDefault().prezime_osoba,
                            predmet  = data.Predmet.Where(k => k.ID_predmet == dogovor.ID_predmet).FirstOrDefault().naziv_predmet,
                            odustani = false,
                            seen     = false
                        });
                    }
                }


                #region populate OpisanPredmet
                var detaljiPredmetOsoba = from p in data.Predmet
                                          join op in data.osoba_predmet on p.ID_predmet equals op.ID_predmet
                                          join u in data.Ustanova on p.ID_ustanova equals u.ID_ustanova
                                          join k in data.Kategorija on p.ID_kategorija equals k.ID_kategorija
                                          where osoba.ID_osoba == op.ID_osoba
                                          select new { p.ID_predmet, p.naziv_predmet, p.kratica_predmet, op.cijena, u.ID_ustanova, k.ID_kategorija };

                foreach (var row in detaljiPredmetOsoba)
                {
                    Ustanova   ust = data.Ustanova.Find(row.ID_ustanova);
                    Kategorija kat = data.Kategorija.Find(row.ID_kategorija);
                    model.mojeVlastiteInstrukcije.mojiPredmeti.Add(new OpisanPredmet()
                    {
                        IDpredmet      = row.ID_predmet,
                        nazivPredmet   = row.naziv_predmet,
                        kraticaPredmet = row.kratica_predmet,
                        cijenaPredmet  = row.cijena,
                        IDkategorija   = row.ID_kategorija,
                        IDustanova     = row.ID_ustanova,
                        ustanova       = ust,
                        kategorija     = kat
                    });
                }
                #endregion

                #region populate Ustanova Kategorija

                var ustanovaQuery = from u in data.Ustanova
                                    select u;
                var kategorijaQuery = from k in data.Kategorija
                                      select k;
                model.mojeVlastiteInstrukcije.sveUstanove.AddRange(ustanovaQuery.ToList());
                model.mojeVlastiteInstrukcije.sveKategorije.AddRange(kategorijaQuery.ToList());
                #endregion

                #region populate Predmeti
                var predmetiQuery = from p in data.Predmet
                                    select p;

                model.mojeVlastiteInstrukcije.sviPredmeti.AddRange(predmetiQuery.ToList());
                #endregion



                model.mojeVlastiteInstrukcije.popis_kategorija = new List <odabranaKategorija>();
                foreach (Kategorija kateg in data.Kategorija)
                {
                    odabranaKategorija odabrananadkat = new odabranaKategorija();
                    odabrananadkat.mojiPredmeti = new List <odabranPredmet>();
                    foreach (Predmet pred in data.Predmet.Where(k => k.ID_kategorija == kateg.ID_kategorija))
                    {
                        odabranPredmet item = new odabranPredmet();
                        item.predmet = pred;
                        if (osoba.osoba_predmet.Where(k => k.ID_predmet == pred.ID_kategorija).Count() == 1)
                        {
                            item.odabran = true;
                        }
                        else
                        {
                            item.odabran = false;
                        }
                        odabrananadkat.mojiPredmeti.Add(item);
                    }
                    odabrananadkat.kategorija_ime = kateg.naziv_kategorija;
                    model.mojeVlastiteInstrukcije.popis_kategorija.Add(odabrananadkat);
                }
                model.mojeVlastiteInstrukcije.MojeLokacijeJson = convertLokacije(data.Lokacija.Where(l => l.Osoba.ID_osoba == osoba.ID_osoba).ToList());
                model.trenutniTab = "11";
                if (osoba.razina_prava == 1)
                {
                    model.ostalePostavke.instruktor = true;
                }
                else
                {
                    model.ostalePostavke.instruktor = false;
                }
                return(View(model));
            }
        }
示例#2
0
        public ActionResult Index(Models.PostavkeModel model)
        {
            using (ppij_databaseEntities data = new ppij_databaseEntities()) {
                Osoba osoba = data.Osoba.Where(o => o.korisnicko_ime_osoba == User.Identity.Name).FirstOrDefault();
                //Debug.WriteLine("tab: " + model.trenutniTab);
                if (ModelState.IsValid)
                {
                    String trenutniTab = model.trenutniTab;


                    if (trenutniTab.Equals("11") || trenutniTab.Equals("12"))
                    {
                        if (model.mojeVlastiteInstrukcije != null && model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_klijent != null)
                        {
                            foreach (dogovor_term_osoba dto in model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_klijent)
                            {
                                dogovor_termin dogovor = data.dogovor_termin.Where(d => d.ID_dogovor_termin == dto.termin.ID_dogovor_termin).FirstOrDefault();

                                if (dto.seen == true)
                                {
                                    if (dogovor.dogovor_status == 3)
                                    {
                                        dogovor.dogovor_status = 0;
                                    }
                                    else if (dogovor.dogovor_status == 11)
                                    {
                                        dogovor.dogovor_status = 1;
                                    }
                                }
                                if (dto.odustani == true)
                                {
                                    if (dogovor.dogovor_status == 10)
                                    {
                                        dogovor.dogovor_status = 20;
                                    }
                                    else if (dogovor.dogovor_status == 11 || dogovor.dogovor_status == 1)
                                    {
                                        dogovor.dogovor_status = 2;
                                    }
                                    //Debug.WriteLine("odustano od dogovora: " + dogovor.ID_dogovor_termin);
                                }
                                if (dogovor.dogovor_ocijena == null || dto.termin.dogovor_ocijena != dogovor.dogovor_ocijena)
                                {
                                    dogovor.dogovor_ocijena = dto.termin.dogovor_ocijena;
                                }
                                data.SaveChanges();
                            }
                        }
                        if (model.mojeVlastiteInstrukcije != null && model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_instruktor != null)
                        {
                            foreach (dogovor_term_osoba dto in model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_instruktor)
                            {
                                dogovor_termin dogovor = data.dogovor_termin.Where(d => d.ID_dogovor_termin == dto.termin.ID_dogovor_termin).FirstOrDefault();
                                if (dto.seen == true)
                                {
                                    if (dogovor.dogovor_status == 2)
                                    {
                                        dogovor.dogovor_status = 0;
                                    }
                                    else if (dogovor.dogovor_status == 10)
                                    {
                                        dogovor.dogovor_status = 11;
                                    }
                                }
                                if (dto.odustani == true)
                                {
                                    if (dogovor.dogovor_status == 1 || dogovor.dogovor_status == 11 || dogovor.dogovor_status == 10)
                                    {
                                        dogovor.dogovor_status = 3;
                                    }

                                    //Debug.WriteLine("odustano od dogovora: " + dogovor.ID_dogovor_termin);
                                }
                            }
                        }
                        data.SaveChanges();
                    }
                    else if (trenutniTab.Equals("21") || trenutniTab.Equals("22"))
                    {
                        /*foreach (String t in model.mojeVlastiteInstrukcije.mojiTermini)
                         * {
                         *  Debug.WriteLine("post: " + t);
                         * }*/
                        model.mojeVlastiteInstrukcije.mojiTermini = model.mojeVlastiteInstrukcije.mojiTermini.FirstOrDefault().Split(',').ToList();
                        List <Termin> toBeDel = new List <Termin>();
                        foreach (Termin s in osoba.Termin) //provjera starih termina - da li su još aktualni
                        {
                            //Debug.WriteLine("check to be deleted: " + s.ID_termin);
                            if (model.mojeVlastiteInstrukcije.mojiTermini.Contains(s.ID_termin.ToString()) == false)
                            {
                                //Debug.WriteLine("to be deleted: " + s.ID_termin);
                                toBeDel.Add(s);
                            }
                        }
                        foreach (Termin t in toBeDel)
                        {
                            osoba.Termin.Remove(t);
                        }
                        data.SaveChanges();
                        foreach (String s in model.mojeVlastiteInstrukcije.mojiTermini) //provjera novih termina - koje treba dodati u bazu
                        {
                            //Debug.WriteLine("check to be added: " + s);
                            if (s.Length > 0)
                            {
                                int id = Int32.Parse(s);
                                if (osoba.Termin.Where(st => st.ID_termin == id).Count() == 0)
                                {
                                    //Debug.WriteLine("to be added: " + s);
                                    Termin ter = data.Termin.Where(t => t.ID_termin == id).FirstOrDefault();
                                    osoba.Termin.Add(ter);
                                }
                            }
                        }
                    }
                    else if (trenutniTab.Equals("4"))
                    {
                        if (Crypto.VerifyHashedPassword(osoba.lozinka, model.changePassword.OldPassword + osoba.salt) == false)
                        {
                            ModelState.AddModelError("error_old_password", "pogrešna lozinka");
                            return(View());
                        }
                        string salt = Crypto.GenerateSalt(12);
                        osoba.lozinka = Crypto.HashPassword(model.changePassword.NewPassword + salt);
                        osoba.salt    = salt;
                    }
                    else if (trenutniTab.Equals("3"))
                    {
                        if (osoba.razina_prava != 0)
                        {
                            if (model.ostalePostavke.instruktor == true)
                            {
                                osoba.razina_prava = 1;
                            }
                            else
                            {
                                osoba.razina_prava = 2;
                            }
                        }
                        if (model.mojeVlastiteInstrukcije.MojeLokacijeJson != null)
                        {
                            List <lokacijeJsonObject> lokacijeObj = JsonConvert.DeserializeObject <List <lokacijeJsonObject> >(model.mojeVlastiteInstrukcije.MojeLokacijeJson);
                            if (lokacijeObj != null)
                            {
                                List <Lokacija> lokacije = new List <Lokacija>();
                                foreach (lokacijeJsonObject objekt in lokacijeObj)
                                {
                                    Lokacija lok = new Lokacija()
                                    {
                                        Geo_sirina    = objekt.lat,
                                        Geo_duzina    = objekt.lon,
                                        opis          = objekt.opis,
                                        ID_instruktor = osoba.ID_osoba,
                                        Osoba         = osoba
                                    };
                                    lokacije.Add(lok);
                                }

                                List <Lokacija> toBeDel = new List <Lokacija>();
                                foreach (Lokacija lok in osoba.Lokacija)
                                {
                                    if (lokacije.Where(l => l.Geo_duzina == lok.Geo_duzina && l.Geo_sirina == lok.Geo_sirina).Count() < 1)
                                    {
                                        toBeDel.Add(lok);
                                    }
                                }
                                foreach (Lokacija t in toBeDel)
                                {
                                    osoba.Lokacija.Remove(t);
                                }
                                data.SaveChanges();
                                foreach (Lokacija nova in lokacije)
                                {
                                    Lokacija istaIzBaze;
                                    if (osoba.Lokacija.Where(l => l.Geo_duzina == nova.Geo_duzina && l.Geo_sirina == nova.Geo_sirina).Count() >= 1)
                                    {
                                        istaIzBaze = osoba.Lokacija.Where(l => l.Geo_duzina == nova.Geo_duzina && l.Geo_sirina == nova.Geo_sirina).FirstOrDefault();
                                    }
                                    else
                                    {
                                        istaIzBaze = null;
                                    }
                                    if (istaIzBaze == null)
                                    {
                                        nova.Id = data.Lokacija.Max(l => l.Id) + 1;
                                        osoba.Lokacija.Add(nova);
                                        data.SaveChanges();
                                    }
                                    else if (istaIzBaze.opis.Equals(nova.opis) == false)
                                    {
                                        istaIzBaze.opis = nova.opis;
                                        data.SaveChanges();
                                    }
                                }
                            }
                        }
                    }
                    data.SaveChanges();
                }

                model.ostalePostavke          = new OstalePostavke();
                model.mojeVlastiteInstrukcije = new MojeInstrukcije();
                ViewBag.razinaPrava           = osoba.razina_prava;
                var queryPredmeti = from predmet in data.Predmet
                                    join osobaPredmet in data.osoba_predmet on predmet.ID_predmet equals osobaPredmet.ID_predmet
                                    where osobaPredmet.ID_osoba == osoba.ID_osoba
                                    select predmet;
                ViewBag.predmet = queryPredmeti.ToList <Predmet>();

                model.mojeVlastiteInstrukcije.mojiTermini = osoba.Termin.Select(t => t.ID_termin).ToList().ConvertAll <string>(x => x.ToString());
                model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_instruktor = new List <dogovor_term_osoba>();
                model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_klijent    = new List <dogovor_term_osoba>();
                model.mojeVlastiteInstrukcije.mojiPredmeti  = new List <OpisanPredmet>();
                model.mojeVlastiteInstrukcije.sveKategorije = new List <Kategorija>();
                model.mojeVlastiteInstrukcije.sveUstanove   = new List <Ustanova>();
                model.mojeVlastiteInstrukcije.sviPredmeti   = new List <Predmet>();



                foreach (dogovor_termin dogovor in osoba.dogovor_termin.ToList())
                {
                    if (dogovor.dogovor_status != 20 && dogovor.dogovor_status != 0 &&
                        dogovor.datum_dogovor.Value > DateTime.Now.AddDays(-10) &&
                        dogovor.dogovor_status != 3)
                    {
                        //dogovor.datum_dogovor.Value.AddHours((int)dogovor.Termin.FirstOrDefault().period_termin);
                        //Debug.WriteLine(dogovor.datum_dogovor.Value);
                        model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_instruktor.Add(new dogovor_term_osoba()
                        {
                            termin   = dogovor,
                            lokacija = dogovor.Lokacija,
                            ime      = data.Osoba.Where(o => o.ID_osoba == dogovor.ID_klijent).FirstOrDefault().ime_osoba,
                            prezime  = data.Osoba.Where(o => o.ID_osoba == dogovor.ID_klijent).FirstOrDefault().prezime_osoba,
                            predmet  = data.Predmet.Where(k => k.ID_predmet == dogovor.ID_predmet).FirstOrDefault().naziv_predmet,
                            odustani = false,
                            seen     = false
                        });
                    }
                }
                foreach (dogovor_termin dogovor in osoba.dogovor_termin1.ToList())
                {
                    if (dogovor.dogovor_status != 0 && dogovor.datum_dogovor.Value > DateTime.Now.AddDays(-10) && dogovor.dogovor_status != 2 && dogovor.dogovor_status != 20)
                    {
                        //dogovor.datum_dogovor.Value.AddHours((int)dogovor.Termin.OrderBy(o => o.period_termin).FirstOrDefault().period_termin);
                        //Debug.WriteLine(dogovor.datum_dogovor.Value);
                        model.mojeVlastiteInstrukcije.dogovoreni_termini_kao_klijent.Add(new dogovor_term_osoba()
                        {
                            termin   = dogovor,
                            lokacija = dogovor.Lokacija,
                            ime      = data.Osoba.Where(o => o.ID_osoba == dogovor.ID_instruktor).FirstOrDefault().ime_osoba,
                            prezime  = data.Osoba.Where(o => o.ID_osoba == dogovor.ID_instruktor).FirstOrDefault().prezime_osoba,
                            predmet  = data.Predmet.Where(k => k.ID_predmet == dogovor.ID_predmet).FirstOrDefault().naziv_predmet,
                            odustani = false,
                            seen     = false
                        });
                    }
                }


                #region populate OpisanPredmet
                var detaljiPredmetOsoba = from p in data.Predmet
                                          join op in data.osoba_predmet on p.ID_predmet equals op.ID_predmet
                                          join u in data.Ustanova on p.ID_ustanova equals u.ID_ustanova
                                          join k in data.Kategorija on p.ID_kategorija equals k.ID_kategorija
                                          where osoba.ID_osoba == op.ID_osoba
                                          select new { p.ID_predmet, p.naziv_predmet, p.kratica_predmet, op.cijena, u.ID_ustanova, k.ID_kategorija };

                foreach (var row in detaljiPredmetOsoba)
                {
                    Ustanova   ust = data.Ustanova.Find(row.ID_ustanova);
                    Kategorija kat = data.Kategorija.Find(row.ID_kategorija);
                    model.mojeVlastiteInstrukcije.mojiPredmeti.Add(new OpisanPredmet()
                    {
                        IDpredmet      = row.ID_predmet,
                        nazivPredmet   = row.naziv_predmet,
                        kraticaPredmet = row.kratica_predmet,
                        cijenaPredmet  = row.cijena,
                        IDkategorija   = row.ID_kategorija,
                        IDustanova     = row.ID_ustanova,
                        ustanova       = ust,
                        kategorija     = kat
                    });
                }
                #endregion

                #region populate Ustanova Kategorija

                var ustanovaQuery = from u in data.Ustanova
                                    select u;
                var kategorijaQuery = from k in data.Kategorija
                                      select k;
                model.mojeVlastiteInstrukcije.sveUstanove.AddRange(ustanovaQuery.ToList());
                model.mojeVlastiteInstrukcije.sveKategorije.AddRange(kategorijaQuery.ToList());
                #endregion

                #region populate Predmeti
                var predmetiQuery = from p in data.Predmet
                                    select p;

                model.mojeVlastiteInstrukcije.sviPredmeti.AddRange(predmetiQuery.ToList());
                #endregion

                model.mojeVlastiteInstrukcije.popis_kategorija = new List <odabranaKategorija>();
                foreach (Kategorija kateg in data.Kategorija)
                {
                    odabranaKategorija odabrananadkat = new odabranaKategorija();
                    odabrananadkat.mojiPredmeti = new List <odabranPredmet>();
                    foreach (Predmet pred in data.Predmet.Where(k => k.ID_kategorija == kateg.ID_kategorija))
                    {
                        odabranPredmet item = new odabranPredmet();
                        item.predmet = pred;
                        if (osoba.osoba_predmet.Where(k => k.ID_predmet == pred.ID_kategorija).Count() == 1)
                        {
                            item.odabran = true;
                        }
                        else
                        {
                            item.odabran = false;
                        }
                        odabrananadkat.mojiPredmeti.Add(item);
                    }
                    odabrananadkat.kategorija_ime = kateg.naziv_kategorija;
                    model.mojeVlastiteInstrukcije.popis_kategorija.Add(odabrananadkat);
                }
                model.mojeVlastiteInstrukcije.MojeLokacijeJson = convertLokacije(data.Lokacija.Where(l => l.Osoba.ID_osoba == osoba.ID_osoba).ToList());
                if (osoba.razina_prava == 1)
                {
                    model.ostalePostavke.instruktor = true;
                }
                else
                {
                    model.ostalePostavke.instruktor = false;
                }
                return(View(model));
            }
        }