testlib/dto/
attempt_request.rsuse chrono::NaiveDateTime;
use common::utils::serialize_option_naive_date;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use crate::dto::answer_request::AnswerRequest;
use crate::enums::attempt_status::AttemptStatus;
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct AttemptRequest {
pub id: Option<Uuid>,
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub start_time: Option<NaiveDateTime>,
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub end_time: Option<NaiveDateTime>,
#[serde(rename = "user")]
pub user_t: Uuid,
pub task: Uuid,
pub user_role: Uuid,
pub answers: Option<Vec<AnswerRequest>>,
pub status: Option<AttemptStatus>,
}
impl AttemptRequest {
pub fn equal(&self, other: &AttemptRequest) -> bool {
let mut eq = true;
eq &= self.id == other.id;
eq &= self.start_time == other.start_time;
eq &= self.end_time == other.end_time;
eq &= self.task == other.task;
eq &= self.user_t == other.user_t;
eq &= self.user_role == other.user_role;
eq &= AnswerRequest::vec_equal(
&self.answers.clone().unwrap(),
&other.answers.clone().unwrap(),
);
eq &= self.start_time == other.start_time;
eq
}
}