Пример #1
0
        public async Task DodajDostavoAsync(IzberiterminDostaveModel podatki, Uporabnik uporabnikPrijave)
        {
            var uporabnikIzbire = await _userManager.FindByIdAsync(podatki.IzbranUporabnikId);

            var roles = await _userManager.GetRolesAsync(uporabnikPrijave);

            //Dodajanje dostave
            var dostava = new Dostava()
            {
                PodjetjeId       = uporabnikPrijave.PodjetjeId,
                UporabnikId      = uporabnikPrijave.Id,
                Sifra            = podatki.SifraDostave,
                TockaSkladiscaId = podatki.IzbranaTockaId.Value,
                Termin           = podatki.IzbranDatum.Value.AddHours(podatki.IzbranaUra.Value)
            };

            if (roles.Contains("Admin"))
            {
                //Admin lahko ureja uporabnika
                dostava.PodjetjeId  = uporabnikIzbire.PodjetjeId;
                dostava.UporabnikId = uporabnikIzbire.Id;
            }

            _krkaRepo.AddDostava(dostava);
            _krkaRepo.SaveChanges();
        }
        public async Task <string> ValidateVnosTermina(IzberiterminDostaveModel podatki, Uporabnik uporabnikPrijave)
        {
            if (!podatki.IzbranDatum.HasValue)
            {
                return("Izberite termin.");
            }

            var uporabnikIzbire = await _userManager.FindByIdAsync(podatki.IzbranUporabnikId);

            var roles = await _userManager.GetRolesAsync(uporabnikPrijave);

            //Če si admin moraš izbrat uporabnika
            if (roles.Contains("Admin") && uporabnikIzbire == null)
            {
                return("Ni izbran uporabnik.");
            }

            return(null);
        }
Пример #3
0
        public async Task UrediDostavoAsync(IzberiterminDostaveModel podatki, Uporabnik uporabnikPrijave)
        {
            var dostavaDb       = _krkaRepo.GetDostava(podatki.SifraDostave);
            var uporabnikIzbire = await _userManager.FindByIdAsync(podatki.IzbranUporabnikId);

            var roles = await _userManager.GetRolesAsync(uporabnikPrijave);

            if (roles.Contains("Admin"))
            {
                //Lahko ureja uporabnika
                dostavaDb.UporabnikId = uporabnikIzbire.Id;
                dostavaDb.PodjetjeId  = uporabnikIzbire.PodjetjeId;
            }

            dostavaDb.TockaSkladiscaId = podatki.IzbranaTockaId.Value;
            dostavaDb.Termin           = podatki.IzbranDatum.Value.AddHours(podatki.IzbranaUra.Value);

            _krkaRepo.UpdateDostava(dostavaDb);
            _krkaRepo.SaveChanges();
        }
Пример #4
0
        public async Task <IActionResult> IzberiTermin(string sifraDostave)
        {
            var model = new IzberiterminDostaveModel()
            {
                SifraDostave   = sifraDostave,
                SeznamTerminov = new List <IzbiraTerminaModel>()
            };

            //Validiraj šifro dostave
            var modelError = _modelValidator.ValidateSifraDostave(sifraDostave);

            if (!string.IsNullOrEmpty(modelError))
            {
                ModelState.AddModelError("SifraDostave", modelError);
                return(View(model));
            }

            var dostava = _dostavaDataManager.GetDostava(sifraDostave);

            if (dostava != null)
            {
                var dostavaEditErrors = await _dostavaDataManager.CheckEditDostavaAsync(dostava, await _userManager.GetUserAsync(User));

                if (!string.IsNullOrEmpty(dostavaEditErrors))
                {
                    ModelState.AddModelError("SifraDostave", dostavaEditErrors);
                    return(View(model));
                }

                model.IzbranDatum       = dostava.Termin.Date;
                model.IzbranaUra        = dostava.Termin.Hour;
                model.IzbranaTockaId    = dostava.TockaSkladiscaId;
                model.IzbranaTockaSifra = dostava.TockaSkladisca.Sifra;
                model.IzbranUporabnikId = dostava.UporabnikId;
            }

            var skl = _dostavaDataManager.GetSkladisceFromSifraDostave(sifraDostave);

            if (skl == null)
            {
                ModelState.AddModelError("SifraDostave", "Skladišče ne obstaja");
                return(View(model));
            }

            model.SkladisceSifra = skl.Sifra;

            var zacetniDatum = DateTime.Now.Date;
            var stDni        = 7;

            var dostave = _dostavaDataManager.GetAllZasedeniTermini(zacetniDatum, zacetniDatum.AddDays(stDni), skl.Id);
            var seznam  = new List <IzbiraTerminaModel>();

            for (int dan = 0; dan < stDni; dan++)
            {
                var danObj = new IzbiraTerminaModel()
                {
                    Datum = zacetniDatum.AddDays(dan),
                    SeznamTockSkladisca = new List <TockaSkladiscaTerminaModel>()
                };

                foreach (var tocka in skl.TockeSkladisca.OrderBy(t => t.Sifra))
                {
                    var tockaObj = new TockaSkladiscaTerminaModel()
                    {
                        SifraTockeSkladisca = tocka.Sifra,
                        TockaSkladiscaId    = tocka.Id,
                        SeznamUreTermina    = new List <UraTerminaModel>()
                    };

                    for (int ura = 0; ura < 24; ura++)
                    {
                        var r      = new Random().Next(0, 100);
                        var uraObj = new UraTerminaModel()
                        {
                            Ura      = ura,
                            JeProst  = !dostave.Any(t => t.Termin.Date == danObj.Datum && t.Termin.Hour == ura && t.TockaSkladiscaId == tocka.Id),
                            JeIzbran = false
                        };

                        tockaObj.SeznamUreTermina.Add(uraObj);
                    }

                    danObj.SeznamTockSkladisca.Add(tockaObj);
                }

                seznam.Add(danObj);
            }

            model.SeznamTerminov = seznam;
            var users = await _dostavaDataManager.GetAllUporabnikiForVnosDostaveAsync();

            model.Uporabniki = users.Select(t => new SelectListItem()
            {
                Value = t.Id.ToString(),
                Text  = $"{t.UserName} ({t.Podjetje?.Naziv ?? "Brez"})"
            });

            return(View(model));
        }
Пример #5
0
        public async Task <IActionResult> IzberiTerminPost([FromRoute] string sifraDostave, [FromForm] IzberiterminDostaveModel podatki)
        {
            //Preveri šifro dostave
            var error = _modelValidator.ValidateSifraDostave(sifraDostave);

            if (!string.IsNullOrEmpty(error))
            {
                return(RedirectToAction("IzberiTermin", new { sifraDostave }));
            }

            var uporabnikPrijave = await _userManager.GetUserAsync(User);

            error = await _modelValidator.ValidateVnosTermina(podatki, uporabnikPrijave);

            if (!string.IsNullOrEmpty(error))
            {
                ModelState.AddModelError("SifraDostave", error);
                return(RedirectToAction("IzberiTermin", new { sifraDostave }));
            }

            var dostavaDb = _dostavaDataManager.GetDostava(sifraDostave);

            if (dostavaDb != null)
            {
                var dostavaEditErrors = await _dostavaDataManager.CheckEditDostavaAsync(dostavaDb, uporabnikPrijave);

                if (!string.IsNullOrEmpty(dostavaEditErrors))
                {
                    ModelState.AddModelError("SifraDostave", dostavaEditErrors);
                    return(RedirectToAction("IzberiTermin", new { sifraDostave }));
                }

                await _dostavaDataManager.UrediDostavoAsync(podatki, uporabnikPrijave);
            }
            else
            {
                await _dostavaDataManager.DodajDostavoAsync(podatki, uporabnikPrijave);
            }

            return(RedirectToAction("Porocilo", new { sifraDostave }));
        }