///|
pub(all) struct RequestWindow {
name : String
minutes : Int
total : Int
good : Int
} derive(Eq, Debug)
///|
pub fn RequestWindow::new(
name : String,
minutes : Int,
total : Int,
good : Int,
) -> RequestWindow {
let total = if total > 0 { total } else { 0 }
{
name,
minutes: if minutes > 0 {
minutes
} else {
1
},
total,
good: if good < 0 {
0
} else if good > total {
total
} else {
good
},
}
}
///|
pub fn RequestWindow::bad(self : RequestWindow) -> Int {
self.total - self.good
}
///|
pub fn RequestWindow::availability_bp(self : RequestWindow) -> Int {
if self.total <= 0 {
10000
} else {
self.good * 10000 / self.total
}
}
///|
pub fn RequestWindow::error_bp(self : RequestWindow) -> Int {
10000 - self.availability_bp()
}