Esempio n. 1
0
        public ActionResult OdobravanjeNabavke(int nabavka)
        {
            var logovaniRadnik = trebovanjeNabavkeContext.vRadniks.FirstOrDefault(k => k.KorisnickoIme == User.Identity.Name);
            var nabavkaDB      = trebovanjeNabavkeContext.Nabavkes.FirstOrDefault(t => t.NabavkaId == nabavka);

            List <Nabavke> DbNabavke = trebovanjeNabavkeContext.Nabavkes.Where(t => t.NabavkaId == nabavka &&
                                                                               (logovaniRadnik.RadnikSifra == nabavkaDB.vRadnik.Nivo1OdobravanjaSifra ||
                                                                                logovaniRadnik.RadnikSifra == nabavkaDB.vRadnik.Nivo2OdobravanjaSifra ||
                                                                                logovaniRadnik.RadnikSifra == nabavkaDB.vRadnik.Nivo3OdobravanjaSifra)
                                                                               ).ToList();

            NabavkaViewModel nabavkaVM = PopunjavanjeAtributa(DbNabavke).FirstOrDefault();

            if ((nabavkaDB.StatusNabavkeId == (int)Enum.Status.Na_čekanju && logovaniRadnik.RadnikSifra == nabavkaDB.vRadnik.Nivo1OdobravanjaSifra) ||
                (nabavkaDB.StatusNabavkeId == (int)Enum.Status.U_procesu_odobravanja && logovaniRadnik.RadnikSifra == nabavkaDB.vRadnik.Nivo2OdobravanjaSifra) ||
                (nabavkaDB.StatusNabavkeId == (int)Enum.Status.U_procesu_odobravanja_viseg_nivoa && logovaniRadnik.RadnikSifra == nabavkaDB.vRadnik.Nivo3OdobravanjaSifra))
            {
                return(View(nabavkaVM));
            }

            else if (nabavkaVM == null)
            {
                ViewBag.Greska = "Link nije dostupan!";
                return(View());
            }
            else
            {
                ViewBag.Greska = "Link nije aktivan!";
                return(View());
            }
        }
        public ActionResult IzmeniDokument(int id)
        {
            var vm = new NabavkaViewModel();

            vm.UcitajDokument(id);
            return(View("Nabavka", vm));
        }
        public ActionResult Aktiviraj(int id)
        {
            var vm = new NabavkaViewModel();

            vm.AktivirajDokument(id);
            return(RedirectToAction("Index"));
        }
        public ActionResult DetaljiNabavke(int nabavka)
        {
            var DbNabavka            = trebovanjeNabavkeContext.Nabavkes.Where(t => t.NabavkaId == nabavka).ToList();
            NabavkaViewModel zahtjev = PopunjvanjeAtributaNabavke(DbNabavka).FirstOrDefault();

            return(View(zahtjev));
        }
        public ActionResult PrikazNabavke(int nabavka)
        {
            List <Nabavke> DbNabavke = trebovanjeNabavkeContext.Nabavkes.Where(t => t.NabavkaId == nabavka).ToList();
            OdobravanjeNabavkeController odobravanjeNabavke = new OdobravanjeNabavkeController();
            NabavkaViewModel             VmNabavke          = odobravanjeNabavke.PopunjavanjeAtributa(DbNabavke).FirstOrDefault();

            return(View(VmNabavke));
        }
        public ActionResult NarucivanjeNabavke(int nabavka)
        {
            var DbNabavka = trebovanjeNabavkeContext.Nabavkes.Where(o => o.NabavkaId == nabavka).ToList();

            NabavkaViewModel novaNabavka = PopunjvanjeAtributaNabavke(DbNabavka).FirstOrDefault();

            return(View(novaNabavka));
        }
        public ActionResult NovaNabavka()
        {
            var vm = new NabavkaViewModel
            {
                Dokument        = new Dokument(),
                StavkaDokumenta = new StavkaDokumenta()
                {
                },
            };

            return(View("Nabavka", vm));
        }
        public PartialViewResult VratiStavkeDokumenta(int?idDokumenta)
        {
            var vm = new NabavkaViewModel
            {
                Dokument = new Dokument()
            };

            if (idDokumenta.HasValue && idDokumenta.Value > 0)
            {
                vm.Dokument = fRepository.VratiDokumentSaStavkama(idDokumenta.Value);
            }
            return(PartialView("_StavkeGrid", vm));
        }
        //public PartialViewResult AktivnaNabavkaPartial(string jsonNabavka) // za modal na click na red u datatable-u
        //{
        //    NabavkaViewModel viewModel = JsonConvert.DeserializeObject<NabavkaViewModel>(jsonNabavka);

        //    return PartialView("_AktivnaNabavkaSkladiste", viewModel);
        //}

        public PartialViewResult AktivnaNabavkaPartial(string serijskiBroj)
        {
            var n = trebovanjeNabavkeContext.Nabavkes.FirstOrDefault(t => t.SerijskiBroj == serijskiBroj);

            NabavkaViewModel nabavkaViewModel = new NabavkaViewModel
            {
                NabavkaId                = n.NabavkaId,
                SerijskiBroj             = n.SerijskiBroj,
                NapomenaReferentaNabavke = n.NapomenaReferentaNabavke == null ? "" : n.NapomenaReferentaNabavke,
                NapomenaSefa             = n.NapomenaSefa == null ? "" : n.NapomenaSefa,
                DatumPodnosenjaZahtjeva  = n.DatumPodnosenjaZahtjeva,
                DatumPreuzimanja         = n.DatumPreuzimanja,
                SifraRadnika             = n.SifraRadnika,
                Obrazlozenja             = n.Obrazlozenja == null ? "" : n.Obrazlozenja,
                Odgovoran                = n.Odgovoran,
                SifraReferentaNabavke    = n.SifraReferentaNabavke,
                StatusNabavkeId          = n.StatusNabavkeId,
                NazivStatusa             = n.Status.StatusNaziv,
                TipId              = n.TipId,
                VezanaNabavkaId    = n.VezanaNabavkaId,
                ImeIPrezimeRadnika = n.vRadnik.Ime + " " + n.vRadnik.Prezime,
                TipNabavke         = n.TipNabavke.Naziv,

                //Kupljenje dokumenata iz baze za traženu nabavku
                Dokumenti = n.Dokuments.Select(d => new DokumentViewModel(d.Dokument1, d.Naziv, d.DokumentId)).ToList(),
                //Kupljenje stavki iz baze za traženu nabavku
                Stavke = n.NabavkaVeznas.Select(s => new NabavkaVeznaViewModel
                {
                    NabavkaVeznaId = s.NabavkaVeznaId,
                    Kolicina       = s.Kolicina,
                    Cijena         = s.Cijena,
                    Dobavljac      = s.Dobavljac,
                    Spremno        = s.StatusId == (int)Enum.Status.Spremno_za_preuzimanje || s.StatusId == (int)Enum.Status.Preuzeto ? true : false,
                    Preuzeto       = s.StatusId == (int)Enum.Status.Preuzeto ? true : false,
                    Opis           = s.Opis
                }).ToList()
            };

            return(PartialView("_AktivnaNabavkaSkladiste", nabavkaViewModel));
        }
 //Provjera da li su svi artikli isporuceni
 public bool NabavkaPreuzeta(NabavkaViewModel viewModel)
 {
     return(viewModel.Stavke.All(a => a.Preuzeto));
 }
        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 ActionResult NovaNabavkaZaOsnovnaSredstva(NabavkaViewModel viewModel)
        {
            //if (!ModelState.IsValid)
            //    return View(viewModel);

            string serijskiBroj = NoviSerijskiBroj();

            List <DokumentViewModel> dokumenti = new List <DokumentViewModel>();

            if (viewModel.Files != null)
            {
                foreach (HttpPostedFileBase file in viewModel.Files)
                {
                    //Checking file is available to save.
                    if (file != null)
                    {
                        byte[] uploadedFile = new byte[file.ContentLength];
                        file.InputStream.Read(uploadedFile, 0, uploadedFile.Length);

                        dokumenti.Add(new DokumentViewModel(uploadedFile, file.FileName));
                    }
                }
            }

            var logovaniRadnik = trebovanjeNabavkeContext.vRadniks.FirstOrDefault(r => r.KorisnickoIme == User.Identity.Name);

            Nabavke novaNabavka = new Nabavke
            {
                SifraRadnika          = logovaniRadnik.RadnikSifra,
                SifraReferentaNabavke = viewModel.SifraReferentaNabavke,
                TipId                   = viewModel.TipId,
                StatusNabavkeId         = (int)Status.Na_čekanju,
                SerijskiBroj            = serijskiBroj,
                DatumPodnosenjaZahtjeva = DateTime.Now,
                Obrazlozenja            = viewModel.Obrazlozenja,
                Odgovoran               = viewModel.Odgovoran,
                VezanaNabavkaId         = viewModel.VezanaNabavkaId,
                Dokuments               = dokumenti.Select(d => new Dokument
                {
                    Naziv     = d.FileName,
                    Dokument1 = d.fileBytes
                }).ToList(),
                NabavkaVeznas = viewModel.Stavke.Select(s => new NabavkaVezna
                {
                    Opis      = s.Opis,
                    Kolicina  = s.Kolicina,
                    ArtiklId  = s.ArtiklId,
                    StatusId  = (int)Status.Na_čekanju,
                    Cijena    = s.Cijena,
                    Dobavljac = s.Dobavljac
                }).ToList(),
                DatumiOdobravanjaNabavke = new DatumiOdobravanjaNabavke()
            };//nova nabavka

            trebovanjeNabavkeContext.Nabavkes.Add(novaNabavka);
            trebovanjeNabavkeContext.SaveChanges();

            var narucilac = trebovanjeNabavkeContext.vRadniks.FirstOrDefault(x => x.KorisnickoIme == User.Identity.Name);
            OdobravanjeNabavkeController email = new OdobravanjeNabavkeController();

            if (narucilac.SektorSifra.ToLower() == "m" && viewModel.TipId == 2)
            {
                if (email.PosaljiMejlMarketinguZaNovuNabavku(novaNabavka.SerijskiBroj))
                {
                    novaNabavka.StatusNabavkeId = (int)Status.U_procesu_nabavke;
                    trebovanjeNabavkeContext.SaveChanges();
                    return(Json(new { success = true }));
                }
                else
                {
                    return(Json(new { success = false }));
                }
            }
            else
            {
                //Poziv metode koja salje meil marketingu sa linkom do nove nabavke
                string sadrzajMejla = "<p>Poštovani, <br/><br/>  Na sistemu LANACO trebovanje i nabavke je novi zahtjev za <a href=" +
                                      adresaHosta + "OdobravanjeNabavke/OdobravanjeNabavke?nabavka=" + novaNabavka.NabavkaId + ">odobravanje nabavke</a>.<br/>" +
                                      "Podnosilac zahtjeva: " + narucilac.Ime + " " + narucilac.Prezime + "<br/>" +
                                      "Broj zahtjeva: " + novaNabavka.SerijskiBroj;

                sadrzajMejla += "<br/><br/><span>Srdačan pozdrav,<br/><br/> Lanaco trebovanje i nabavke</span>";


                //mejl za novu nabavku ce poslati nadredjenom ako ga ima, ako ga nema poslat ce mejl direktno Timu prodaje i nabavki da imaju novu narudzbu
                //false vraca samo u slucaju da mejl nije poslat
                if (email.SlanjeMejlaZaNovuNabavku("Zahtjev za odobravanje nabavke", sadrzajMejla, narucilac.KorisnickoIme, serijskiBroj))
                {
                    return(Json(new { success = true }));
                }
                else
                {
                    return(Json(new { success = false }));
                }
            }
        }