public IList<UnosVremenaSati> SelektujSveDaneMesecaZaRadnika(int radnikId, int year, int month)
        {
            IList<UnosVremenaSati> vremenaList = new List<UnosVremenaSati>();

            using (ITransaction transaction = NHibernateSession.BeginTransaction())
            {
                var danaUMesecu = DateTime.DaysInMonth(year, month);

                for (int dan = 1; dan < danaUMesecu; dan++)
                {
                    var vremeZaUneti = new DateTime(year, month, dan);

                    if (vremeZaUneti > DateTime.Now)
                        break;

                    if (vremeZaUneti.DayOfWeek == DayOfWeek.Saturday)
                        continue;
                    if (vremeZaUneti.DayOfWeek == DayOfWeek.Sunday)
                        continue;

                    var unosVremena = new UnosVremena();
                    unosVremena.Radnik.RadnikId = radnikId;
                    unosVremena.UnosVremenaDatum = vremeZaUneti;
                    unosVremena.UnosVremenaOpis = "Default";
                    unosVremena.UnosVremenaTipDana = "Radni dan";
                    unosVremena.UnosVremenaNapravioKorisnikId = 1;

                    NHibernateSession.SaveOrUpdate(unosVremena);

                    var unosVremenaSati = new UnosVremenaSati();
                    unosVremenaSati.BrojSati = 8;
                    unosVremenaSati.TipSata = "Redovni sati";
                    unosVremenaSati.UnosVremena = unosVremena;

                    NHibernateSession.SaveOrUpdate(unosVremenaSati);

                    vremenaList.Add(unosVremenaSati);
                }

                try
                {
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                }
            }

            return vremenaList;
        }
        public void DodajIliIzmeniDanZaRadnika(int radnikId, DateTime datum, int trajanje, string opis, string tipDana)
        {
            var danPostoji = (from dani in NHibernateSession.Linq<UnosVremena>()
                              where dani.Radnik.RadnikId == radnikId && dani.UnosVremenaDatum == datum
                              select dani).SingleOrDefault();

            if (danPostoji == null)
            {
                var danZaDodati = new UnosVremena();
                danZaDodati.Radnik.RadnikId = radnikId;
                danZaDodati.UnosVremenaDatum = datum;
                danZaDodati.UnosVremenaNapravioKorisnikId = 1;
                danZaDodati.UnosVremenaOpis = opis;
                danZaDodati.UnosVremenaTipDana = tipDana;

                NHibernateSession.SaveOrUpdate(danZaDodati);

                var satZaDodati = new UnosVremenaSati();
                satZaDodati.BrojSati = trajanje;

                if (tipDana != Utils.DataUtils.NapraviStringOdEnumZaDane(TipDana.RadniDan))
                {
                    satZaDodati.TipSata = "";
                    satZaDodati.BrojSati = 0;
                }
                else
                {
                    satZaDodati.TipSata = Utils.DataUtils.NapraviStringOdEnumZaSate(TipSata.RedovniSati);
                    satZaDodati.BrojSati = 8;
                }

                satZaDodati.UnosVremena = danZaDodati;

                NHibernateSession.SaveOrUpdate(satZaDodati);

                using (ITransaction transaction = NHibernateSession.BeginTransaction())
                {
                    try
                    {
                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                    }
                }

                return;

            }

            var satiVremena = (from sati in NHibernateSession.Linq<UnosVremenaSati>()
                       where sati.UnosVremena.UnosVremenaId == danPostoji.UnosVremenaId
                       && sati.UnosVremena.UnosVremenaDatum == datum
                       select sati).ToList();

            foreach (UnosVremenaSati orphanSati in satiVremena)
            {
                NHibernateSession.Delete(orphanSati);
            }

            danPostoji.UnosVremenaDatum = datum;
            danPostoji.UnosVremenaOpis = opis;
            danPostoji.UnosVremenaNapravioKorisnikId = 1;
            danPostoji.UnosVremenaTipDana = tipDana;

            var sat = new UnosVremenaSati();

            sat.UnosVremena = danPostoji;

            if(tipDana != Utils.DataUtils.NapraviStringOdEnumZaDane(TipDana.RadniDan))
            {
                sat.TipSata = "";
                sat.BrojSati = 0;
            }
            else
            {
                sat.TipSata = Utils.DataUtils.NapraviStringOdEnumZaSate(TipSata.RedovniSati);
                sat.BrojSati = trajanje;
            }

            NHibernateSession.SaveOrUpdate(sat);

            using (ITransaction transaction = NHibernateSession.BeginTransaction())
            {
                try
                {
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                }
            }
        }
        public void DodajPosebneSateRadnikuZaDan(int radnikId, DateTime datum, int brojSati, string tipDana, string tipSata)
        {
            var dan = (from dani in NHibernateSession.Linq<UnosVremena>()
                       where dani.Radnik.RadnikId == radnikId && dani.UnosVremenaDatum == datum
                       select dani).SingleOrDefault();

            var satZaDodati = new UnosVremenaSati();
            satZaDodati.BrojSati = brojSati;
            satZaDodati.TipSata = tipSata;
            satZaDodati.UnosVremena = dan;

            using(ITransaction transaction = NHibernateSession.BeginTransaction())
            {
                try
                {
                    NHibernateSession.SaveOrUpdate(satZaDodati);
                    transaction.Commit();
                }
                catch(Exception ex)
                {
                    transaction.Rollback();
                    Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                }
            }
        }