31 lines
1.0 KiB
Rust
31 lines
1.0 KiB
Rust
use crate::types::{
|
|
enums::time_metrics::TimeDuration, structs::countable_time::CountableTime,
|
|
traits::countable_interface::ICountable,
|
|
};
|
|
|
|
use chrono::{Duration, Local, NaiveDateTime};
|
|
|
|
pub type ExtractedDuration = (NaiveDateTime, String, i64);
|
|
|
|
#[inline]
|
|
pub fn get_expiration_date(duration: TimeDuration) -> NaiveDateTime {
|
|
let mute_duration = match duration {
|
|
TimeDuration::Minutes(min) => Duration::minutes(min),
|
|
TimeDuration::Hours(hrs) => Duration::hours(hrs),
|
|
TimeDuration::Days(day) => Duration::days(day),
|
|
TimeDuration::Weeks(wks) => Duration::weeks(wks),
|
|
TimeDuration::Mounths(mon) => Duration::weeks(mon * 4),
|
|
};
|
|
Local::now().naive_utc() + mute_duration
|
|
}
|
|
|
|
pub fn get_expiration_time(time: TimeDuration) -> ExtractedDuration {
|
|
let time_duration = time.extract();
|
|
let unmute_date = get_expiration_date(time);
|
|
let postfix = CountableTime::from_value(time_duration)
|
|
.get_postfix(time)
|
|
.unwrap();
|
|
|
|
(unmute_date, postfix, time_duration)
|
|
}
|