public ActionResult Narucivanje(int trebovanje)
 {
     try
     {
         Trebovanje DbTrebovanje = trebovanjeNabavkeContext.Trebovanjes.First(x => x.TrebovanjeId == trebovanje);
         // &&(x.StatusTrebovanjaId==3 || x.vRadniks.NazivSektora=="M"));// slucaj ako neko ukuca tacan id trebovanja u URL a trebovanje je vec naruceno ili nije ni trebalo biti naruceno
         DbTrebovanje.StatusTrebovanjaId = (int)Enum.Status.Naruceno; //status trebovanja "naruceno"
         EmailController email = new EmailController();
         email.PosaljiMejlSkladistaruZaTrebvanje(DbTrebovanje.SifraRadnika, trebovanje);
         foreach (var artikl in DbTrebovanje.TrebovanjeVeznas)
         {
             artikl.RezervisaniArtikli.TrenutnaKolicina += artikl.KolicinaKojaNedostaje;
             artikl.KolicinaKojaNedostaje = 0;
         }
         trebovanjeNabavkeContext.SaveChanges();
         return(RedirectToAction("PrikazSvihAktivnihTrebovanja"));
     }
     catch
     {
         return(View("Error"));
     }
 }
        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));
        }
Esempio n. 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));
        }