Exemple #1
0
        public void SaveBalanceWithoutBookings(DateTime dateTime, int refUserId)
        {
            var lastBalance     = TimeBalances.GetLastByDateAndRefUserId(dateTime, refUserId);
            var obligatoryHours = TimeObligatoryHours.GetByRefUserId(refUserId);

            if (lastBalance != null)
            {
                if (obligatoryHours != null)
                {
                    var obligatoryHoursDay = obligatoryHours.Single(x => x.DayOfWeek == dateTime.DayOfWeek).HoursPerDay;
                    var existingItem       = TimeBalances.GetByDateAndRefUserId(dateTime, refUserId);

                    if (existingItem != null)
                    {
                        existingItem.Balance = lastBalance.Balance - obligatoryHoursDay;
                        TimeBalances.Update(existingItem);
                    }
                    else
                    {
                        TimeBalances.Insert(new TimeBalance(refUserId, dateTime, lastBalance.Balance - obligatoryHoursDay));
                    }
                }
            }
            else
            {
                if (obligatoryHours != null)
                {
                    var obligatoryHoursDay = obligatoryHours.Single(x => x.DayOfWeek == dateTime.DayOfWeek).HoursPerDay;
                    TimeBalances.Insert(new TimeBalance(refUserId, dateTime, (obligatoryHoursDay * (-1))));
                }
            }
        }
Exemple #2
0
        private IEnumerable <TimeBookingDayItem> CreateDayItems(IEnumerable <TimeBooking> timeBookings)
        {
            if (!timeBookings.Any())
            {
                return(new List <TimeBookingDayItem>());
            }

            List <TimeBookingDayItem> timeBookingDayItems = new List <TimeBookingDayItem>();

            var timeObligatoryHours = TimeObligatoryHours.GetByRefUserId(timeBookings.ToList()[0].RefUserId);

            var itemsPerDay = timeBookings.GroupBy(x => x.BookingTime.Date);

            foreach (var item in itemsPerDay)
            {
                var timeObgligatoryHoursDay = timeObligatoryHours.SingleOrDefault(x => x.DayOfWeek == item.ToList()[0].BookingTime.DayOfWeek);
                var newDayItem = CreateDayItem(item, timeObgligatoryHoursDay);
                if (newDayItem != null)
                {
                    timeBookingDayItems.Add(newDayItem);
                }
            }

            return(timeBookingDayItems);
        }
Exemple #3
0
        public double GetObgligaryHoursForDay(DateTime dateTime, int refUserId)
        {
            var obligatoryHours = TimeObligatoryHours.GetByRefUserId(refUserId);

            if (obligatoryHours == null || obligatoryHours.Count == 0 || obligatoryHours.SingleOrDefault(x => x.DayOfWeek == dateTime.DayOfWeek) == null)
            {
                return(0);
            }

            return(obligatoryHours.Single(x => x.DayOfWeek == dateTime.DayOfWeek).HoursPerDay);
        }
Exemple #4
0
        private void SaveBalance(TimeBooking timeBooking)
        {
            var bookings = TimeBookings.GetDataForDay(timeBooking.BookingTime, timeBooking.RefUserId);
            var hours    = timeBooking.BookingTime - bookings.First().BookingTime;

            var obligatoryHours = TimeObligatoryHours.GetByRefUserId(timeBooking.RefUserId);

            if (obligatoryHours.Count > 0)
            {
                var day = obligatoryHours.SingleOrDefault(x => x.DayOfWeek == timeBooking.BookingTime.DayOfWeek);
                if (day != null)
                {
                    var dayItem      = CreateDayItem(bookings, day);
                    var balanceValue = dayItem.WorkingHours.TotalHours - day.HoursPerDay;

                    var lastItem = TimeBalances.GetLastByDateAndRefUserId(timeBooking.BookingTime, timeBooking.RefUserId);

                    if (lastItem != null)
                    {
                        balanceValue += lastItem.Balance;
                    }

                    var existingItem = TimeBalances.GetByDateAndRefUserId(timeBooking.BookingTime, timeBooking.RefUserId);

                    if (existingItem != null)
                    {
                        existingItem.Balance = balanceValue;
                        TimeBalances.Update(existingItem);
                    }
                    else
                    {
                        TimeBalance timeBalance = new TimeBalance(timeBooking.RefUserId, timeBooking.BookingTime, balanceValue);
                        TimeBalances.Insert(timeBalance);
                    }
                }
            }
        }