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"));
     }
 }
Example #2
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 }));
            }
        }