use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct ExpenseEditForm {
#[serde(rename = "begin")]
pub begin: String,
#[serde(rename = "user")]
pub user: i32,
#[serde(rename = "project")]
pub project: i32,
#[serde(rename = "activity", skip_serializing_if = "Option::is_none")]
pub activity: Option<i32>,
#[serde(rename = "expenseCategory")]
pub expense_category: i32,
#[serde(rename = "description", skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "cost", skip_serializing_if = "Option::is_none")]
pub cost: Option<f64>,
#[serde(rename = "multiplier")]
pub multiplier: f64,
#[serde(rename = "billableMode")]
pub billable_mode: BillableMode,
#[serde(rename = "exported", skip_serializing_if = "Option::is_none")]
pub exported: Option<bool>,
}
impl ExpenseEditForm {
pub fn new(begin: String, user: i32, project: i32, expense_category: i32, multiplier: f64, billable_mode: BillableMode) -> ExpenseEditForm {
ExpenseEditForm {
begin,
user,
project,
activity: None,
expense_category,
description: None,
cost: None,
multiplier,
billable_mode,
exported: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum BillableMode {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "yes")]
Yes,
#[serde(rename = "no")]
No,
}
impl Default for BillableMode {
fn default() -> BillableMode {
Self::Auto
}
}