public IActionResult Dodaj(int id)
        {
            OznacenDogadjaj oznacenDogadjaj = new OznacenDogadjaj
            {
                DatumDodavanja = DateTime.Now,
                DogadjajID     = id,
                StudentID      = HttpContext.GetLogiraniKorisnik().Id
            };

            _db.Add(oznacenDogadjaj);
            _db.SaveChanges();
            foreach (Obaveza x in _db.Obaveza.Where(o => o.DogadjajID == id).ToList())
            {
                StanjeObaveze stanje = new StanjeObaveze
                {
                    IsZavrseno              = false,
                    IzvrsenoProcentualno    = 0,
                    ObavezaID               = x.ID,
                    OznacenDogadjajID       = oznacenDogadjaj.ID,
                    NotifikacijaDanaPrije   = x.NotifikacijaDanaPrijeDefault,
                    NotifikacijeRekurizivno = x.NotifikacijeRekurizivnoDefault
                };
                _db.Add(stanje);
            }
            _db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemple #2
0
        public void Spremi(UrediStanjeObaveze model)
        {
            StanjeObaveze stanjeObaveze = _db.StanjeObaveze.Find(model.ID);

            stanjeObaveze.IzvrsenoProcentualno = model.ZavrsenoProcentualno;
            _db.SaveChanges();
        }
Exemple #3
0
        public IActionResult OznaciDogadjaj(int dogadjajId)
        {
            var korisnickiNalog = Autentifikacija.GetLogiraniKorisnik(HttpContext);
            var student         = _context.Student
                                  .Where(s => s.KorisnickiNalogId == korisnickiNalog.Id)
                                  .FirstOrDefault();
            var oznaceniDogadjaj = new OznacenDogadjaj
            {
                DatumDodavanja = DateTime.Now,
                DogadjajID     = dogadjajId,
                StudentID      = student.ID
            };

            _context.Add(oznaceniDogadjaj);

            var obavezeDogadjaja = _context.Obaveza
                                   .Where(o => o.DogadjajID == dogadjajId)
                                   .ToList();

            foreach (var o in obavezeDogadjaja)
            {
                var novoStanje = new StanjeObaveze
                {
                    IsZavrseno              = false,
                    IzvrsenoProcentualno    = 0,
                    ObavezaID               = o.ID,
                    OznacenDogadjaj         = oznaceniDogadjaj,
                    NotifikacijaDanaPrije   = o.NotifikacijaDanaPrijeDefault,
                    NotifikacijeRekurizivno = o.NotifikacijeRekurizivnoDefault
                };
                _context.Add(novoStanje);
            }
            _context.SaveChanges();
            return(RedirectToAction(nameof(Index)));
        }
        public IActionResult Dodaj(int Id)
        {
            OznacenDogadjaj dogadjaj = new OznacenDogadjaj
            {
                DatumDodavanja = DateTime.Now,
                DogadjajID     = Id,
                StudentID      = HttpContext.GetLogiraniKorisnik().Id
            };

            _db.Add(dogadjaj);
            _db.SaveChanges();

            IEnumerable <Obaveza> obaveze = _db.Obaveza.Where(x => x.DogadjajID == Id);

            foreach (var i in obaveze)
            {
                StanjeObaveze stanje = new StanjeObaveze
                {
                    DatumIzvrsenja          = DateTime.Now,
                    IsZavrseno              = false,
                    IzvrsenoProcentualno    = 33,
                    NotifikacijaDanaPrije   = 4,
                    ObavezaID               = i.ID,
                    OznacenDogadjajID       = dogadjaj.ID,
                    NotifikacijeRekurizivno = true,
                };
                _db.Add(stanje);
            }
            _db.SaveChanges();
            return(Redirect("/OznaceniDogadaji"));
        }
Exemple #5
0
        public IActionResult UrediSnimi(Korak4 model)
        {
            StanjeObaveze stanjeObaveze = _db.StanjeObaveze.Find(model.Id);

            stanjeObaveze.IzvrsenoProcentualno = model.procentualno;
            _db.SaveChanges();
            return(RedirectToAction("PrikaziObaveze", new { Id = model.DogadjajId }));
        }
        public IActionResult Save(StanjeObavezeEditVM model)
        {
            StanjeObaveze stanjeObaveze = db.StanjeObaveze.Where(x => x.Id == model.StanjeObavezeID)
                                          .Include(x => x.Obaveza)
                                          .FirstOrDefault();

            stanjeObaveze.IzvrsenoProcentualno = model.ZavrsenoProcentualno;
            db.StanjeObaveze.Update(stanjeObaveze);
            db.SaveChanges();
            return(Redirect("/OznaceniDogadaji/Detalji?DogadjajID=" + stanjeObaveze.OznacenDogadjajID));
        }
        public ActionResult Snimi(AjaxTestUrediVM model)
        {
            StanjeObaveze so = _context.StanjeObaveze.Find(model.StanjeObavezeId);

            so.IzvrsenoProcentualno = model.Procenat;
            _context.SaveChanges();

            int oznaceniDogId = so.OznacenDogadjajID;

            return(RedirectToAction("Obaveze", new { oznaceniDogadjajId = oznaceniDogId }));
        }
Exemple #8
0
        public IActionResult Index(int stanjeObavezeId)
        {
            StanjeObaveze stanjeObaveze = _context.StanjeObaveze.Where(so => so.Id == stanjeObavezeId).Include(so => so.Obaveza).FirstOrDefault();
            var           stanje        = new
            {
                IzvrsenoProcentualno = stanjeObaveze.IzvrsenoProcentualno,
                Naziv = stanjeObaveze.Obaveza.Naziv
            };

            return(Ok(stanje));
        }
Exemple #9
0
        public IActionResult ProcitanaNotifikacija(int id)
        {
            StanjeObaveze s = db.StanjeObaveze.Find(id);

            if (s != null)
            {
                s.IsZavrseno = true;
                db.SaveChanges();
            }
            return(Redirect("/OznaceniDogadaji/Index"));
        }
Exemple #10
0
        public IActionResult Snimi(StanjeObavezeVM vm)
        {
            StanjeObaveze s = _db.StanjeObaveze
                              .Where(x => x.Id == vm.StanjeObavezeId)
                              .Include(a => a.Obaveza)
                              .FirstOrDefault();

            s.IzvrsenoProcentualno = vm.ZavrseneProcentualno;
            _db.SaveChanges();

            return(RedirectToAction(nameof(Index), new { id = s.Obaveza.DogadjajID }));
        }
        public IActionResult Uredi(AjaxTestUrediVM model)
        {
            StanjeObaveze s = db.StanjeObaveze.Where(d => d.Id == model.StanjeId).Include(p => p.OznacenDogadjaj).SingleOrDefault();

            if (s != null && model.ZavrsenoProcentualno >= 0 && model.ZavrsenoProcentualno <= 100)
            {
                s.IzvrsenoProcentualno = model.ZavrsenoProcentualno;
                db.Update(s);
                db.SaveChanges();
            }
            return(Redirect("/AjaxTest/Detalji/" + s.OznacenDogadjaj.DogadjajID));
        }
        public IActionResult Edit(int StanjeObavezeID)
        {
            StanjeObaveze stanjeObaveze = db.StanjeObaveze.Where(x => x.Id == StanjeObavezeID)
                                          .Include(x => x.Obaveza)
                                          .FirstOrDefault();

            StanjeObavezeEditVM model = new StanjeObavezeEditVM()
            {
                StanjeObavezeID = StanjeObavezeID,
                Obaveza         = stanjeObaveze.Obaveza.Naziv
            };

            return(PartialView(model));
        }
        public ActionResult Uredi(int stanjeObavezeId)
        {
            StanjeObaveze so = _context.StanjeObaveze.Where(s => s.Id == stanjeObavezeId)
                               .Include(s => s.Obaveza).Single();

            var model = new AjaxTestUrediVM
            {
                StanjeObavezeId = so.Id,
                NazivObaveze    = so.Obaveza.Naziv,
                Procenat        = so.IzvrsenoProcentualno
            };

            return(PartialView(model));
        }
        public IActionResult Uredi(int id)
        {
            StanjeObaveze s = db.StanjeObaveze.Where(x => x.Id == id).Include(d => d.Obaveza).SingleOrDefault();

            if (s != null)
            {
                AjaxTestUrediVM model = new AjaxTestUrediVM
                {
                    StanjeId             = s.Id,
                    Obaveza              = s.Obaveza.Naziv,
                    ZavrsenoProcentualno = s.IzvrsenoProcentualno
                };
                return(PartialView(model));
            }
            return(PartialView("Greska"));
        }
Exemple #15
0
        public IActionResult PromijeniProcenat(int id)
        {
            StanjeObaveze so = _db.StanjeObaveze
                               .Where(x => x.Id == id)
                               .Include(a => a.Obaveza)
                               .FirstOrDefault();

            var model = new StanjeObavezeVM
            {
                StanjeObavezeId      = id,
                NazivObaveze         = so.Obaveza.Naziv,
                ZavrseneProcentualno = so.IzvrsenoProcentualno
            };

            return(PartialView(model));
        }
Exemple #16
0
        public IActionResult Azuriraj(int stanjeObavezeId, float procenatStanjaObaveze)
        {
            StanjeObaveze stanjeObaveze = _context.StanjeObaveze
                                          .Where(so => so.Id == stanjeObavezeId)
                                          .Include(so => so.Obaveza)
                                          .FirstOrDefault();

            if (procenatStanjaObaveze == 100)
            {
                stanjeObaveze.IsZavrseno = true;
            }
            else
            {
                stanjeObaveze.IsZavrseno = false;
            }
            stanjeObaveze.IzvrsenoProcentualno = procenatStanjaObaveze;
            _context.StanjeObaveze.Update(stanjeObaveze);
            _context.SaveChanges();

            return(Ok("Uspjesno azurirano!"));
        }
Exemple #17
0
        public IActionResult Dodaj(int DogadjajId)
        {
            var dogadjaj = db.Dogadjaj.Where(x => x.ID == DogadjajId).SingleOrDefault();
            var logirani = db.Student.Where(x => x.KorisnickiNalogId == HttpContext.GetLogiraniKorisnik().Id).SingleOrDefault();

            if (logirani == null)
            {
                return(Content("Niste logirani"));
            }
            if (dogadjaj == null)
            {
                return(Content("Dogadjaj ne postoji"));
            }
            OznacenDogadjaj oznacenDogadjaj = new OznacenDogadjaj
            {
                DatumDodavanja = DateTime.Now,
                DogadjajID     = DogadjajId,
                StudentID      = logirani.ID
            };

            db.OznacenDogadjaj.Add(oznacenDogadjaj);
            var sveObaveze = db.Obaveza.Where(x => x.DogadjajID == DogadjajId);

            foreach (var o in sveObaveze)
            {
                StanjeObaveze novoStanje = new StanjeObaveze
                {
                    DatumIzvrsenja          = DateTime.MinValue,
                    IsZavrseno              = false,
                    NotifikacijeRekurizivno = o.NotifikacijeRekurizivnoDefault,
                    IzvrsenoProcentualno    = 0,
                    NotifikacijaDanaPrije   = o.NotifikacijaDanaPrijeDefault,
                    OznacenDogadjaj         = oznacenDogadjaj,
                    ObavezaID = o.ID
                };
                db.StanjeObaveze.Add(novoStanje);
            }
            db.SaveChanges();
            return(Redirect(nameof(Index)));
        }
        public bool IspunjavaUslovNotificiranja(StanjeObaveze stanjeObaveze)
        {
            if (stanjeObaveze.NotifikacijaDanaPrije == 0)
            {
                return(false);
            }

            var dogadjaj = stanjeObaveze.OznacenDogadjaj.Dogadjaj;

            if (dogadjaj == null)
            {
                return(false);
            }

            if (stanjeObaveze.NotifikacijeRekurizivno && dogadjaj.DatumOdrzavanja >= DateTime.Now &&
                stanjeObaveze.NotifikacijaDanaPrije >= dogadjaj.DatumOdrzavanja.Day - DateTime.Now.Day)
            {
                return(true);
            }

            return(stanjeObaveze.NotifikacijaDanaPrije == dogadjaj.DatumOdrzavanja.Day - DateTime.Now.Day);
        }
Exemple #19
0
        public IActionResult Dodaj(int DogadjajId, int KorisnikId)
        {
            Dogadjaj d = db.Dogadjaj.Find(DogadjajId);
            Student  s = db.Student.Where(x => x.KorisnickiNalogId == KorisnikId).SingleOrDefault();

            if (d != null && s != null)
            {
                OznacenDogadjaj novi = new OznacenDogadjaj
                {
                    DatumDodavanja = DateTime.Now,
                    DogadjajID     = DogadjajId,
                    StudentID      = s.ID
                };

                db.Add(novi);
                db.SaveChanges();

                List <Obaveza> obaveze = db.Obaveza.Where(o => o.DogadjajID == d.ID).ToList();

                foreach (var item in obaveze)
                {
                    StanjeObaveze stanjeObaveze = new StanjeObaveze
                    {
                        DatumIzvrsenja          = DateTime.Parse("1/1/2020"),
                        IsZavrseno              = false,
                        IzvrsenoProcentualno    = 0,
                        NotifikacijaDanaPrije   = item.NotifikacijaDanaPrijeDefault,
                        NotifikacijeRekurizivno = item.NotifikacijeRekurizivnoDefault,
                        ObavezaID         = item.ID,
                        OznacenDogadjajID = novi.ID
                    };
                    db.Add(stanjeObaveze);
                    db.SaveChanges();
                }
            }

            return(Redirect("Index"));
        }
        public float ProcenatZavrsenih(int DogadjajId)
        {
            List <Obaveza> listaObaveza      = _context.Obaveza.Where(o => o.DogadjajID == DogadjajId).ToList();
            float          procenatZavrsenih = 0;

            foreach (var x in listaObaveza)
            {
                StanjeObaveze sO = _context.StanjeObaveze.Where(so => so.ObavezaID == x.ID).FirstOrDefault();

                if (sO != null)
                {
                    procenatZavrsenih += sO.IzvrsenoProcentualno;
                }
            }

            float procenat = 0;

            if (listaObaveza.Count() != 0)
            {
                procenat = procenatZavrsenih / listaObaveza.Count();
            }

            return(procenat);
        }
        public async Task <ServiceResult> OznaciDogadjaj(int dogadjajId, int studentId)
        {
            if (await VecOznacen(dogadjajId, studentId))
            {
                return new ServiceResult
                       {
                           Failed  = true,
                           Message = "Dogadjaj vec oznacen."
                       }
            }
            ;

            if (!await _context.Student.AnyAsync(x => x.ID == studentId))
            {
                return new ServiceResult
                       {
                           Failed  = true,
                           Message = "Student ne postoji."
                       }
            }
            ;

            var dogadjaj = await _context.Dogadjaj.FindAsync(dogadjajId);

            if (dogadjaj == null)
            {
                return new ServiceResult
                       {
                           Failed  = true,
                           Message = "Dogadjaj nije pronadjen."
                       }
            }
            ;

            var noviOznaceni = new OznacenDogadjaj
            {
                DatumDodavanja = DateTime.Now,
                DogadjajID     = dogadjajId,
                StudentID      = studentId
            };


            await _context.AddAsync(noviOznaceni);

            await _context.SaveChangesAsync();


            await _context.Entry(dogadjaj).Collection(x => x.Obaveze).LoadAsync();

            foreach (var x in dogadjaj.Obaveze)
            {
                var novoStanjeObaveze = new StanjeObaveze
                {
                    IzvrsenoProcentualno    = 0,
                    NotifikacijaDanaPrije   = 30,
                    NotifikacijeRekurizivno = true,
                    IsZavrseno        = false,
                    ObavezaID         = x.ID,
                    OznacenDogadjajID = noviOznaceni.ID
                };

                await _context.AddAsync(novoStanjeObaveze);
            }

            await _context.SaveChangesAsync();

            return(new ServiceResult
            {
                Success = true,
                Message = "Uspjesno oznacen."
            });
        }
        public IActionResult Index()
        {
            HashSet <Notifikacija>         notifikacije      = new HashSet <Notifikacija>();
            HashSet <DogadajiRedViewModel> oznaceniDogadjaji = _context.OznacenDogadjaj
                                                               .Where(od => od.StudentID == 1)//treba staviti koji je student logiran, nisam upućen kako
                                                               .Select(od => new DogadajiRedViewModel
                                                                       (
                                                                           od.ID,
                                                                           od.Dogadjaj.DatumOdrzavanja,
                                                                           od.Dogadjaj.Nastavnik.ImePrezime,
                                                                           od.Dogadjaj.Opis,
                                                                           0,//nisam siguran kako uraditi preko EF
                                                                           od.DogadjajID
                                                                       )
            {
            }).ToHashSet();


            foreach (var oznacenDogadjaj in oznaceniDogadjaji)
            {
                HashSet <Obaveza> obaveze = _context.Obaveza
                                            .Where(o => o.DogadjajID == oznacenDogadjaj.DogadjajID)
                                            .ToHashSet();

                int   brojObaveza = obaveze.Count();
                float sumaObaveze = 0;
                foreach (var obaveza in obaveze)
                {
                    StanjeObaveze stanjeObaveze = _context.StanjeObaveze
                                                  .Where(so => so.ObavezaID == obaveza.ID)
                                                  .OrderByDescending(so => so.DatumIzvrsenja)
                                                  .FirstOrDefault();

                    if (stanjeObaveze != null)
                    {
                        sumaObaveze += stanjeObaveze.IzvrsenoProcentualno / brojObaveza;
                    }
                }
                oznacenDogadjaj.BrojObaveza = sumaObaveze;

                //Zadatak 3
                StanjeObaveze stanjeObaveza = _context.StanjeObaveze
                                              .Where(so => so.OznacenDogadjajID == oznacenDogadjaj.ID)
                                              .Include(so => so.OznacenDogadjaj)
                                              .Include(so => so.Obaveza)
                                              .ThenInclude(o => o.Dogadjaj)
                                              .OrderByDescending(so => so.DatumIzvrsenja)
                                              .FirstOrDefault();

                if (stanjeObaveza != null && oznacenDogadjaj.DatumDogadjanja.CompareTo(
                        DateTime.Now.AddDays(stanjeObaveza.Obaveza.NotifikacijaDanaPrijeDefault
                                             )) == -1)
                {
                    PoslataNotifikacija poslataNotifikacija = _context.PoslataNotifikacija
                                                              .OrderByDescending(pn => pn.DatumSlanja)
                                                              .FirstOrDefault();

                    if (poslataNotifikacija == null)
                    {
                        poslataNotifikacija = new PoslataNotifikacija(stanjeObaveza.Id);
                        _context.PoslataNotifikacija.Add(poslataNotifikacija);
                    }

                    if (!poslataNotifikacija.IsProcitano)
                    {
                        notifikacije.Add(
                            new Notifikacija
                            (
                                stanjeObaveza.Obaveza.Naziv,
                                stanjeObaveza.Obaveza.Dogadjaj.DatumOdrzavanja,
                                stanjeObaveza.OznacenDogadjaj.Dogadjaj.Opis,
                                poslataNotifikacija.Id
                            ));
                    }
                }
            }


            HashSet <DogadajiRedViewModel> neoznaceniDogadjaji = _context.Dogadjaj
                                                                 .Where(d => oznaceniDogadjaji.Where(od => od.DogadjajID == d.ID).FirstOrDefault() == null)
                                                                 .Select(d => new DogadajiRedViewModel
                                                                         (
                                                                             d.ID,
                                                                             d.DatumOdrzavanja,
                                                                             d.Nastavnik.ImePrezime,
                                                                             d.Opis,
                                                                             _context.Obaveza.Where(o => o.DogadjajID == d.ID).Count(),
                                                                             d.ID
                                                                         )
            {
            }).ToHashSet();

            _context.SaveChanges();

            return(View(new TabeleDogadjajiViewModel(oznaceniDogadjaji, neoznaceniDogadjaji, notifikacije)));
        }