Skip to main content
deleted 1935 characters in body
Source Link
PressingOnAlways
  • 12.2k
  • 7
  • 34
  • 61

Would like this answer reopened because I have the answer now and it could help someone else...

ANSWER:

# assumes that date passed will always be later than start_date
def post_interval_start_date(date = Date.today)
    case input_frequency
    when "entire_duration"
        return creation_date
    when "daily"
        return date
    when "weekly"
        return date - ((date-creation_date).to_i%7).days
    when "monthly"
        # weird math here to account for months with different number of dates
        months_apart = (creation_date.year * 12 + creation_date.month) - (date.year * 12 + date.month)
        months_apart = months_apart-1 if start_date.mday > date.mday
        return creation_date+months_apart.months
    when "yearly"
        return Date.new(date.yday < start_date.yday ? date.year-1 : date.year, creation_date.month, creation_date.mday)
    end
end

def post_next_interval_start_date
    case input_frequency
    when "entire_duration"
        return post_interval_start_date
    when "daily"
        return post_interval_start_date+1.day
    when "weekly"
        return post_interval_start_date+1.week
    when "monthly"
        return post_interval_start_date+1.month
    when "yearly"
        return post_interval_start_date+1.year
    end
end

def post_left_this_period
    input_limit - post_posted_in_period
end

def post_posted_in_period
    posts.where('post_date >= ?', post_interval_start_date()).count
end

# which allows me to call:
# answer #1 (i didn't end up needing end date for what i was doing):
blog.post_interval_start_date() 

# answer #2 
(blog.post_next_interval_start_date()-Date.today).to_i

# answer #3
blog.post_posted_in_period

Would like this answer reopened because I have the answer now and it could help someone else...

ANSWER:

# assumes that date passed will always be later than start_date
def post_interval_start_date(date = Date.today)
    case input_frequency
    when "entire_duration"
        return creation_date
    when "daily"
        return date
    when "weekly"
        return date - ((date-creation_date).to_i%7).days
    when "monthly"
        # weird math here to account for months with different number of dates
        months_apart = (creation_date.year * 12 + creation_date.month) - (date.year * 12 + date.month)
        months_apart = months_apart-1 if start_date.mday > date.mday
        return creation_date+months_apart.months
    when "yearly"
        return Date.new(date.yday < start_date.yday ? date.year-1 : date.year, creation_date.month, creation_date.mday)
    end
end

def post_next_interval_start_date
    case input_frequency
    when "entire_duration"
        return post_interval_start_date
    when "daily"
        return post_interval_start_date+1.day
    when "weekly"
        return post_interval_start_date+1.week
    when "monthly"
        return post_interval_start_date+1.month
    when "yearly"
        return post_interval_start_date+1.year
    end
end

def post_left_this_period
    input_limit - post_posted_in_period
end

def post_posted_in_period
    posts.where('post_date >= ?', post_interval_start_date()).count
end

# which allows me to call:
# answer #1 (i didn't end up needing end date for what i was doing):
blog.post_interval_start_date() 

# answer #2 
(blog.post_next_interval_start_date()-Date.today).to_i

# answer #3
blog.post_posted_in_period
Post Reopened by PressingOnAlways, matthias_h, Mugen
deleted 1 character in body
Source Link
PressingOnAlways
  • 12.2k
  • 7
  • 34
  • 61
# assumes that date passed will always be later than start_date
def post_interval_start_date(date = Date.today)
    case input_frequency
    when "entire_duration"
        return creation_date
    when "daily"
        return date
    when "weekly"
        return date - ((date-creation_date).to_i%7).days
    when "monthly"
        # weird math here to account for months with different number of dates
        months_apart = (creation_date.year * 12 + creation_date.month) - (date.year * 12 + date.month)
        months_apart = months_apart-1 if start_date.mday > date.mday
        return creation_date+months_apart.months
    when "yearly"
        return Date.new(date.yday < start_date.yday ? date.year-1 : date.year, creation_date.month, creation_date.mday)
    end
end

def post_next_interval_start_date
    case input_frequency
    when "entire_duration"
        return post_interval_start_date
    when "daily"
        return post_interval_start_date+1.day
    when "weekly"
        return post_interval_start_date+1.week
    when "monthly"
        return post_interval_start_date+1.month
    when "yearly"
        return entry_interval_start_date+1post_interval_start_date+1.year
    end
end

def post_left_this_period
    input_limit - post_posted_in_period
end

def post_posted_in_period
    posts.where('post_date >= ?', post_interval_start_date()).count
end

# which allows me to call:
# answer #1 (i didn't end up needing end date for what i was doing):
blog.post_interval_start_date() 

# answer #2 
(blog.post_next_interval_start_date()-Date.today).to_i

# answer #3
blog.post_posted_in_period
# assumes that date passed will always be later than start_date
def post_interval_start_date(date = Date.today)
    case input_frequency
    when "entire_duration"
        return creation_date
    when "daily"
        return date
    when "weekly"
        return date - ((date-creation_date).to_i%7).days
    when "monthly"
        # weird math here to account for months with different number of dates
        months_apart = (creation_date.year * 12 + creation_date.month) - (date.year * 12 + date.month)
        months_apart = months_apart-1 if start_date.mday > date.mday
        return creation_date+months_apart.months
    when "yearly"
        return Date.new(date.yday < start_date.yday ? date.year-1 : date.year, creation_date.month, creation_date.mday)
    end
end

def post_next_interval_start_date
    case input_frequency
    when "entire_duration"
        return post_interval_start_date
    when "daily"
        return post_interval_start_date+1.day
    when "weekly"
        return post_interval_start_date+1.week
    when "monthly"
        return post_interval_start_date+1.month
    when "yearly"
        return entry_interval_start_date+1.year
    end
end

def post_left_this_period
    input_limit - post_posted_in_period
end

def post_posted_in_period
    posts.where('post_date >= ?', post_interval_start_date()).count
end

# which allows me to call:
# answer #1 (i didn't end up needing end date for what i was doing):
blog.post_interval_start_date() 

# answer #2 
(blog.post_next_interval_start_date()-Date.today).to_i

# answer #3
blog.post_posted_in_period
# assumes that date passed will always be later than start_date
def post_interval_start_date(date = Date.today)
    case input_frequency
    when "entire_duration"
        return creation_date
    when "daily"
        return date
    when "weekly"
        return date - ((date-creation_date).to_i%7).days
    when "monthly"
        # weird math here to account for months with different number of dates
        months_apart = (creation_date.year * 12 + creation_date.month) - (date.year * 12 + date.month)
        months_apart = months_apart-1 if start_date.mday > date.mday
        return creation_date+months_apart.months
    when "yearly"
        return Date.new(date.yday < start_date.yday ? date.year-1 : date.year, creation_date.month, creation_date.mday)
    end
end

def post_next_interval_start_date
    case input_frequency
    when "entire_duration"
        return post_interval_start_date
    when "daily"
        return post_interval_start_date+1.day
    when "weekly"
        return post_interval_start_date+1.week
    when "monthly"
        return post_interval_start_date+1.month
    when "yearly"
        return post_interval_start_date+1.year
    end
end

def post_left_this_period
    input_limit - post_posted_in_period
end

def post_posted_in_period
    posts.where('post_date >= ?', post_interval_start_date()).count
end

# which allows me to call:
# answer #1 (i didn't end up needing end date for what i was doing):
blog.post_interval_start_date() 

# answer #2 
(blog.post_next_interval_start_date()-Date.today).to_i

# answer #3
blog.post_posted_in_period
added 1936 characters in body
Source Link
PressingOnAlways
  • 12.2k
  • 7
  • 34
  • 61

Would like this answer reopened because I have the answer now and it could help someone else...

ANSWER:

# assumes that date passed will always be later than start_date
def post_interval_start_date(date = Date.today)
    case input_frequency
    when "entire_duration"
        return creation_date
    when "daily"
        return date
    when "weekly"
        return date - ((date-creation_date).to_i%7).days
    when "monthly"
        # weird math here to account for months with different number of dates
        months_apart = (creation_date.year * 12 + creation_date.month) - (date.year * 12 + date.month)
        months_apart = months_apart-1 if start_date.mday > date.mday
        return creation_date+months_apart.months
    when "yearly"
        return Date.new(date.yday < start_date.yday ? date.year-1 : date.year, creation_date.month, creation_date.mday)
    end
end

def post_next_interval_start_date
    case input_frequency
    when "entire_duration"
        return post_interval_start_date
    when "daily"
        return post_interval_start_date+1.day
    when "weekly"
        return post_interval_start_date+1.week
    when "monthly"
        return post_interval_start_date+1.month
    when "yearly"
        return entry_interval_start_date+1.year
    end
end

def post_left_this_period
    input_limit - post_posted_in_period
end

def post_posted_in_period
    posts.where('post_date >= ?', post_interval_start_date()).count
end

# which allows me to call:
# answer #1 (i didn't end up needing end date for what i was doing):
blog.post_interval_start_date() 

# answer #2 
(blog.post_next_interval_start_date()-Date.today).to_i

# answer #3
blog.post_posted_in_period

Would like this answer reopened because I have the answer now and it could help someone else...

ANSWER:

# assumes that date passed will always be later than start_date
def post_interval_start_date(date = Date.today)
    case input_frequency
    when "entire_duration"
        return creation_date
    when "daily"
        return date
    when "weekly"
        return date - ((date-creation_date).to_i%7).days
    when "monthly"
        # weird math here to account for months with different number of dates
        months_apart = (creation_date.year * 12 + creation_date.month) - (date.year * 12 + date.month)
        months_apart = months_apart-1 if start_date.mday > date.mday
        return creation_date+months_apart.months
    when "yearly"
        return Date.new(date.yday < start_date.yday ? date.year-1 : date.year, creation_date.month, creation_date.mday)
    end
end

def post_next_interval_start_date
    case input_frequency
    when "entire_duration"
        return post_interval_start_date
    when "daily"
        return post_interval_start_date+1.day
    when "weekly"
        return post_interval_start_date+1.week
    when "monthly"
        return post_interval_start_date+1.month
    when "yearly"
        return entry_interval_start_date+1.year
    end
end

def post_left_this_period
    input_limit - post_posted_in_period
end

def post_posted_in_period
    posts.where('post_date >= ?', post_interval_start_date()).count
end

# which allows me to call:
# answer #1 (i didn't end up needing end date for what i was doing):
blog.post_interval_start_date() 

# answer #2 
(blog.post_next_interval_start_date()-Date.today).to_i

# answer #3
blog.post_posted_in_period
Post Closed as "Needs more focus" by Eyeslandic, greg-449, Adrian Mole
Source Link
PressingOnAlways
  • 12.2k
  • 7
  • 34
  • 61
Loading