示例#1
0
        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()));
        }
示例#2
0
        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());
        }
示例#3
0
        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()));
        }