public async Task <IActionResult> PostProjekt([FromBody] ProjektDTO projektDTO) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } DodajDokumente(projektDTO.Dokumenti); Projekt projekt = new Projekt() { IdProjekta = projektDTO.IdProjekta, Naziv = projektDTO.Naziv, Opis = projektDTO.Opis, KljucneRijeci = projektDTO.KljucneRijeci, DatumPocetka = projektDTO.DatumPocetka, DatumZavrsetka = projektDTO.DatumZavrsetka, IdFaze = projektDTO.IdFaze, IdStacka = projektDTO.IdStacka }; projekt.IdStackaNavigation = _context.TehnoloskiStack.FirstOrDefault(x => x.IdStacka == projekt.IdStacka); projekt.IdFazeNavigation = _context.Faza.FirstOrDefault(x => x.IdFaze == projekt.IdFaze); foreach (var i in projektDTO.Tehnologije) { TehnologijaProjekt x = new TehnologijaProjekt() { IdProjekta = projekt.IdProjekta, IdTehnologije = i.IdTehnologije, IdProjektaNavigation = projekt, }; x.IdTehnologijeNavigation = _context.Tehnologija.FirstOrDefault(a => a.IdTehnologije == i.IdTehnologije); _context.TehnologijaProjekt.Add(x); } foreach (var i in projektDTO.Podrucja) { PodrucjeProjekt x = new PodrucjeProjekt() { IdProjekta = projekt.IdProjekta, IdPodrucja = i.IdPodrucja, IdProjektaNavigation = projekt, }; x.IdPodrucjaNavigation = _context.PoslovnoPodrucje.FirstOrDefault(a => a.IdPodrucja == i.IdPodrucja); _context.PodrucjeProjekt.Add(x); } int n = projektDTO.Dokumenti.Count; List <Dokument> dokumenti = _context.Dokument.OrderByDescending(x => x.IdDokumenta).Take(n).ToList(); foreach (var i in dokumenti) { DokumentProjekt x = new DokumentProjekt() { IdProjekta = projekt.IdProjekta, IdDokumenta = i.IdDokumenta, IdProjektaNavigation = projekt, }; x.IdDokumentaNavigation = _context.Dokument.FirstOrDefault(a => a.IdDokumenta == i.IdDokumenta); _context.DokumentProjekt.Add(x); } foreach (var i in projektDTO.Sudionici) { OsobaProjekt x = new OsobaProjekt() { IdProjekta = projekt.IdProjekta, IdOsobe = i.IdOsobe, IdProjektaNavigation = projekt, IdUloge = i.IdUloge }; x.IdOsobeNavigation = _context.Osoba.FirstOrDefault(a => a.IdOsobe == i.IdOsobe); x.IdUlogeNavigation = _context.Uloga.FirstOrDefault(a => a.IdUloge == i.IdUloge); _context.OsobaProjekt.Add(x); } _context.Projekt.Add(projekt); await _context.SaveChangesAsync(); return(CreatedAtAction("GetProjekt", new { id = projekt.IdProjekta }, projekt)); }
public async Task <IActionResult> PutProjekt([FromRoute] int id, [FromBody] ProjektDTO projektDTO) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != projektDTO.IdProjekta) { return(BadRequest()); } List <DokumentProjekt> ids1 = _context.DokumentProjekt.Where(x => x.IdProjekta == projektDTO.IdProjekta).ToList(); List <int> ids2 = projektDTO.Dokumenti.Select(x => x.IdDokumenta).ToList(); List <DokumentDTO> doks = projektDTO.Dokumenti.ToList(); for (int i = doks.Count - 1; i > -1; i--) { if (doks[i].IdDokumenta != 0) { doks.RemoveAt(i); } } foreach (var i in ids1) { if (!ids2.Contains(i.IdDokumenta)) { _context.DokumentProjekt.Remove(i); } } DodajDokumente(doks); Projekt projekt = _context.Projekt.FirstOrDefault(x => x.IdProjekta == id); projekt.Naziv = projektDTO.Naziv; projekt.Opis = projektDTO.Opis; projekt.KljucneRijeci = projektDTO.KljucneRijeci; projekt.IdStacka = projektDTO.IdStacka; projekt.IdFaze = projektDTO.IdFaze; projekt.DatumPocetka = projektDTO.DatumPocetka; projekt.DatumZavrsetka = projektDTO.DatumZavrsetka; projekt.IdFazeNavigation = _context.Faza.FirstOrDefault(x => x.IdFaze == projekt.IdFaze); projekt.IdStackaNavigation = _context.TehnoloskiStack.FirstOrDefault(x => x.IdStacka == projekt.IdStacka); int n = doks.Count; List <Dokument> dokumenti = _context.Dokument.OrderByDescending(x => x.IdDokumenta).Take(n).ToList(); foreach (var i in dokumenti) { DokumentProjekt x = new DokumentProjekt() { IdProjekta = projekt.IdProjekta, IdDokumenta = i.IdDokumenta, IdProjektaNavigation = projekt, }; x.IdDokumentaNavigation = _context.Dokument.FirstOrDefault(a => a.IdDokumenta == i.IdDokumenta); _context.DokumentProjekt.Add(x); } List <int> ids = _context.Tehnologija.Select(x => x.IdTehnologije).ToList(); List <int> novi = projektDTO.Tehnologije.Select(x => x.IdTehnologije).ToList(); List <int> stari = _context.TehnologijaProjekt.Where(x => x.IdProjekta == projekt.IdProjekta).Select(x => x.IdTehnologije).ToList(); foreach (var i in ids) { if (novi.Contains(i) && !stari.Contains(i)) { _context.TehnologijaProjekt.Add(new TehnologijaProjekt() { IdProjekta = projekt.IdProjekta, IdTehnologije = i, IdProjektaNavigation = projekt, IdTehnologijeNavigation = _context.Tehnologija.FirstOrDefault(x => x.IdTehnologije == i) }); } if (!novi.Contains(i) && stari.Contains(i)) { _context.TehnologijaProjekt.Remove(_context.TehnologijaProjekt.FirstOrDefault(x => x.IdTehnologije == i && x.IdProjekta == projekt.IdProjekta)); } } ids = _context.PoslovnoPodrucje.Select(x => x.IdPodrucja).ToList(); novi = projektDTO.Podrucja.Select(x => x.IdPodrucja).ToList(); stari = _context.PodrucjeProjekt.Where(x => x.IdProjekta == projekt.IdProjekta).Select(x => x.IdPodrucja).ToList(); foreach (var i in ids) { if (novi.Contains(i) && !stari.Contains(i)) { _context.PodrucjeProjekt.Add(new PodrucjeProjekt() { IdProjekta = projekt.IdProjekta, IdPodrucja = i, IdProjektaNavigation = projekt, IdPodrucjaNavigation = _context.PoslovnoPodrucje.FirstOrDefault(x => x.IdPodrucja == i) }); } if (!novi.Contains(i) && stari.Contains(i)) { _context.PodrucjeProjekt.Remove(_context.PodrucjeProjekt.FirstOrDefault(x => x.IdPodrucja == i && x.IdProjekta == projekt.IdProjekta)); } } ids = _context.Osoba.Select(x => x.IdOsobe).ToList(); novi = projektDTO.Sudionici.Select(x => x.IdOsobe).ToList(); stari = _context.OsobaProjekt.Where(x => x.IdProjekta == projekt.IdProjekta).Select(x => x.IdOsobe).ToList(); foreach (var i in ids) { if (novi.Contains(i) && !stari.Contains(i)) { _context.OsobaProjekt.Add(new OsobaProjekt() { IdProjekta = projekt.IdProjekta, IdOsobe = i, IdProjektaNavigation = projekt, IdUloge = projektDTO.Sudionici.FirstOrDefault(x => x.IdOsobe == i).IdUloge, IdOsobeNavigation = _context.Osoba.FirstOrDefault(x => x.IdOsobe == i), IdUlogeNavigation = _context.Uloga.FirstOrDefault(x => x.IdUloge == projektDTO.Sudionici.FirstOrDefault(y => y.IdOsobe == i).IdUloge) }); } else if (!novi.Contains(i) && stari.Contains(i)) { _context.OsobaProjekt.Remove(_context.OsobaProjekt.FirstOrDefault(x => x.IdOsobe == i && x.IdProjekta == projekt.IdProjekta)); } } _context.Entry(projekt).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ProjektExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }