public ServiceResult <ZahtjevModel> AzurirajZahtjev(int zahtjevId, AzurirajZahtjevRequestModel model) { var zahtjev = context.Zahtjevi.Include(z => z.ZahtjevStatus) .SingleOrDefault(p => p.Id == zahtjevId && !p.IsDeleted); if (zahtjev == null) { return(NotFound()); } if (zahtjev.ZahtjevStatus.Oznaka == (int)OznakeStatusa.Done) { return(Error("Izmjena nije moguća, jer je ovaj zahtjev završen")); } if (String.IsNullOrWhiteSpace(model.Naziv)) { return(Error("Naziv zahtjeva ne može biti prazan")); } if (String.IsNullOrWhiteSpace(model.Opis)) { return(Error("Opis zahtjeva ne može biti prazan")); } IzmjenaZahtjeva izmjenaZahtjeva = new IzmjenaZahtjeva(); try { zahtjev.Naziv = model.Naziv; zahtjev.Opis = model.Opis; zahtjev.ZahtjevKategorijaId = model.ZahtjevKategorijaId; zahtjev.ZahtjevTipId = model.ZahtjevTipId; zahtjev.ZahtjevPrioritetId = model.ZahtjevPrioritetId; zahtjev.DatumIzmjene = DateTime.Now; zahtjev.ModifiedBy = model.ModifiedBy; zahtjev.PocetakIzrade = model.PocetakIzrade; if (ImaPravo("zahtjev_zahtjev_edit_dodijeljeni_korisnik")) { if (zahtjev.DodijeljeniKorisnikIme != model.DodijeljeniKorisnikIme) { zahtjev.DodijeljeniKorisnikIme = model.DodijeljeniKorisnikIme; if (zahtjev.DodijeljeniKorisnikIme != null) { var naziv = zahtjev.Naziv; Notifikacija notifikacija = new Notifikacija(); notifikacija.Naslov = "Dodjela zahtjeva"; if (zahtjev.Naziv.Length > 35) { naziv = zahtjev.Naziv.Substring(0, 32) + "..."; } notifikacija.Poruka = "Dodijeljen Vam je zahtjev pod nazivom: '" + naziv; notifikacija.ZahtjevId = zahtjev.Id; notifikacija.ProjekatId = zahtjev.ProjekatId; notifikacija.DatumKreiranja = DateTime.Now; context.Notifikacije.Add(notifikacija); //SaveChanges(context); //kreiranje notifikacije korisniku koji je kreirao zahtjev KorisnikNotifikacija korisnikNotifikacija = new KorisnikNotifikacija(); korisnikNotifikacija.KorisnickoIme = zahtjev.DodijeljeniKorisnikIme; korisnikNotifikacija.NotifikacijaId = notifikacija.Id; korisnikNotifikacija.Otvorena = false; korisnikNotifikacija.Notifikacija = notifikacija; context.KorisnikNotifikacije.Add(korisnikNotifikacija); } } } //ako se mijenja i status, da se to zabiljezi u bazi promjena statusa if (zahtjev.ZahtjevStatusId != model.ZahtjevStatusId) { if (!ImaPravo("zahtjev_zahtjev_edit_status")) { return(Error("Nemate pravo izmjene statusa zahtjeva.")); } AzurirajStatusZahtjevaRequestModel azurirajStatusZahtjevaRequestModel = new AzurirajStatusZahtjevaRequestModel(); azurirajStatusZahtjevaRequestModel.ZahtjevStatusId = model.ZahtjevStatusId; this.AzurirajStatusZahtjeva(zahtjevId, azurirajStatusZahtjevaRequestModel); } SaveChanges(context); } catch (Exception e) { throw; } return(Ok(zahtjev.ToZahtjevModel())); }
public ServiceResult <Nothing> AzurirajStatusZahtjeva(int zahtjevId, AzurirajStatusZahtjevaRequestModel model) { var trenutni = authService.TrenutniKorisnik(); if (!ImaPravo("zahtjev_zahtjev_edit_status")) { return(Error("Nemate pravo izmjene statusa zahtjeva.")); } var zahtjev = context.Zahtjevi.Include(z => z.ZahtjevStatus) .Include(z => z.Projekat).ThenInclude(z => z.ProjekatKonfiguracija) .SingleOrDefault(p => p.Id == zahtjevId && !p.IsDeleted); if (zahtjev == null) { return(NotFound()); } var zahtjevStatus = context.ZahtjevStatusi.SingleOrDefault(z => z.Id == model.ZahtjevStatusId); var zadnjaIzmjenaStatusa = context.IzmjeneZahtjeva.Include(z => z.NoviZahtjevStatus).Where(z => z.ZahtjevId == zahtjevId).OrderByDescending(z => z.DatumKreiranja).FirstOrDefault(); try { IzmjenaZahtjeva izmjenaZahtjeva = new IzmjenaZahtjeva(); if (zahtjev.ProjekatId == zahtjevStatus.ProjekatId) { int prijasnjaOznakaStatusa = zahtjev.ZahtjevStatus.Oznaka; //zahtjev.ZahtjevStatusId = model.ZahtjevStatusId; zahtjev.ZahtjevStatus = zahtjevStatus; izmjenaZahtjeva.ZahtjevId = zahtjevId; izmjenaZahtjeva.NoviZahtjevStatusId = model.ZahtjevStatusId; izmjenaZahtjeva.DodijeljeniKorisnikIme = zahtjev.DodijeljeniKorisnikIme; izmjenaZahtjeva.DatumKreiranja = DateTime.Now; izmjenaZahtjeva.DatumIzmjene = DateTime.Now; context.IzmjeneZahtjeva.Add(izmjenaZahtjeva); string radniDani = zahtjev.Projekat.ProjekatKonfiguracija.RadniDani; var vrijemeOd = zahtjev.Projekat.ProjekatKonfiguracija.RadnoVrijemeOd; var vrijemeDo = zahtjev.Projekat.ProjekatKonfiguracija.RadnoVrijemeDo; //racunanje vremena statusa ako je prijasnji status bio u progresu if (zadnjaIzmjenaStatusa != null) { if (zadnjaIzmjenaStatusa.NoviZahtjevStatus.Oznaka == (int)OznakeStatusa.InProgress) { /*TimeSpan time = (TimeSpan)(izmjenaZahtjeva.DatumKreiranja - zadnjaIzmjenaStatusa.DatumKreiranja); * if (zahtjev.PotrošenoVrijeme != null) * zahtjev.PotrošenoVrijeme += (long)time.TotalSeconds; * else zahtjev.PotrošenoVrijeme = (long)time.TotalSeconds;*/ long totalSeconds = RacunajVrijemeTokomRadnogVremena((DateTime)zadnjaIzmjenaStatusa.DatumKreiranja, (DateTime)izmjenaZahtjeva.DatumKreiranja, radniDani, vrijemeOd, vrijemeDo); if (zahtjev.PotrošenoVrijeme != null) { zahtjev.PotrošenoVrijeme += totalSeconds; } else { zahtjev.PotrošenoVrijeme = totalSeconds; } } } else { if (prijasnjaOznakaStatusa == (int)OznakeStatusa.InProgress) { long totalSeconds = RacunajVrijemeTokomRadnogVremena((DateTime)zahtjev.DatumKreiranja, (DateTime)izmjenaZahtjeva.DatumKreiranja, radniDani, vrijemeOd, vrijemeDo); if (zahtjev.PotrošenoVrijeme != null) { zahtjev.PotrošenoVrijeme += totalSeconds; } else { zahtjev.PotrošenoVrijeme = totalSeconds; } /*TimeSpan time = (TimeSpan)(izmjenaZahtjeva.DatumKreiranja - zahtjev.DatumKreiranja); * if (zahtjev.PotrošenoVrijeme != null) * zahtjev.PotrošenoVrijeme += (long)time.TotalSeconds; * else zahtjev.PotrošenoVrijeme = (long)time.TotalSeconds;*/ } } var naziv = zahtjev.Naziv; //kreiranje notifikacije o promjeni statusa zahtjeva Notifikacija notifikacija = new Notifikacija(); notifikacija.Naslov = "Izmjena statusa zahtjeva"; if (zahtjev.Naziv.Length > 35) { naziv = zahtjev.Naziv.Substring(0, 32) + "..."; } notifikacija.Poruka = "Status zahtjeva pod nazivom: '" + naziv + "', promijenjen u status: " + zahtjev.ZahtjevStatus.Naziv; notifikacija.ZahtjevId = zahtjev.Id; notifikacija.ProjekatId = zahtjev.ProjekatId; notifikacija.DatumKreiranja = DateTime.Now; context.Notifikacije.Add(notifikacija); //kreiranje notifikacije korisniku koji je kreirao zahtjev KorisnikNotifikacija korisnikNotifikacija = new KorisnikNotifikacija(); korisnikNotifikacija.KorisnickoIme = zahtjev.CreatedBy; korisnikNotifikacija.NotifikacijaId = notifikacija.Id; korisnikNotifikacija.Otvorena = false; korisnikNotifikacija.Notifikacija = notifikacija; context.KorisnikNotifikacije.Add(korisnikNotifikacija); SaveChanges(context); } } catch (Exception e) { throw; } return(Ok()); }
public ServiceResult <ZahtjevModel> KreirajZahtjevZaProjekat(int projekatId, KreirajZahtjevRequestModel model) { /*var trenutni = authService.TrenutniKorisnik(); * * var hashProvider = Scope.Resolve<IHashProvider>(); * var tajna = hashProvider.HashPassword(model.Lozinka);*/ if (String.IsNullOrWhiteSpace(model.Naziv)) { return(Error("Naziv zahtjeva ne može biti prazan")); } if (model.Naziv.Length > 128) { return(Error("Naziv zahtjeva ne može biti veći od 128")); } if (String.IsNullOrWhiteSpace(model.Opis)) { return(Error("Opis zahtjeva ne može biti prazan")); } Zahtjev zahtjev = new Zahtjev(); zahtjev.Naziv = model.Naziv; zahtjev.Opis = model.Opis; zahtjev.DatumKreiranja = DateTime.Now; zahtjev.ZahtjevKategorijaId = model.ZahtjevKategorijaId; zahtjev.ZahtjevPrioritetId = model.ZahtjevPrioritetId; zahtjev.ZahtjevTipId = model.ZahtjevTipId; zahtjev.PocetakIzrade = model.PocetakIzrade; zahtjev.ZahtjevStatusId = OdrediDefaultniZahtjevStatusProjekta(projekatId).Id; Projekat projekat = context.Projekti .Include(z => z.Zahtjevi) .FirstOrDefault(x => x.Id == projekatId); if (projekat == null) { return(NotFound()); } projekat.Zahtjevi.Add(zahtjev); IzmjenaZahtjeva izmjenaZahtjeva = new IzmjenaZahtjeva(); izmjenaZahtjeva.DatumKreiranja = zahtjev.DatumKreiranja; izmjenaZahtjeva.DodijeljeniKorisnik = zahtjev.DodijeljeniKorisnik; izmjenaZahtjeva.NoviZahtjevStatusId = zahtjev.ZahtjevStatusId; izmjenaZahtjeva.Zahtjev = zahtjev; context.IzmjeneZahtjeva.Add(izmjenaZahtjeva); SaveChanges(context); //dodavanje priloga zahtjeva, moguce samo jedan fajl trenutno if (model.DokumentId != null) { PrilogZahtjeva prilogZahtjeva = new PrilogZahtjeva(); prilogZahtjeva.DokumentId = (int)model.DokumentId; prilogZahtjeva.ZahtjevId = zahtjev.Id; context.PriloziZahtjeva.Add(prilogZahtjeva); SaveChanges(context); } return(Ok(zahtjev.ToZahtjevModel())); }