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