public bool IsEnable(object Sender, object Element)
        {
            bool retval = true;

            if (Element is CommandParameters)
            {
                CommandParameters cp        = (CommandParameters)Element;
                DateTime          startDate = DateTime.Parse(cp.CommandArguments["primaryKeyId"], CultureInfo.InvariantCulture);
                WeekItemInfo[]    mas       = Mediachase.IBN.Business.TimeTracking.GetWeekItemsForCurrentUser(startDate, startDate.AddDays(6));
                if (mas.Length > 0)
                {
                    WeekItemInfo wii = mas[0];
                    if (wii.Status == WeekItemStatus.NotCompleted)
                    {
                        return(false);
                    }
                }
            }
            return(retval);
        }
Example #2
0
        private static void CalculateDayTotal(DateTime currentWeekStart, WeekItemInfo item, TimeTrackingBlock[] userBlocks)
        {
            DateTime currentWeekEnd = currentWeekStart.AddDays(7);

            foreach (TimeTrackingBlock block in userBlocks)
            {
                // Process if block.StartDate IN [currentWeekStart, currentWeekStart)
                if (block.StartDate < currentWeekStart)
                    continue;
                if (block.StartDate >= currentWeekEnd)
                    continue;

                item.Day1 += block.Day1;
                item.Day2 += block.Day2;
                item.Day3 += block.Day3;
                item.Day4 += block.Day4;
                item.Day5 += block.Day5;
                item.Day6 += block.Day6;
                item.Day7 += block.Day7;
            }
        }
Example #3
0
        /// <summary>
        /// Gets the week items for user.
        /// </summary>
        /// <param name="from">From.</param>
        /// <param name="to">To.</param>
        /// <param name="userId">The user id.</param>
        /// <returns></returns>
        public static WeekItemInfo[] GetWeekItemsForUser(DateTime from, DateTime to, int userId)
        {
            List<WeekItemInfo> retVal = new List<WeekItemInfo>();

            // Load User TT blocks
            TimeTrackingBlock[] userBlocks = TimeTrackingBlock.List(FilterElement.EqualElement("OwnerId", userId),
                new IntervalFilterElement("StartDate", from, to));

            // Sort Block By Start Date
            Array.Sort<TimeTrackingBlock>(userBlocks, CompareTimeTrackingBlockByStartDate);

            // Create Week Item Info list
            DateTime currentWeekStart = GetRealWeekStart(from);

            // TODO: Current
            while (currentWeekStart < to)
            {
                // Calculate aggregated status of all blocks
                WeekItemStatus status = CalculateWeekStatusByBlocks(currentWeekStart, userBlocks);

                WeekItemInfo item = new WeekItemInfo(currentWeekStart,
                    Iso8601WeekNumber.GetWeekNumber(currentWeekStart.AddDays(3)),
                    status);

                CalculateDayTotal(currentWeekStart, item, userBlocks);

                retVal.Add(item);

                // Go to next week
                currentWeekStart = currentWeekStart.AddDays(7);
            }

            return retVal.ToArray();
        }