diff --git a/pallets/service-request/src/lib.rs b/pallets/service-request/src/lib.rs index 4ab8d50c..a2537a7a 100644 --- a/pallets/service-request/src/lib.rs +++ b/pallets/service-request/src/lib.rs @@ -52,6 +52,8 @@ pub struct Request { pub service_category: Vec, pub staking_amount: Balance, pub status: RequestStatus, + pub created_at: u128, + pub updated_at: Option, pub unstaked_at: Option, } impl Request { @@ -63,6 +65,7 @@ impl Request { city: Vec, service_category: Vec, staking_amount: Balance, + created_at: u128, ) -> Self { Self { hash, @@ -74,6 +77,8 @@ impl Request { service_category, staking_amount, status: RequestStatus::default(), + created_at, + updated_at: None, unstaked_at: None, } } @@ -489,6 +494,8 @@ impl SeviceRequestInterface for Pallet { service_category.clone(), ); + let now = T::TimeProvider::now().as_millis(); + match CurrencyOf::::withdraw( &requester_id, staking_amount.clone(), @@ -506,6 +513,7 @@ impl SeviceRequestInterface for Pallet { city.clone(), service_category.clone(), staking_amount.clone(), + now, ); RequestById::::insert(request_id.clone(), request.clone()); @@ -646,9 +654,12 @@ impl SeviceRequestInterface for Pallet { qc_price, ); + let now = T::TimeProvider::now().as_millis(); + if lab_status.is_verified() { request.status = RequestStatus::Claimed; request.lab_address = Some(lab_id); + request.updated_at = Some(now); RequestById::::insert(request_id, request.clone()); ServiceOfferById::::insert(request_id, service_offer.clone()); @@ -777,10 +788,13 @@ impl SeviceRequestInterface for Pallet { final_pay_amount.clone(), ); + let now = T::TimeProvider::now().as_millis(); + ServiceInvoiceById::::insert(request_id.clone(), service_invoice.clone()); ServiceInvoiceByOrderId::::insert(order_id.clone(), service_invoice.clone()); request.status = RequestStatus::Processed; + request.updated_at = Some(now); RequestById::::insert(request_id.clone(), request); Ok(service_invoice.clone()) @@ -864,7 +878,10 @@ impl SeviceRequestInterface for Pallet { }, } + let now = T::TimeProvider::now().as_millis(); + request.status = RequestStatus::Finalized; + request.updated_at = Some(now); RequestById::::insert(request_id.clone(), request.clone()); Ok(service_invoice.clone())