Example #1
0
        [HttpPost]//promjeniti naziv metode
        public JsonResult SlanjeMejlaZaOdobravanjeNabavke(bool odobreno, int nabavka, string napomena)
        {
            var narucilacSifra = trebovanjeNabavkeContext.Nabavkes.FirstOrDefault(t => t.NabavkaId == nabavka).SifraRadnika;
            var narucilac      = trebovanjeNabavkeContext.vRadniks.FirstOrDefault(k => k.RadnikSifra == narucilacSifra);
            var provjerivac    = trebovanjeNabavkeContext.vRadniks.FirstOrDefault(k => k.KorisnickoIme == User.Identity.Name);
            var nabavkaDB      = trebovanjeNabavkeContext.Nabavkes.FirstOrDefault(tr => tr.NabavkaId == nabavka);

            nabavkaDB.NapomenaSefa = napomena;
            if (nabavkaDB == null)//dodati jos i ako je nabavka odobrena da je ne moze vise otvoriti pod "odobravanjem"
            {
                return(Json(new { succses = false, message = "Nabavka je nepostojeca!" }));
            }
            if (provjerivac.RadnikSifra == narucilac.Nivo1OdobravanjaSifra)//provjera ako je tim lider
            {
                // ako nema nadredjenog viseg nivoa a odobreno je, salji u skladiste ili marketing
                if (narucilac.Nivo2OdobravanjaSifra == null && narucilac.Nivo3OdobravanjaSifra == null && odobreno)
                {
                    nabavkaDB.DatumiOdobravanjaNabavke.DatumOdobravanjaNivoa1 = DateTime.Now;
                    nabavkaDB.StatusNabavkeId = (int)Enum.Status.Odobreno;//status odobreno

                    poslano = PosaljiMejlMarketinguZaNovuNabavku(nabavkaDB.SerijskiBroj);
                    nabavkaDB.StatusNabavkeId = (int)Enum.Status.U_procesu_nabavke; // status "u procesu nabavke"
                    //salje mejl  i naruciocu da je narudzba odobrena i da je otisla u marketing radi narudžbe artikala
                    if (poslano)
                    {
                        poslano       = false;
                        naslov_Mejla  = "Odgovor na zahtjev za nabavku";
                        sadrzaj_Mejla = "<p>Poštovani, <br/><br/> Vaše <a href=" + adresaHosta + "Nabavke/DetaljiNabavke?nabavka=" +
                                        nabavka + ">nabavka </a> je odobrena, zahtjev je proslijeđen Timu prodaje i nabavki.<br/>" +
                                        "Naknadno ćete biti obavješteni kada artikl/i budu spremni za preuzimanje.</p><br/><br/> ";
                        sadrzaj_Mejla += "<span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                        na_Mejl        = narucilac.Email;
                        poslano        = email.PosaljiMejl(naslov_Mejla, na_Mejl, sadrzaj_Mejla);
                        if (poslano) //AKO JE USPJESNO POSLALO REDIREKTUJ NA POCETNU STRANICU
                        {
                            trebovanjeNabavkeContext.SaveChanges();
                            return(Json(new { succses = true }));
                        }
                        else // AKO JE DOSLO DO GRESKE I NIJE POSLALO VRATI VIEW
                        {
                            return(Json(new { succses = false, message = "Neuspješno slanje mejla" }));
                        }
                    }
                    else // AKO JE DOSLO DO GRESKE I NIJE POSLALO VRATI VIEW
                    {
                        return(Json(new { succses = false, message = "Neuspješno slanje mejla" }));
                    }
                }
                else
                {
                    if (odobreno)
                    {
                        vRadnik nadredjeni = new vRadnik();
                        //salje menadzeru (sefu) dalje
                        if (narucilac.Nivo2OdobravanjaSifra != null)
                        {
                            var timLider = trebovanjeNabavkeContext.vRadniks.ToList().FirstOrDefault(ko => ko.RadnikSifra == narucilac.Nivo1OdobravanjaSifra);
                            nadredjeni    = trebovanjeNabavkeContext.vRadniks.ToList().FirstOrDefault(ko => ko.RadnikSifra == narucilac.Nivo2OdobravanjaSifra);
                            naslov_Mejla  = "Zahtjev za odobravanje nabavke";
                            sadrzaj_Mejla = "<p>Poštovani, <br/><br/>  Na sistemu LANACO trebovanje i nabavke je novi zahtjev za <a href=" +
                                            adresaHosta + "OdobravanjeNabavke/OdobravanjeNabavke?nabavka=" + nabavkaDB.NabavkaId + ">odobravanje nabavke</a>. <br/>" +
                                            "Podnosilac zahtjeva: " + narucilac.Ime + " " + narucilac.Prezime + "<br/>" +
                                            "Broj zahtjeva: " + nabavkaDB.SerijskiBroj;

                            sadrzaj_Mejla            += "<br/><br/><span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                            na_Mejl                   = nadredjeni.Email;
                            nabavkaDB.StatusNabavkeId = 2; // status U procesu odobravanja
                            nabavkaDB.DatumiOdobravanjaNabavke.DatumOdobravanjaNivoa1 = DateTime.Now;
                        }
                        else if (narucilac.Nivo3OdobravanjaSifra != null)
                        {
                            nadredjeni    = trebovanjeNabavkeContext.vRadniks.ToList().FirstOrDefault(ko => ko.RadnikSifra == narucilac.Nivo3OdobravanjaSifra);
                            naslov_Mejla  = "Zahtjev za odobravanje nabavke";
                            sadrzaj_Mejla = "<p>Poštovani, <br/><br/>  Na sistemu LANACO trebovanje i nabavke je novi zahtjev za <a href=" +
                                            adresaHosta + "OdobravanjeNabavke/OdobravanjeNabavke?nabavka=" + nabavkaDB.NabavkaId + " >odobravanje nabavke </a>. <br/>" +
                                            "Podnosilac zahtjeva: " + narucilac.Ime + " " + narucilac.Prezime + "<br/>" +
                                            "Broj zahtjeva: " + nabavkaDB.SerijskiBroj;

                            sadrzaj_Mejla            += "<br/><br/><span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                            na_Mejl                   = nadredjeni.Email;
                            nabavkaDB.StatusNabavkeId = (int)Enum.Status.U_procesu_odobravanja;  // status U procesu odobravanja
                            nabavkaDB.DatumiOdobravanjaNabavke.DatumOdobravanjaNivoa1 = DateTime.Now;
                        }// else je nepotreban jer je slucaj kad nema ni nivoa 2 ni 3 obradjen u if-u iznad
                    }
                    else// nabavka odbijena od strane tim lidela
                    {
                        sadrzaj_Mejla = "<p>Poštovani, <br/><br/> Vaša <a href=" + adresaHosta + "Nabavke/DetaljiNabavke?nabavka=" +
                                        nabavka + ">nabavka </a> je odbijena</p><br/> <br/>";
                        sadrzaj_Mejla            += "<span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                        naslov_Mejla              = "Odgovor na zahtjev za nabavku";
                        na_Mejl                   = narucilac.Email;
                        nabavkaDB.StatusNabavkeId = (int)Enum.Status.Odbijeno;
                        nabavkaDB.DatumiOdobravanjaNabavke.DatumOdobravanjaNivoa1 = DateTime.Now;
                    }
                    poslano = email.PosaljiMejl(naslov_Mejla, na_Mejl, sadrzaj_Mejla);

                    if (poslano) //AKO JE USPJESNO POSLALO REDIREKTUJ NA POCETNU STRANICU
                    {
                        trebovanjeNabavkeContext.SaveChanges(); return(Json(new { succses = true }));
                    }
                    else // AKO JE DOSLO DO GRESKE I NIJE POSLALO VRATI VIEW
                    {
                        return(Json(new { succses = false, message = "Neuspješno slanje mejla" }));
                    }
                }
            }
            else if (provjerivac.RadnikSifra == narucilac.Nivo2OdobravanjaSifra)
            {
                if (odobreno)
                {
                    nabavkaDB.DatumiOdobravanjaNabavke.DatumOdobravanjaNivoa2 = DateTime.Now;


                    if (narucilac.Nivo3OdobravanjaSifra != null)                                        // ako postoji nivo 3 odobravanja salji njemu mejl i redirektuj
                    {
                        nabavkaDB.StatusNabavkeId = (int)Enum.Status.U_procesu_odobravanja_viseg_nivoa; //status u procesu odobravanja viseg nivoa
                        var nadredjeni = trebovanjeNabavkeContext.vRadniks.ToList().FirstOrDefault(ko => ko.RadnikSifra == narucilac.Nivo3OdobravanjaSifra);
                        naslov_Mejla  = "Zahtjev za odobravanje nabavke";
                        sadrzaj_Mejla = "<p>Poštovani, <br/><br/>  Na sistemu LANACO trebovanje i nabavke je novi zahtjev za <a href=" +
                                        adresaHosta + "OdobravanjeNabavke/OdobravanjeNabavke?nabavka=" + nabavkaDB.NabavkaId + ">odobravanje nabavke</a>. <br/>" +
                                        "Podnosilac zahtjeva: " + narucilac.Ime + " " + narucilac.Prezime + "<br/>" +
                                        "Broj zahtjeva: " + nabavkaDB.SerijskiBroj;

                        sadrzaj_Mejla += "<br/><br/><span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                        na_Mejl        = nadredjeni.Email;
                        poslano        = email.PosaljiMejl(naslov_Mejla, na_Mejl, sadrzaj_Mejla);
                        if (poslano) //AKO JE USPJESNO POSLALO REDIREKTUJ NA POCETNU STRANICU
                        {
                            trebovanjeNabavkeContext.SaveChanges();
                            return(Json(new { succses = true }));
                        }
                        else // AKO JE DOSLO DO GRESKE I NIJE POSLALO VRATI VIEW
                        {
                            return(Json(new { succses = false, message = "Neuspjesno slanje mejla" }));
                        }
                    }
                    else if (narucilac.Nivo3OdobravanjaSifra == null)
                    {
                        poslano = PosaljiMejlMarketinguZaNovuNabavku(nabavkaDB.SerijskiBroj);
                        nabavkaDB.StatusNabavkeId = (int)Enum.Status.U_procesu_nabavke; // status "u procesu nabavke"
                        if (poslano)
                        {
                            //salje mejl  i naruciocu da je narudzba odobrena
                            poslano       = false;
                            naslov_Mejla  = "Odgovor na zahtjev za nabavku";
                            sadrzaj_Mejla = "<p>Poštovani, <br/><br/> Vaša <a href=" + adresaHosta + "Nabavka/DetaljiNabavke?nabavka=" +
                                            nabavka + ">nabavka </a> je odobrena, zahtjev je proslijeđena Timu prodaje i nabavke.<br/>" +
                                            "Naknadno ćete biti obavješteni kada nabavka budu spremna za preuzimanje.</p><br/><br/> ";
                            sadrzaj_Mejla += "<span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                            na_Mejl        = narucilac.Email;
                            poslano        = email.PosaljiMejl(naslov_Mejla, na_Mejl, sadrzaj_Mejla);

                            if (poslano) //AKO JE USPJESNO POSLALO REDIREKTUJ NA POCETNU STRANICU
                            {
                                trebovanjeNabavkeContext.SaveChanges();
                                return(Json(new { succses = true }));
                            }
                            else // AKO JE DOSLO DO GRESKE I NIJE POSLALO VRATI VIEW
                            {
                                return(Json(new { succses = false, message = "Neuspješno slanje mejla" }));
                            }
                        }
                        else // AKO JE DOSLO DO GRESKE I NIJE POSLALO VRATI VIEW
                        {
                            return(Json(new { succses = false, message = "Neuspješno slanje mejla" }));
                        }
                    }
                }
                else // nabavka odbijena od strane sefa ili gen. menadzera
                {
                    sadrzaj_Mejla = "<p>Poštovani, <br/><br/> Vaša <a href=" + adresaHosta + "Nabavke/DetaljiNabavke?nabavka=" +
                                    nabavka + ">nabavka </a> je odbijena</p><br/> <br/>";
                    sadrzaj_Mejla            += "<span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                    naslov_Mejla              = "Odgovor na zahtjev za nabavku";
                    na_Mejl                   = narucilac.Email;
                    nabavkaDB.StatusNabavkeId = (int)Enum.Status.Odbijeno;
                    nabavkaDB.DatumiOdobravanjaNabavke.DatumOdobravanjaNivoa2 = DateTime.Now;
                }
                poslano = email.PosaljiMejl(naslov_Mejla, na_Mejl, sadrzaj_Mejla);

                if (poslano) //AKO JE USPJESNO POSLALO REDIREKTUJ NA POCETNU STRANICU
                {
                    trebovanjeNabavkeContext.SaveChanges();
                    return(Json(new { succses = true }));
                }
                else // AKO JE DOSLO DO GRESKE I NIJE POSLALO VRATI VIEW
                {
                    return(Json(new { succses = false, message = "Neuspješno slanje mejla" }));
                }
            }

            else if (provjerivac.RadnikSifra == narucilac.Nivo3OdobravanjaSifra)
            {
                if (odobreno)
                {
                    nabavkaDB.DatumiOdobravanjaNabavke.DatumOdobravanjaNivoa3 = DateTime.Now;
                    nabavkaDB.StatusNabavkeId = (int)Enum.Status.U_procesu_nabavke;

                    poslano = PosaljiMejlMarketinguZaNovuNabavku(nabavkaDB.SerijskiBroj);

                    if (poslano)
                    {// salje mejl naruciocu da je nabavka odobrena
                        poslano       = false;
                        naslov_Mejla  = "Odgovor na zahtjev za nabavku";
                        sadrzaj_Mejla = "<p>Poštovani, <br/><br/> Vaša <a href=" + adresaHosta + "Nabavka/DetaljiNabavke?nabavka=" +
                                        nabavka + ">nabavka </a> je odobrena, zahtjev je proslijeđena Timu prodaje i nabavke.<br/>" +
                                        "Naknadno ćete biti obavješteni kada nabavka budu spremna za preuzimanje.</p><br/><br/> ";
                        sadrzaj_Mejla += "<span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                        na_Mejl        = narucilac.Email;
                        poslano        = email.PosaljiMejl(naslov_Mejla, na_Mejl, sadrzaj_Mejla);
                        if (poslano) //AKO JE USPJESNO POSLALO REDIREKTUJ NA POCETNU STRANICU
                        {
                            trebovanjeNabavkeContext.SaveChanges();
                            return(Json(new { succses = true }));
                        }
                        else // AKO JE DOSLO DO GRESKE I NIJE POSLALO VRATI VIEW
                        {
                            return(Json(new { succses = false, message = "Neuspješno slanje mejla" }));
                        }
                    }
                    else
                    {
                        Json(new { succses = false, message = "Neuspješno slanje mejla" });
                    }
                }
            }
            else // nabavka odbijena od strane sefa ili gazde
            {
                sadrzaj_Mejla = "<p>Poštovani, <br/><br/> Vaša <a href=" + adresaHosta + "Nabavke/DetaljiNabavke?nabavka=" +
                                nabavka + ">nabavka </a> je odbijena</p><br/> <br/>";
                sadrzaj_Mejla            += "<span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                naslov_Mejla              = "Odgovor na zahtjev za nabavku";
                na_Mejl                   = narucilac.Email;
                nabavkaDB.StatusNabavkeId = (int)Enum.Status.Odbijeno;

                //zamjeniti sa datumom razmatranja
                nabavkaDB.DatumiOdobravanjaNabavke.DatumOdobravanjaNivoa3 = DateTime.Now;
            }
            poslano = email.PosaljiMejl(naslov_Mejla, na_Mejl, sadrzaj_Mejla);

            if (poslano) //AKO JE USPJESNO POSLALO REDIREKTUJ NA POCETNU STRANICU
            {
                trebovanjeNabavkeContext.SaveChanges();
                return(Json(new { succses = true }));
            }
            else // AKO JE DOSLO DO GRESKE I NIJE POSLALO VRATI VIEW
            {
                return(Json(new { succses = false, message = "Neuspješno slanje mejla" }));
            }
        }
        public JsonResult IzmjenaAktivneNabavke(NabavkaViewModel viewModel)
        {
            viewModel.Stavke = viewModel.Stavke.OrderBy(a => a.NabavkaVeznaId).ToList();
            List <string> izmjenjeniArtikli = new List <string>();
            var           nabavkaVezna      = trebovanjeNabavkeContext.NabavkaVeznas.Where(t => t.NabavkaId == viewModel.NabavkaId).OrderBy(a => a.NabavkaVeznaId).ToList();

            for (int i = 0; i < viewModel.Stavke.Count; i++)
            {
                bool spremno  = false;
                bool preuzeto = false;

                //stanje iz baze konvertujem u bool
                if (nabavkaVezna[i].StatusId == (int)Enum.Status.Spremno_za_preuzimanje)
                {
                    spremno  = true;
                    preuzeto = false;
                }
                else if (nabavkaVezna[i].StatusId == (int)Enum.Status.Preuzeto)
                {
                    spremno  = true;
                    preuzeto = true;
                }
                if (viewModel.Stavke[i].Spremno != spremno && viewModel.Stavke[i].Spremno)
                {
                    int artikalId = viewModel.Stavke[i].NabavkaVeznaId;
                    nabavkaVezna.Where(t => t.NabavkaId == viewModel.NabavkaId).ToList()[i].StatusId = (int)Enum.Status.Spremno_za_preuzimanje;
                    izmjenjeniArtikli.Add(trebovanjeNabavkeContext.NabavkaVeznas.FirstOrDefault(t => t.NabavkaVeznaId == artikalId).Opis);
                }
                else if (viewModel.Stavke[i].Spremno != spremno && !viewModel.Stavke[i].Spremno)
                {
                    nabavkaVezna.Where(t => t.NabavkaId == viewModel.NabavkaId).ToList()[i].StatusId = (int)Enum.Status.Artikl_u_pripremi;
                }


                if (viewModel.Stavke[i].Preuzeto != preuzeto && viewModel.Stavke[i].Preuzeto)
                {
                    nabavkaVezna.Where(t => t.NabavkaId == viewModel.NabavkaId).ToList()[i].StatusId = (int)Enum.Status.Preuzeto;
                }
                else if (viewModel.Stavke[i].Preuzeto != preuzeto && !viewModel.Stavke[i].Preuzeto && viewModel.Stavke[i].Spremno)
                {
                    nabavkaVezna.Where(t => t.NabavkaId == viewModel.NabavkaId).ToList()[i].StatusId = (int)Enum.Status.Spremno_za_preuzimanje;
                }
                else if (viewModel.Stavke[i].Preuzeto != preuzeto && !viewModel.Stavke[i].Preuzeto && !viewModel.Stavke[i].Spremno)
                {
                    nabavkaVezna.Where(t => t.NabavkaId == viewModel.NabavkaId).ToList()[i].StatusId = (int)Enum.Status.Artikl_u_pripremi;
                }
            }

            trebovanjeNabavkeContext.SaveChanges();
            if (izmjenjeniArtikli.Count > 0)
            {
                EmailController email         = new EmailController();
                string          naslovEmaila  = "Artikli iz nabavke su spremni za preuzimanje";
                string          naMejl        = trebovanjeNabavkeContext.Nabavkes.FirstOrDefault(t => t.NabavkaId == viewModel.NabavkaId).vRadnik.Email;
                string          sadrzajEmaila = "<p>Poštovani, <br/><br/>" +
                                                " <p>Sljedeći artikli koje ste <a href=" + email.adresaHosta + "Nabavke/DetaljiNabavke?nabavka=" + viewModel.NabavkaId + ">naručili </a>" +
                                                " su spremni za preuzimanje: </p> <ul>";
                foreach (var artikal in izmjenjeniArtikli)
                {
                    sadrzajEmaila += "<li>" + artikal + "</li>";
                }
                sadrzajEmaila += "</ul><br/><span> Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke </span> ";
                email.PosaljiMejl(naslovEmaila, naMejl, sadrzajEmaila);
                //toster za uspjesno poslan mejl kad je artikl spreman
            }
            if (NabavkaPreuzeta(viewModel))
            {
                var nabavka = trebovanjeNabavkeContext.Nabavkes.FirstOrDefault(t => viewModel.NabavkaId == t.NabavkaId);
                nabavka.StatusNabavkeId = (int)Enum.Status.Preuzeto;
                //nabavka.DatumZaduzenjaTrebovanja = DateTime.Now; // trenutno ne postoji u bazi
                trebovanjeNabavkeContext.SaveChanges();
                EmailController email         = new EmailController();
                string          naslovEmaila  = "Potvrda o preuzimanju trebovanja";
                string          naMejl        = nabavka.vRadnik.Email;
                string          sadrzajEmaila = "<p>Poštovani, <br/><br/> Vaša <a href=" + email.adresaHosta + "Nabavke/DetaljiNabavke?nabavka=" +
                                                viewModel.NabavkaId + ">nabavka </a> je preuzeta. </p><br/><br/> ";
                sadrzajEmaila += "<span>Srdačan pozdrav, <br/><br/>Lanaco trebovanje i nabavke</span>";

                email.PosaljiMejl(naslovEmaila, naMejl, sadrzajEmaila);
                return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
            }

            //ako je izmjenjeniArtikli.Count > 0 posalji mail
            return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
        }
Example #3
0
        public JsonResult KreiranjeNovogTrebovanja(List <ArtiklViewModel> artikliZaTrebovanje, string napomenaRadnika)
        {
            //Dio koda za provjeravanje da li se svi primljeni artikli u listi view modela nalaze unutar baze podataka za artikle
            bool provjeraPostojanjaSvihArtikala = trebovanjeNabavkeContext.vInformacijeOArtiklus.ToList().Any(x =>
                                                                                                              artikliZaTrebovanje.Any(z => z.ArtiklId == x.ArtikalId));

            if (provjeraPostojanjaSvihArtikala)
            {
                //Dodavanje novog trebovanja u bazu
                string noviSerijskiBroj = NoviSerijskiBroj();
                var    narucilac        = trebovanjeNabavkeContext.vRadniks.FirstOrDefault(x => x.KorisnickoIme == User.Identity.Name);
                var    novoTrebovanje   = new Trebovanje
                {
                    SifraRadnika            = narucilac.RadnikSifra,
                    SerijskiBroj            = noviSerijskiBroj,
                    DatumPodnosenjaZahtjeva = DateTime.Now,
                    StatusTrebovanjaId      = (int)Enum.Status.Na_čekanju,
                    NapomenaRadnika         = napomenaRadnika.Replace("\n", "/n"),
                    TrebovanjeVeznas        = artikliZaTrebovanje.Select(x => new TrebovanjeVezna
                    {
                        ArtikalId             = x.ArtiklId,
                        TrebovanaKolicina     = x.TrebovanaKolicina,
                        KolicinaKojaNedostaje = 0,
                        StatusArtiklaId       = (int)Enum.Status.Na_čekanju,
                        RezervisaniArtikli    = trebovanjeNabavkeContext.RezervisaniArtiklis.FirstOrDefault(a => a.ArtikalId == x.ArtiklId)
                    }).ToList(),
                    DatumiOdobravanjaTrebovanje = new DatumiOdobravanjaTrebovanje()
                };
                trebovanjeNabavkeContext.Trebovanjes.Add(novoTrebovanje);
                trebovanjeNabavkeContext.SaveChanges();

                foreach (var artikl in novoTrebovanje.TrebovanjeVeznas)
                {
                    artikl.KolicinaKojaNedostaje = ((artikl.RezervisaniArtikli.TrenutnaKolicina - artikl.RezervisaniArtikli.RezervisanaKolicina) >= artikl.TrebovanaKolicina) ?//ako na stanju ima dovoljno za moju rezervaciju vrati 0 za narucit
                                                   0 : ((artikl.RezervisaniArtikli.TrenutnaKolicina <= artikl.RezervisaniArtikli.RezervisanaKolicina) ?
                                                        artikl.TrebovanaKolicina : (artikl.TrebovanaKolicina - (artikl.RezervisaniArtikli.TrenutnaKolicina - artikl.RezervisaniArtikli.RezervisanaKolicina)));
                    //ako je rezervisana vec cijela kolicina na stanju ili vise od nje vrati mi cijelu moju kolicinu za trebovanje da se naruci
                    //ako trebujem vise nego sto je ostalo na stanju vrati mi da treba naruciti razliku izmedju dostupne kolicine i moje trebovane kolicine
                }
                trebovanjeNabavkeContext.SaveChanges();
                //Slanje mejla nadređenom sa linkom kreiranog trebovanja
                string sadrzajMejla = "<p>Poštovani, <br/><br/>  Na sistemu LANACO trebovanje i nabavke je novi zahtjev za <a href=" +
                                      adresaHosta + "Email/OdobravanjeTrebovanja?trebovanje=" + novoTrebovanje.TrebovanjeId + ">odobravanje trebovanja</a>. <br/>" +
                                      "Podnosilac zahtjeva: " + narucilac.Ime + " " + narucilac.Prezime + "<br/>" +
                                      "Broj zahtjeva: " + novoTrebovanje.SerijskiBroj;

                sadrzajMejla += "<br/><br/><span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                EmailController email = new EmailController();
                if (email.SlanjeMejlaZaNovoTrebovanje("Zahtjev za odobravanje trebovanja", sadrzajMejla, narucilac.KorisnickoIme, novoTrebovanje.SerijskiBroj))
                {
                    trebovanjeNabavkeContext.SaveChanges();
                    return(Json(new { succses = true }));
                }
                else
                {// slanje mejla za novo trebovanje vraca false ako narucioc nema ni jednog nivoa odobravnja i u tom slucaju zahtjev se salje u skladiste
                    bool   poslano     = false;
                    string naslovMejla = "Odgovor na zahtjev za trebovanje";
                    string naMejl      = "";
                    if (email.SlatiUSkladiste(novoTrebovanje.TrebovanjeId))
                    {
                        sadrzajMejla = "<p>Poštovani, <br/><br/> Vaš <a href=" + adresaHosta + "Trebovanje/DetaljiTrebovanja?trebovanje=" +
                                       novoTrebovanje.TrebovanjeId + "> zahtjev za trebovanje </a>  je proslijeđen u skladište. Naknadno ćete biti obavješteni kada artikl/i budu spremni za preuzimanje </p> <br/><br/>";
                        sadrzajMejla += "<span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                        naMejl        = narucilac.Email;
                        poslano       = email.PosaljiMejl(naslovMejla, naMejl, sadrzajMejla);
                        email.PosaljiMejlSkladistaruZaTrebvanje(narucilac.RadnikSifra, novoTrebovanje.TrebovanjeId);
                        novoTrebovanje.StatusTrebovanjaId = (int)Enum.Status.Odobreno;
                        foreach (var artikl in novoTrebovanje.TrebovanjeVeznas)
                        {
                            artikl.StatusArtiklaId = (int)Enum.Status.Artikl_u_pripremi;
                        }
                        trebovanjeNabavkeContext.SaveChanges();
                        return(Json(new { succses = true, message = "Mejl poslan u skladište, jer naručilac nema nadredjenog." }));
                    }
                    else
                    {
                        sadrzajMejla = "<p>Poštovani, <br/><br/> Vaš <a href=" + adresaHosta + "Trebovanje/DetaljiTrebovanja?trebovanje=" +
                                       novoTrebovanje.TrebovanjeId + ">zahtjev za trebovanje </a> je proslijeđen u Timu prodaje i nabavki zbog nabavke nekih od stavki kojih nema na stanju.<br/>" +
                                       "Naknadno ćete biti obavješteni kada artikl/i budu spremni za preuzimanje.</p> <br/><br/>";
                        sadrzajMejla += "<span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";
                        naMejl        = narucilac.Email;
                        poslano       = email.PosaljiMejl(naslovMejla, naMejl, sadrzajMejla);
                        if (poslano)
                        {
                            email.PosaljiMejlReferentuSkladistaUMarketingu(novoTrebovanje.TrebovanjeId);
                            novoTrebovanje.StatusTrebovanjaId = (int)Enum.Status.U_procesu_nabavke;
                            return(Json(new { succses = true, message = "Mejl poslan u skladište, jer naručilac nema nadredjenog." }));
                        }
                        else
                        {
                            return(Json(new { succses = false, message = "Neuspjesno slanje mejla" }));
                        }
                    }
                }
            }
            else
            {
                //Vratiti Json da jedan od artikala se nalazi u bazi artikala
                return(Json(new { succses = false }));
            }
        }
        public JsonResult IzmjenaAktivnogTrebovanja(TrebovanjeViewModel viewModel)
        {
            viewModel.ListaArtikalaTrebovanja = viewModel.ListaArtikalaTrebovanja.OrderBy(a => a.ArtiklId).ToList();
            List <string>          izmjenjeniArtikli         = new List <string>();
            var                    trebovanjeVeze            = trebovanjeNabavkeContext.TrebovanjeVeznas.Where(t => t.TrebovanjeId == viewModel.TrebovanjeId).OrderBy(a => a.ArtikalId).ToList();
            List <TrebovanjeVezna> artikliZaskidanjeSaStanja = new List <TrebovanjeVezna>();

            for (int i = 0; i < viewModel.ListaArtikalaTrebovanja.Count; i++)
            {
                bool spremno  = false;
                bool preuzeto = false;

                //stanje iz baze konvertujem u bool
                if (trebovanjeVeze[i].StatusArtiklaId == (int)Enum.Status.Spremno_za_preuzimanje)
                {
                    spremno  = true;
                    preuzeto = false;
                }
                else if (trebovanjeVeze[i].StatusArtiklaId == (int)Enum.Status.Preuzeto)
                {
                    spremno  = true;
                    preuzeto = true;
                }
                if (viewModel.ListaArtikalaTrebovanja[i].Spremno != spremno && viewModel.ListaArtikalaTrebovanja[i].Spremno)
                {
                    int artikalId = viewModel.ListaArtikalaTrebovanja[i].ArtiklId;
                    trebovanjeVeze.Where(t => t.TrebovanjeId == viewModel.TrebovanjeId).ToList()[i].StatusArtiklaId = (int)Enum.Status.Spremno_za_preuzimanje;
                    izmjenjeniArtikli.Add(trebovanjeNabavkeContext.vInformacijeOArtiklus.FirstOrDefault(a => a.ArtikalId == artikalId).Naziv);
                }
                else if (viewModel.ListaArtikalaTrebovanja[i].Spremno != spremno && !viewModel.ListaArtikalaTrebovanja[i].Spremno)
                {
                    trebovanjeVeze.Where(t => t.TrebovanjeId == viewModel.TrebovanjeId).ToList()[i].StatusArtiklaId = (int)Enum.Status.Artikl_u_pripremi;
                }


                if (viewModel.ListaArtikalaTrebovanja[i].Preuzeto != preuzeto && viewModel.ListaArtikalaTrebovanja[i].Preuzeto)
                {
                    trebovanjeVeze.Where(t => t.TrebovanjeId == viewModel.TrebovanjeId).ToList()[i].StatusArtiklaId = (int)Enum.Status.Preuzeto;
                    artikliZaskidanjeSaStanja.Add(new TrebovanjeVezna
                    {
                        ArtikalId         = trebovanjeVeze.Where(t => t.TrebovanjeId == viewModel.TrebovanjeId).ToList()[i].ArtikalId,
                        TrebovanaKolicina = trebovanjeVeze.Where(t => t.TrebovanjeId == viewModel.TrebovanjeId).ToList()[i].TrebovanaKolicina
                    });
                }
                else if (viewModel.ListaArtikalaTrebovanja[i].Preuzeto != preuzeto && !viewModel.ListaArtikalaTrebovanja[i].Preuzeto && viewModel.ListaArtikalaTrebovanja[i].Spremno)
                {
                    trebovanjeVeze.Where(t => t.TrebovanjeId == viewModel.TrebovanjeId).ToList()[i].StatusArtiklaId = (int)Enum.Status.Spremno_za_preuzimanje;
                }
                else if (viewModel.ListaArtikalaTrebovanja[i].Preuzeto != preuzeto && !viewModel.ListaArtikalaTrebovanja[i].Preuzeto && !viewModel.ListaArtikalaTrebovanja[i].Spremno)
                {
                    trebovanjeVeze.Where(t => t.TrebovanjeId == viewModel.TrebovanjeId).ToList()[i].StatusArtiklaId = (int)Enum.Status.Artikl_u_pripremi;
                }
            }
            foreach (var artikal in artikliZaskidanjeSaStanja)
            {
                trebovanjeNabavkeContext.RezervisaniArtiklis.FirstOrDefault(a => a.ArtikalId == artikal.ArtikalId).RezervisanaKolicina -= artikal.TrebovanaKolicina;
                trebovanjeNabavkeContext.RezervisaniArtiklis.FirstOrDefault(a => a.ArtikalId == artikal.ArtikalId).TrenutnaKolicina    -= artikal.TrebovanaKolicina;
            }
            trebovanjeNabavkeContext.SaveChanges();
            if (izmjenjeniArtikli.Count > 0)
            {
                EmailController email        = new EmailController();
                string          naslovEmaila = "Artikli spremni za preuzimanje:";
                string          naMejl       = trebovanjeNabavkeContext.Trebovanjes.FirstOrDefault(t =>
                                                                                                   t.TrebovanjeId == viewModel.TrebovanjeId).vRadniks.Email;
                string sadrzajEmaila = "<p>Poštovani, <br/><br/>" +
                                       " <p>Sljedeći artikli koje ste <a href=" + email.adresaHosta + "Trebovanje/DetaljiTrebovanja?trebovanje=" + viewModel.TrebovanjeId + ">trebovali </a>" +
                                       " su spremni za preuzimanje: </p> <ul>";
                foreach (var artikal in izmjenjeniArtikli)
                {
                    sadrzajEmaila += "<li>" + artikal + "</li>";
                }
                sadrzajEmaila += "</ul><br>  <span> Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke </span> ";
                email.PosaljiMejl(naslovEmaila, naMejl, sadrzajEmaila);
                //toster za uspjesno poslan mejl kad je artikl spreman
            }
            if (TrebovanjePreuzeto(viewModel))
            {
                var trebovanje = trebovanjeNabavkeContext.Trebovanjes.FirstOrDefault(t => viewModel.TrebovanjeId == t.TrebovanjeId);
                trebovanje.StatusTrebovanjaId       = (int)Enum.Status.Preuzeto;
                trebovanje.DatumZaduzenjaTrebovanja = DateTime.Now;
                trebovanjeNabavkeContext.SaveChanges();
                EmailController email         = new EmailController();
                string          naslovEmaila  = "Potvrda o preuzimanju trebovanja";
                string          naMejl        = trebovanje.vRadniks.Email;
                string          sadrzajEmaila = "<p>Poštovani, <br/><br/> Vaše <a href=" + email.adresaHosta + "Trebovanje/DetaljiTrebovanja?trebovanje=" +
                                                viewModel.TrebovanjeId + ">trebovanje </a> je preuzeto. </p><br/><br/> ";
                sadrzajEmaila += "<span>Srdačan pozdrav, <br/><br/>Lanaco trebovanje i nabavke</span>";

                email.PosaljiMejl(naslovEmaila, naMejl, sadrzajEmaila);
                return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
            }

            //ako je izmjenjeniArtikli.Count > 0 posalji mail
            return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
        }