Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public static void SacuvajTipNaloga(TipNaloga f)
        {
            ISession s = SesijeProvajder.Sesija;

            s.Save(f);
            s.Flush();
        }
Ejemplo n.º 3
0
        public static TipNaloga VratiTipNaloga(int id)
        {
            ISession  s = SesijeProvajder.Sesija;
            TipNaloga t = s.Get <TipNaloga>(id);

            return(t);
        }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
 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")
     });
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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));
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 15
0
        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"));
            }
        }
Ejemplo n.º 16
0
        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());
            }
        }
Ejemplo n.º 17
0
 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");
 }