public static KorisnikStanjeDto PredlogUplate(int idKorisnika)
        {
            ISession          s       = SesijeProvajder.Sesija;
            KorisnikStanjeDto predlog = new KorisnikStanjeDto();

            Korisnik kor = ProvajderPodatakaKorisnika.VratiKorisnika(idKorisnika);

            predlog.BrojDorucka = (kor.Obroci.Count(k => k.Tip.IdTipObroka == 1 && k.DatumUplacivanja.Month <= DateTime.Now.Month && k.DatumUplacivanja.Month >= DateTime.Now.AddMonths(-3).Month) / 3);
            predlog.BrojRuckova = (kor.Obroci.Count(k => k.Tip.IdTipObroka == 2 && k.DatumUplacivanja.Month <= DateTime.Now.Month && k.DatumUplacivanja.Month >= DateTime.Now.AddMonths(-3).Month) / 3);
            predlog.BrojVecera  = (kor.Obroci.Count(k => k.Tip.IdTipObroka == 3 && k.DatumUplacivanja.Month <= DateTime.Now.Month && k.DatumUplacivanja.Month >= DateTime.Now.AddMonths(-3).Month) / 3);

            if (predlog != null)
            {
                return(predlog);
            }
            return(null);
        }
        public static bool UplatiObrok(int id, int brojObroka, int tipObroka)
        {
            ISession s = SesijeProvajder.Sesija;

            if (brojObroka == 0)
            {
                return(false);
            }

            Korisnik k = ProvajderPodatakaKorisnika.VratiKorisnika(id);

            if (k == null)
            {
                return(false);
            }

            if (k.TipNaloga.IdTip != 5)
            {
                return(false);
            }

            for (int i = 0; i < brojObroka; i++)
            {
                Obrok o = new Obrok()
                {
                    Iskoriscen        = false,
                    DatumUplacivanja  = DateTime.Now,
                    DatumIskoriscenja = null,
                    Uplatilac         = k,
                    Tip = ProvajderPodatakaTipovaObroka.VratiTipObroka(tipObroka),
                    LokacijaIskoriscenja = null,
                    LokacijaUplate       = ProvajderPodatakaMenzi.VratiMenzu(4)
                };

                k.Obroci.Add(o);
            }

            s.Save(k);
            s.Flush();
            return(true);
        }
        public static ObjavaCUDto Objavi(int id, ObjavaCUDto ocudto)
        {
            ISession s  = SesijeProvajder.Sesija;
            Korisnik ko = ProvajderPodatakaKorisnika.VratiKorisnika(id);

            if (ko == null)
            {
                return(null);
            }

            if (ko.TipNaloga.IdTip != 5)
            {
                return(null);
            }

            Objava o;

            if (ko.Objava != null)
            {
                o = ko.Objava;
            }
            else
            {
                o = NapraviObjavu(ko);
            }

            List <Menza> menze = s.Query <Menza>().Select(k => k).ToList();
            Menza        m     = menze.Find(x => x.IdMenza == ocudto.IdLokacije);

            o.TekstObjave = ocudto.TekstObjave;
            o.Lokacija    = m;
            o.DatumObjave = DateTime.Now;


            s.Save(o);
            s.Flush();

            return(ocudto);
        }
        public static PozivanjaFullDto Pozovi(PozivanjaFullDto pfdto, string sid)
        {
            ISession s = SesijeProvajder.Sesija;

            Korisnik pozivalac = VratiKorisnika(ProvajderPodatakaKorisnika.KorisnikIDizSesijaID(sid));

            if (pozivalac == null)
            {
                return(null);
            }

            List <Korisnik> pozvani = new List <Korisnik>();
            Pozivanje       poziv   = new Pozivanje()
            {
                DatumPoziva = pfdto.DatumPoziva,
                VaziDo      = pfdto.VaziDo,
                Pozivaoc    = pozivalac
            };

            for (int i = 0; i < pfdto.Pozvani.Count; i++)
            {
                Korisnik k = VratiKorisnika(pfdto.Pozvani[i]);
                if (k != null)
                {
                    pozvani.Add(k);
                }
            }

            foreach (var v in pozvani)
            {
                PozivanjaPozvani pp = new PozivanjaPozvani()
                {
                    IdPozivanjaPozvani =
                    {
                        IdPoziva   = poziv,
                        IdPozvanog = v
                    },
                    OdgovorPozvanog = false
                };

                v.PozivanjaOd.Add(pp);
            }

            pozivalac.Pozivi.Add(poziv);

            //prebaciti izmedju prethodnih foreach petlji
            s.Save(poziv);
            s.Save(pozivalac);


            foreach (var v in pozvani)
            {
                s.Save(v);
            }

            s.Flush();

            List <Pozivanje> p = s.Query <Pozivanje>().Select(x => x).ToList();

            if (p.Count == 0)
            {
                return(null);
            }

            Pozivanje po = p.Find(x => x.Pozivaoc.IdKorisnika == pozivalac.IdKorisnika && x.DatumPoziva == poziv.DatumPoziva);

            if (po == null)
            {
                return(null);
            }

            pfdto.IdPoziva = po.IdPoziva;

            return(pfdto);
        }