Example #1
0
        public static T UpdateObject(dynamic delta, T currentObject)
        {
            var propertyInfoes = typeof(T).GetProperties();

            foreach (var propertyInfo in propertyInfoes)
            {
                if (StringHandler.ToLowerCamelCase(propertyInfo.Name) != "id" &&
                    HasField(delta, StringHandler.ToLowerCamelCase(propertyInfo.Name)))
                {
                    if (propertyInfo.PropertyType.Name.Contains("Nullable"))
                    {
                        int?value = delta[StringHandler.ToLowerCamelCase(propertyInfo.Name)];
                        propertyInfo.SetValue(currentObject, value);
                    }
                    else if (propertyInfo.PropertyType.Name.Contains("DateTime"))
                    {
                        DateTime value = delta[StringHandler.ToLowerCamelCase(propertyInfo.Name)];
                        propertyInfo.SetValue(currentObject, value);
                    }
                    else if (propertyInfo.PropertyType.Name.Contains("Double"))
                    {
                        double value = delta[StringHandler.ToLowerCamelCase(propertyInfo.Name)];
                        propertyInfo.SetValue(currentObject, value);
                    }
                    else if (propertyInfo.PropertyType.Name.Contains("LockTimePeriod"))
                    {
                        LockTimePeriod value = delta[StringHandler.ToLowerCamelCase(propertyInfo.Name)];
                        propertyInfo.SetValue(currentObject, value);
                    }
                    else
                    {
                        string value = delta[StringHandler.ToLowerCamelCase(propertyInfo.Name)];
                        propertyInfo.SetValue(currentObject, Convert.ChangeType(value, propertyInfo.PropertyType));
                    }
                }
            }

            return(currentObject);
        }
Example #2
0
        public static bool IsTimeEntryLocked(DateTime timeEntryDateEditing, int daysAfterLock, LockTimePeriod lockPeriod)
        {
            var today = DateTime.Today;

            switch (lockPeriod)
            {
            case LockTimePeriod.Week:
            {
                SetRangeOfThisWeekByDate(out var weekByTodayFirstDate, out var weekByTodayLastDate, today);

                var lockDateLastDate = weekByTodayFirstDate.AddDays(daysAfterLock);

                var isTodayInLockPeriodAtThisWeek = today <= lockDateLastDate;

                var todayDateAtPreviousWeek = today.AddDays(-14);
                var todayDateAtThisWeek     = today.AddDays(-7);

                var editingWeekDay = isTodayInLockPeriodAtThisWeek ? todayDateAtPreviousWeek : todayDateAtThisWeek;

                SetRangeOfThisWeekByDate(out var editingWeekFirstDate, out var editingWeekLastDate, editingWeekDay);

                return(timeEntryDateEditing <= editingWeekLastDate);
            }

            case LockTimePeriod.Month:
            {
                SetRangeOfThisMonthByDate(out var monthByTodayFirstDate, out var monthByTodayLastDate, today);

                var lockDateLastDate = monthByTodayFirstDate.AddDays(daysAfterLock);

                var isInLockPeriod = today <= lockDateLastDate;

                var todayDateAtPreviousMonth = today.AddMonths(-2);
                var todayDateAtThisMonth     = today.AddMonths(-1);

                var editingMonthDay = isInLockPeriod ? todayDateAtPreviousMonth : todayDateAtThisMonth;

                SetRangeOfThisMonthByDate(out var editingMonthFirstDate, out var editingMonthLastDate, editingMonthDay);

                return(timeEntryDateEditing <= editingMonthLastDate);
            }

            default:
            {
                return(false);
            }
            }
        }