public static TipNaloga TipNalogaFromString(string tip) { TipNaloga ret = TipNaloga.Greska; TipNaloga[] sviTipovi = new TipNaloga[] { TipNaloga.Greska, TipNaloga.Dispecer, TipNaloga.Musterija, TipNaloga.Vozac }; if (tip == null || tip.Trim() == "") { return(TipNaloga.Greska); } foreach (TipNaloga tmpTip in sviTipovi) { if (tip.Trim().ToLower() == tmpTip.ToString().ToLower()) { ret = tmpTip; break; } } return(ret); }
public static void SacuvajTipNaloga(TipNaloga f) { ISession s = SesijeProvajder.Sesija; s.Save(f); s.Flush(); }
public static TipNaloga VratiTipNaloga(int id) { ISession s = SesijeProvajder.Sesija; TipNaloga t = s.Get <TipNaloga>(id); return(t); }
public static bool IsAllowedToAccess(int accId, TipNaloga tipNaloga, TipNaloga potrebanTip) { if (potvrdjeni.ContainsKey(accId) && potvrdjeni[accId].Equals(tipNaloga) && ((potvrdjeni[accId] & potrebanTip) != 0)) { return(true); } return(false); }
public OtvoriNalogCommandValidator() { RuleFor(x => x.DatumNaloga).GreaterThan(DateTime.MinValue).WithMessage("Datum naloga nije validan"); RuleFor(x => x.IdTip).Must(x => TipNaloga.Get(x) != null).WithMessage("Nepoznat tip naloga"); RuleFor(x => x.Stavke).NotEmpty().WithMessage("Stavke moraju biti definisane"); RuleForEach(x => x.Stavke).SetValidator(new InlineValidator <StavkaDTO>() { v => v.RuleFor(x => x.IdKonto).GreaterThan(0).WithMessage("IdKonto nije validan"), v => v.RuleFor(x => x).Must(x => (x.Duguje != 0 && x.Potrazuje == 0) || (x.Duguje == 0 || x.Potrazuje != 0)) .WithMessage("Dugovna ili potražna strana stavke mora biti definisana") }); }
public async Task <ZaglavljeNaloga> GetZaglavljeAsync(TipNaloga tip, DateTime datumNaloga) { if (tip == null) { throw new ArgumentNullException(nameof(tip)); } var zaglavlja = await eventStore.GetProjectionAsync <ZaglavljeNaloga>(Projections.ZaglavljaNaloga); var nalog = zaglavlja.Where(x => x.DatumNaloga == datumNaloga && x.IdTip == tip.Id).SingleOrDefault(); return(nalog); }
public static bool KorisnikImaPrivilegiju(string idSesije, UserPrivilegies privilegija) { return(true); ISession s = SesijeProvajder.Sesija; LoginSesija trenutnaSesija = s.Query <LoginSesija>().First(k => k.IdSesije == idSesije); Korisnik korisnik = trenutnaSesija.KorisnikSesije; TipNaloga tipNaloga = korisnik.TipNaloga; Privilegija priv = s.Load <Privilegija>((int)privilegija); if (tipNaloga.Privilegije.Contains(priv)) { return(true); } return(false); }
public async Task <bool> Handle(OtvoriNalogCommand cmd, CancellationToken cancellationToken) { var tip = TipNaloga.Get(cmd.IdTip); var idPostojeceg = await nalogRepo.GetPostojeciAsync(tip, cmd.DatumNaloga); if (idPostojeceg != null) { throw new KnjizenjeException("Nalog sa istim zaglavljem već postoji"); } var stavke = cmd.Stavke.Select(x => new FinStavka(x.IdKonto, x.Duguje, x.Potrazuje, x.Opis)); var nalog = new FinNalog(tip, cmd.DatumNaloga, cmd.Opis, stavke); await nalogRepo.SaveAsync(nalog, cmd.CommandId, cmd.Version, cmd.UserId); return(true); }
public async Task <bool> Handle(IzmeniZaglavljeNalogaCommand cmd, CancellationToken cancellationToken) { var nalog = await nalogRepo.GetAsync(new FinNalogId(cmd.IdNaloga)); if (nalog == null) { throw new NalogNePostojiException(cmd.IdNaloga); } var tip = TipNaloga.Get(cmd.IdTip); await nalogSvc.IzmeniZaglavljeAsync(nalog, tip, cmd.DatumNaloga, cmd.Opis); await nalogRepo.SaveAsync(nalog, cmd.CommandId, cmd.Version, cmd.UserId); return(true); }
public async Task VecPostoji_Greska() { var cmd = new OtvoriNalogCommand(Guid.NewGuid(), "1", TipNaloga.UlazneFakture.Id, new DateTime(2018, 10, 20), "opis", new List <StavkaDTO>()); var nalogIzBazeId = new Mock <FinNalogId>(); nalogIzBazeId.CallBase = true; nalogIzBazeId.SetupGet(x => x.Id).Returns(Guid.NewGuid()); var fakeNalogRepo = new Mock <IFinNalogRepository>(); fakeNalogRepo.Setup(x => x.GetPostojeciAsync(TipNaloga.Get(cmd.IdTip), cmd.DatumNaloga)).ReturnsAsync(nalogIzBazeId.Object); var fakeLogger = new Mock <ILogger <OtvoriNalogCommandHandler> >(); var handler = new OtvoriNalogCommandHandler(fakeNalogRepo.Object, fakeLogger.Object); Func <Task> handle = async() => await handler.Handle(cmd, default); await Assert.ThrowsAsync <KnjizenjeException>(handle); }
public async Task IzmeniZaglavljeAsync(FinNalog nalog, TipNaloga tip, DateTime datumNaloga, string opis) { if (nalog == null) { throw new ArgumentNullException(nameof(nalog)); } if (tip == null) { throw new ArgumentNullException(nameof(tip)); } var idPostojeceg = await nalogRepo.GetPostojeciAsync(tip, datumNaloga); if (idPostojeceg != null && idPostojeceg != nalog.Id) { throw new KnjizenjeException("Nalog sa istim zaglavljem već postoji"); } nalog.IzmeniZaglavlje(tip, datumNaloga, opis); }
public async Task IzmeniZaglavlje_Korektno() { var nalogIzBaze = FinNalogHelper.NalogFromDb(callBase: false); nalogIzBaze.SetupGet(x => x.Tip).Returns(TipNaloga.Izvodi); nalogIzBaze.SetupGet(x => x.DatumNaloga).Returns(new DateTime(2018, 10, 20)); nalogIzBaze.SetupGet(x => x.Opis).Returns("opis"); var cmd = new IzmeniZaglavljeNalogaCommand(Guid.NewGuid(), 0, "1", nalogIzBaze.Object.Id.Id, TipNaloga.UlazneFakture.Id, new DateTime(2018, 10, 21), "opis new"); var fakeNalogRepo = new Mock <IFinNalogRepository>(); fakeNalogRepo.Setup(x => x.GetAsync(nalogIzBaze.Object.Id)).ReturnsAsync(nalogIzBaze.Object); var fakeNalogSvc = new Mock <IFinNalogService>(); var fakeLogger = new Mock <ILogger <IzmeniZaglavljeNalogaCommandHandler> >(); var handler = new IzmeniZaglavljeNalogaCommandHandler(fakeNalogRepo.Object, fakeNalogSvc.Object, fakeLogger.Object); await handler.Handle(cmd, default); fakeNalogSvc.Verify(x => x.IzmeniZaglavljeAsync(nalogIzBaze.Object, TipNaloga.Get(cmd.IdTip), cmd.DatumNaloga, cmd.Opis)); fakeNalogRepo.Verify(x => x.SaveAsync(nalogIzBaze.Object, cmd.CommandId, cmd.Version, cmd.UserId)); }
public static bool IsAllowedToAccess(string b64token, TipNaloga potrebanTip) { if (b64token == null) { return(false); } string[] podaci = Korisnik.GetTokenData(b64token); if (podaci.Length == 0) { return(false); } try { int accId = int.Parse(podaci[1]); TipNaloga tp = Helper.TipNalogaFromString(podaci[2]); return(IsAllowedToAccess(accId, tp, potrebanTip)); } catch { return(false); } }
public async Task <bool> Handle(IzmeniNalogCommand cmd, CancellationToken cancellationToken) { var nalog = await nalogRepo.GetAsync(new FinNalogId(cmd.IdNaloga)); if (nalog == null) { throw new NalogNePostojiException(cmd.IdNaloga); } var tip = TipNaloga.Get(cmd.IdTip); await nalogSvc.IzmeniZaglavljeAsync(nalog, tip, cmd.DatumNaloga, cmd.Opis); var zaBrisanje = nalog.Stavke.Where(x => !cmd.Stavke.Select(y => y.IdStavke).Contains(x.Id)).ToList(); foreach (var item in cmd.Stavke) { if (!nalog.Stavke.Any(x => x.Id == item.IdStavke)) { nalog.ProknjiziStavku(new FinStavka(item.IdKonto, item.Duguje, item.Potrazuje, item.Opis)); } if (item.Stornirana) { var s = nalog.Stavke.SingleOrDefault(x => x.Id == item.IdStavke); if (s != null) { nalog.StornirajStavku(s); } } } foreach (var item in zaBrisanje) { nalog.UkloniStavku(item); } await nalogRepo.SaveAsync(nalog, cmd.CommandId, cmd.Version, cmd.UserId); return(true); }
public JsonResult Post(string username, string password, string ime, string prezime, string pol, string email, string telefon, string jmbg, string tipNaloga_str, string token) { if (!Validator.StringValidator(username, null, null, false, 4, 20)) { return(Json("ERROR_USERNAME_NOT_CORRECT")); } if (!Validator.StringValidator(password, null, null, false, 4, 35)) { return(Json("ERROR_PASSWORD_NOT_CORRECT")); } if (!Validator.StringValidator(ime, null, null, false, 2, 25)) { return(Json("ERROR_IME_NOT_CORRECT")); } if (!Validator.StringValidator(prezime, null, null, false, 2, 25)) { return(Json("ERROR_PREZIME_NOT_CORRECT")); } if (!Validator.StringValidator(pol, null, null, false, 1, 1)) { return(Json("ERROR_POL_NOT_CORRECT")); } if (!Validator.StringValidator(email, new string[] { "@", "." }, null, false, 5, 50)) { return(Json("ERROR_EMAIL_NOT_CORRECT")); } telefon = telefon.Replace("+", ""); telefon = telefon.Replace("-", ""); telefon = telefon.Replace("/", ""); telefon = telefon.Replace(" ", ""); telefon = telefon.Replace(" ", ""); if (!Validator.StringValidator(telefon, null, null, true, 5, 13)) { return(Json("ERROR_PHONE_NOT_CORRECT")); } if (!Validator.StringValidator(jmbg, null, null, true, 13, 13)) { return(Json("ERROR_JMBG_NOT_CORRECT")); } if (!Korisnik.UsernameIsFree(username)) { return(Json("ERROR_USERNAME_ALREADY_IN_USE")); } TipNaloga tipNaloga = Helper.TipNalogaFromString(tipNaloga_str); switch (tipNaloga) { case TipNaloga.Musterija: Musterija m = new Musterija() { Username = username, Password = password, Ime = ime, Prezime = prezime, Email = email, JMBG = jmbg, Telefon = telefon, Pol = (pol == "M") ? PolOsobe.Musko : PolOsobe.Zensko }; ms.Musterije.Add(m); return(Json("OK")); case TipNaloga.Dispecer: if (Authorize.IsAllowedToAccess(token, TipNaloga.Dispecer)) { Dispecer d = new Dispecer() { Username = username, Password = password, Ime = ime, Prezime = prezime, Email = email, JMBG = jmbg, Telefon = telefon, Pol = (pol == "M") ? PolOsobe.Musko : PolOsobe.Zensko }; ms.Dispeceri.Add(d); return(Json("OK")); } else { return(Json("ERROR_NOT_ALLOWED")); } case TipNaloga.Vozac: if (Authorize.IsAllowedToAccess(token, TipNaloga.Dispecer)) { Vozac v = new Vozac() { Username = username, Password = password, Ime = ime, Prezime = prezime, Email = email, JMBG = jmbg, Telefon = telefon, Pol = (pol == "M") ? PolOsobe.Musko : PolOsobe.Zensko }; ms.Vozaci.Add(v); return(Json("OK")); } else { return(Json("ERROR_NOT_ALLOWED")); } case TipNaloga.Greska: return(Json("ERROR_ACC_TYPE_NOT_VALID")); default: return(Json("ERROR_ACC_TYPE_NOT_VALID")); } }
public JsonResult Post(string token, string pocetnaLokacijaJSON, string tipAutomobila, int musterijaId = -1, int dispecerId = -1, int vozacId = -1) { if (Authorize.IsAllowedToAccess(token, TipNaloga.Dispecer | TipNaloga.Musterija)) { if (pocetnaLokacijaJSON == null || pocetnaLokacijaJSON.Trim() == "") { return(Json("ERROR_LOCATIONS_ARE_NULL_OR_EMPTY")); } Lokacija pocetak; Lokacija kraj = null; try { pocetak = JsonConvert.DeserializeObject <Lokacija>(pocetnaLokacijaJSON); } catch { return(Json("ERROR_JSON_STRING_LOCATION_FORMAT_NOT_CORRECT")); } if (musterijaId > 0 && MainStorage.Instanca.NadjiKorisnikaPoId(musterijaId) == null) { return(Json("ERROR_CUSTOMER_ID_NOT_VALID")); } if (vozacId > 0 && MainStorage.Instanca.NadjiKorisnikaPoId(vozacId) == null) { return(Json("ERROR_DRIVER_ID_NOT_VALID")); } if (dispecerId > 0 && MainStorage.Instanca.NadjiKorisnikaPoId(dispecerId) == null) { return(Json("ERROR_DISPATCHER_ID_NOT_VALID")); } var statusVoznje = ProjekatWEB.StatusVoznje.Kreirana; TipNaloga tipNaloga = Korisnik.GetTypeFromToken(token); if (tipNaloga == TipNaloga.Dispecer) { statusVoznje = StatusVoznje.Formirana; } TipAutomobila tipAuta = TipAutomobila.PutnickiAuto; try { tipAuta = Helper.TipAutomobilaFromString(tipAutomobila); } catch { } Vozac tmpVozac = MainStorage.Instanca.Vozaci.FirstOrDefault(x => x.ID == vozacId); if (tmpVozac == null && vozacId != -1) { return(Json("ERROR_DRIVER_DOES_NOT_EXIST")); } Musterija tmpMust = MainStorage.Instanca.Musterije.FirstOrDefault(x => x.ID == musterijaId); if (tmpMust == null && musterijaId != -1) { return(Json("ERROR_CUSTOMER_DOES_NOT_EXIST")); } Dispecer tmpDisp = MainStorage.Instanca.Dispeceri.FirstOrDefault(x => x.ID == dispecerId); if (tmpDisp == null && dispecerId != -1) { return(Json("ERROR_DISPATCHER_DOES_NOT_EXIST")); } Voznja v = new Voznja(postaviDatum: true) { KomentarID = new List <int>(), VozacID = vozacId, MusterijaID = musterijaId, DispecerID = dispecerId, Status = statusVoznje, PocetnaLokacija = pocetak, Odrediste = kraj, TipAutomobila = tipAuta, Iznos = (kraj != null) ? Helper.IzracunajCenuVoznje(pocetak, kraj) : -1 }; MainStorage.Instanca.Voznje.Add(v); return(Json("OK_" + v.ID.ToString())); } else { return(Helper.ForbidenAccessJson()); } }
public IzmeniNalogCommandValidator() { RuleFor(x => x.IdNaloga).NotEqual(Guid.Empty).WithMessage("IdNaloga je obavezan podatak"); RuleFor(x => x.DatumNaloga).GreaterThan(DateTime.MinValue).WithMessage("Datum naloga nije validan"); RuleFor(x => x.IdTip).Must(x => TipNaloga.Get(x) != null).WithMessage("Nepoznat tip naloga"); }