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)); }
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)); }