public static bool DodajUPoziv(int idPoziva, int idPozvanog)
        {
            ISession s = SesijeProvajder.Sesija;

            Pozivanje p = s.Load <Pozivanje>(idPoziva);

            Korisnik pozvani = p.Pozivaoc.Prati.ToList().Find(x => x.IdKorisnika == idPozvanog);

            if (pozvani == null)
            {
                return(false); // nemoguce pozvati nekog koga ne pratimo
            }
            PozivanjaPozvani pp = new PozivanjaPozvani()
            {
                IdPozivanjaPozvani =
                {
                    IdPoziva   = p,
                    IdPozvanog = pozvani
                },
                OdgovorPozvanog = false
            };

            pozvani.PozivanjaOd.Add(pp);
            p.Pozvani.Add(pp);

            s.Save(p);
            s.Save(pp);
            s.Flush();

            return(true);
        }
        public static PozivanjaPozvaniDto OdogovoriNaPoziv(PozivanjaPozvaniDto ppdto, string sid)
        {
            ISession s = SesijeProvajder.Sesija;

            Korisnik k = VratiKorisnika(KorisnikIDizSesijaID(sid));

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

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

            Pozivanje p = s.Get <Pozivanje>(ppdto.IdPoziva);

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

            PozivanjaPozvani pp = new PozivanjaPozvani()
            {
                IdPozivanjaPozvani =
                {
                    IdPoziva   = p,
                    IdPozvanog = k
                },
                OdgovorPozvanog = ppdto.OdgovorPozvanog
            };

            s.Update(pp);
            s.Flush();

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