public async Task <IActionResult> DodajKandidataUGrupu(int grupaId, int kandidatId) { Grupa grupa = await _db.Grupe.FindAsync(grupaId); if (grupa == null) { return(BadRequest()); } GrupaKandidati grupaKandidata = await _db.GrupaKandidati.Where(w => w.GrupaId == grupaId && w.KandidatId == kandidatId).SingleOrDefaultAsync(); if (grupaKandidata != null) { if (grupaKandidata.Odobren) { _db.GrupaKandidati.Remove(grupaKandidata); } else { BadRequest("Korisnik se ne moze odjaviti sa grupe ako nije odobren."); } } else { var gKandidati = await _db.GrupaKandidati.AddAsync(new GrupaKandidati() { Grupa = grupa, KandidatId = (int)kandidatId }); var prisustvaTermini = _db.PrisustvoTermini.Where(w => w.GrupaId == grupa.GrupaId); var prisustva = new List <Prisustvo>(); foreach (var pt in prisustvaTermini) { prisustva.Add(new Prisustvo() { PrisustvoTermin = pt, GrupaKandidati = gKandidati.Entity, Prisutan = false }); } if (prisustva.Any()) { await _db.Prisustva.AddRangeAsync(prisustva); } } await _db.SaveChangesAsync(); var model = await _db.GrupaKandidati.AsNoTracking().Where(w => w.GrupaId == grupaId) .Select(s => new GrupaVMs.GrupaKandidatiListItemVM() { GrupaKandidatiId = s.GrupaKandidatiId, KandidatId = s.KandidatId, Ime = s.Kandidat.Osoba.Ime, Prezime = s.Kandidat.Osoba.Prezime, Email = s.Kandidat.Osoba.Email, BrojTelefona = s.Kandidat.Osoba.BrojTelefona, BrojMobitela = s.Kandidat.Osoba.BrojMobitela, Odobren = s.Odobren, Cijena = (s.Grupa.Cijena ?? s.Grupa.Kurs.KursTip.Cijena) + "", Uplaceno = _db.UplateKandidata.Where(w => w.GrupaKandidatiId == s.GrupaKandidatiId) .Sum(sum => sum.Kolicina) + "", Ocjena = _db.Ocjene.AsNoTracking().FirstOrDefault(w => w.GrupaKandidatiId == s.GrupaKandidatiId), }) .ToListAsync(); return(PartialView("_GrupaKandidatiTable", model)); }
public async Task <IActionResult> PrijavaUGrupu(int id) { var nalog = await HttpContext.GetLogiraniKorisnik(); var kandidatId = nalog?.KorisnickiNalogId; var kandidat = await _db.Kandidati.FindAsync(kandidatId ?? 0); if (kandidat == null) { return(BadRequest("Logirani korisnik mora biti kandidat da bi se prijavio u grupu.")); } Grupa grupa = await _db.Grupe.FindAsync(id); if (grupa == null || kandidatId == null || grupa.Status != GrupaStatus.Aktivna) { return(BadRequest()); } GrupaKandidati grupaKandidata = await _db.GrupaKandidati.Where(w => w.GrupaId == id && w.KandidatId == kandidatId).SingleOrDefaultAsync(); if (grupaKandidata != null) { if (grupaKandidata.Odobren) { _db.GrupaKandidati.Remove(grupaKandidata); } else { BadRequest("Korisnik se ne moze odjaviti sa grupe ako nije odobren."); } } else { var gKandidati = await _db.GrupaKandidati.AddAsync(new GrupaKandidati() { Grupa = grupa, KandidatId = (int)kandidatId }); var prisustvaTermini = _db.PrisustvoTermini.Where(w => w.GrupaId == grupa.GrupaId); var prisustva = new List <Prisustvo>(); foreach (var pt in prisustvaTermini) { prisustva.Add(new Prisustvo() { PrisustvoTermin = pt, GrupaKandidati = gKandidati.Entity, Prisutan = false }); } if (prisustva.Any()) { await _db.Prisustva.AddRangeAsync(prisustva); } } try { await _db.SaveChangesAsync(); return(RedirectToAction(nameof(Details), new { id })); } catch (Exception e) { return(BadRequest(e)); } }