nordlet 0.3.8

Official Rust SDK for the Nordlet Accounting API
use crate::api::*;
use crate::{ApiError, ClientConfig, HttpClient, RequestOptions};
use reqwest::Method;

pub struct ProductionClient {
    pub http_client: HttpClient,
}

impl ProductionClient {
    pub fn new(config: ClientConfig) -> Result<Self, ApiError> {
        Ok(Self {
            http_client: HttpClient::new(config.clone())?,
        })
    }

    pub async fn work_centers_create(
        &self,
        request: &WorkCentersCreateProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<WorkCentersCreateProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/work-centers/create",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn work_centers_update(
        &self,
        request: &WorkCentersUpdateProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<WorkCentersUpdateProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/work-centers/update",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn work_centers_list(
        &self,
        request: &WorkCentersListProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<WorkCentersListProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/work-centers/list",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn routings_create(
        &self,
        request: &RoutingsCreateProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<RoutingsCreateProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/routings/create",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn routings_get(
        &self,
        request: &RoutingsGetProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<RoutingsGetProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/routings/get",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn routings_list(
        &self,
        request: &RoutingsListProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<RoutingsListProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/routings/list",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn maintenance_create(
        &self,
        request: &MaintenanceCreateProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<MaintenanceCreateProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/maintenance/create",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn maintenance_complete(
        &self,
        request: &MaintenanceCompleteProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<MaintenanceCompleteProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/maintenance/complete",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn maintenance_cancel(
        &self,
        request: &MaintenanceCancelProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<MaintenanceCancelProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/maintenance/cancel",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn maintenance_list(
        &self,
        request: &MaintenanceListProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<MaintenanceListProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/maintenance/list",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn boms_create(
        &self,
        request: &BomsCreateProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<BomsCreateProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/boms/create",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn boms_get(
        &self,
        request: &BomsGetProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<BomsGetProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/boms/get",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn boms_list(
        &self,
        request: &BomsListProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<BomsListProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/boms/list",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn orders_create(
        &self,
        request: &OrdersCreateProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<OrdersCreateProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/orders/create",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn orders_record_operation(
        &self,
        request: &OrdersRecordOperationProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<OrdersRecordOperationProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/orders/record-operation",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn quality_checks_add(
        &self,
        request: &QualityChecksAddProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<QualityChecksAddProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/quality-checks/add",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn quality_checks_record(
        &self,
        request: &QualityChecksRecordProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<QualityChecksRecordProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/quality-checks/record",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn quality_checks_list(
        &self,
        request: &QualityChecksListProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<QualityChecksListProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/quality-checks/list",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn orders_complete(
        &self,
        request: &OrdersCompleteProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<OrdersCompleteProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/orders/complete",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn orders_get(
        &self,
        request: &OrdersGetProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<OrdersGetProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/orders/get",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }

    pub async fn orders_list(
        &self,
        request: &OrdersListProductionRequest,
        options: Option<RequestOptions>,
    ) -> Result<OrdersListProductionResponse, ApiError> {
        self.http_client
            .execute_request(
                Method::POST,
                "v1/production/orders/list",
                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
                None,
                options,
            )
            .await
    }
}