MCPcopy Create free account
hub / github.com/dfinity/orbit / submit_request_approval

Method submit_request_approval

core/station/impl/src/services/request.rs:451–484  ·  view source on GitHub ↗
(
        &self,
        input: SubmitRequestApprovalInput,
        ctx: &CallContext,
    )

Source from the content-addressed store, hash-verified

449 }
450
451 pub async fn submit_request_approval(
452 &self,
453 input: SubmitRequestApprovalInput,
454 ctx: &CallContext,
455 ) -> ServiceResult<Request> {
456 let approver = self.user_service.get_user_by_identity(&ctx.caller())?;
457 let request_id = HelperMapper::to_uuid(input.request_id)?;
458 let mut request = self.get_request(request_id.as_bytes())?;
459
460 if !request.can_approve(&approver.id) {
461 Err(RequestError::ApprovalNotAllowed)?
462 }
463
464 let approval_decision = input.decision.into();
465
466 request.add_approval(approver.id, approval_decision, input.reason)?;
467
468 // Must happen after the approval is added to the request to ensure the approval is counted.
469 let maybe_evaluation = request.reevaluate().await?;
470
471 self.request_repository
472 .save_modified(&mut request, next_time());
473
474 if let Some(evaluation) = maybe_evaluation {
475 self.evaluation_result_repository
476 .insert(request.id, evaluation);
477 }
478
479 if request.status == RequestStatus::Rejected {
480 self.rejected_request_hook(&request).await;
481 }
482
483 Ok(request)
484 }
485
486 pub fn complete_request(&self, mut request: Request, request_completed_time: u64) {
487 request.status = RequestStatus::Completed {

Calls 10

can_approveMethod · 0.80
add_approvalMethod · 0.80
reevaluateMethod · 0.80
save_modifiedMethod · 0.80
rejected_request_hookMethod · 0.80
next_timeFunction · 0.50
get_user_by_identityMethod · 0.45
callerMethod · 0.45
get_requestMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected