""" Qctask.
Do not edit this file by hand.
This is generated by parsing api.html service doc.
"""
from ambra_sdk.exceptions.service import InvalidInteger
from ambra_sdk.exceptions.service import InvalidTag
from ambra_sdk.exceptions.service import InvisibleQuery
from ambra_sdk.exceptions.service import MissingFields
from ambra_sdk.exceptions.service import NamespaceNotAccountRelated
from ambra_sdk.exceptions.service import NotFound
from ambra_sdk.exceptions.service import NotOwningNamespace
from ambra_sdk.exceptions.service import NotPermitted
from ambra_sdk.exceptions.service import Stale
from ambra_sdk.service.query import QueryO
from ambra_sdk.service.query import AsyncQueryO
class Qctask:
    """Qctask."""
    def __init__(self, api):
        self._api = api
    
[docs]    def add(
        self,
        namespace_id,
        priority,
        customfield_param=None,
        message=None,
        qctask_status=None,
        queries=None,
        query_id=None,
        studies=None,
        user_id=None,
    ):
        """Add.
        :param namespace_id: Id of the namespace assigned to the QC Task
        :param priority: QC Task priority
        :param customfield_param: Expected values are CUSTOMFIELD_UUID. Custom field(s) (optional)
        :param message: Explanatory message for the QC Task (optional)
        :param qctask_status: Status of the QC task, Open by default (Open|InProgress|Closed) (optional)
        :param queries: A JSON array of the query uuid(s) associate the QC Task to (optional)
        :param query_id: Id of the query to associate the QC Task to (optional)
        :param studies: A JSON array of the study uuid(s) (optional)
        :param user_id: Id of the user to assign the QC Task to (optional)
        """
        request_data = {
           'message': message,
           'namespace_id': namespace_id,
           'priority': priority,
           'qctask_status': qctask_status,
           'queries': queries,
           'query_id': query_id,
           'studies': studies,
           'user_id': user_id,
        }
        if customfield_param is not None:
            customfield_param_dict = {'{prefix}{k}'.format(prefix='customfield-', k=k): v for k,v in customfield_param.items()}
            request_data.update(customfield_param_dict)
	
        errors_mapping = {}
        errors_mapping[('INVALID_INTEGER', None)] = InvalidInteger('An invalid integer was passed. The error_subtype holds the name of the invalid integer')
        errors_mapping[('INVISIBLE_QUERY', None)] = InvisibleQuery('The passed Query is not visible to the user the QC Task is being assigned to')
        errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields')
        errors_mapping[('NAMESPACE_NOT_ACCOUNT_RELATED', None)] = NamespaceNotAccountRelated('The assigned namespace is not associated with an Account (it is a PHR account)')
        errors_mapping[('NOT_FOUND', None)] = NotFound('The object was not found. The error_subtype holds the type of object not found')
        errors_mapping[('NOT_OWNING_NAMESPACE', None)] = NotOwningNamespace('The assigned namespace is not an owning namespace for the passed Query')
        errors_mapping[('NOT_PERMITTED', None)] = NotPermitted('You are not permitted to assign a QC Task to the namespace')
        query_data = {
            'api': self._api,
            'url': '/qctask/add',
            'request_data': request_data,
            'errors_mapping': errors_mapping,
            'required_sid': True,
        }
        return QueryO(**query_data) 
    
[docs]    def set(
        self,
        uuid,
        customfield_param=None,
        message=None,
        priority=None,
        queries=None,
        studies=None,
        user_id=None,
    ):
        """Set.
        :param uuid: The QC Task uuid
        :param customfield_param: Expected values are CUSTOMFIELD_UUID. Custom field(s) (optional)
        :param message: Explanatory message for the QC Task (optional)
        :param priority: QC Task priority (optional)
        :param queries: A JSON array of the query uuid(s) associate the QC Task to (optional)
        :param studies: A JSON array of the study uuid(s) (optional)
        :param user_id: Id of the user to assign the QC Task to (optional)
        """
        request_data = {
           'message': message,
           'priority': priority,
           'queries': queries,
           'studies': studies,
           'user_id': user_id,
           'uuid': uuid,
        }
        if customfield_param is not None:
            customfield_param_dict = {'{prefix}{k}'.format(prefix='customfield-', k=k): v for k,v in customfield_param.items()}
            request_data.update(customfield_param_dict)
	
        errors_mapping = {}
        errors_mapping[('INVALID_INTEGER', None)] = InvalidInteger('An invalid integer was passed. The error_subtype holds the name of the invalid integer')
        errors_mapping[('INVISIBLE_QUERY', None)] = InvisibleQuery('The passed Query is not visible to the user the QC Task is being assigned to')
        errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields')
        errors_mapping[('NOT_FOUND', None)] = NotFound('The object was not found. The error_subtype holds the type of object not found')
        errors_mapping[('NOT_PERMITTED', None)] = NotPermitted('You are not permitted to edit the QC Task')
        query_data = {
            'api': self._api,
            'url': '/qctask/set',
            'request_data': request_data,
            'errors_mapping': errors_mapping,
            'required_sid': True,
        }
        return QueryO(**query_data) 
    
[docs]    def get(
        self,
        uuid,
    ):
        """Get.
        :param uuid: The QC Task uuid
        """
        request_data = {
           'uuid': uuid,
        }
	
        errors_mapping = {}
        errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields')
        errors_mapping[('NOT_FOUND', None)] = NotFound('The QC Task can not be found')
        errors_mapping[('NOT_PERMITTED', None)] = NotPermitted('You are not permitted to view the QC Task')
        query_data = {
            'api': self._api,
            'url': '/qctask/get',
            'request_data': request_data,
            'errors_mapping': errors_mapping,
            'required_sid': True,
        }
        return QueryO(**query_data) 
    
[docs]    def status_set(
        self,
        new,
        old,
        uuid,
    ):
        """Status set.
        :param new: The new QC task status value (Open|InProgress|Closed)
        :param old: The old QC task status value
        :param uuid: QC task uuid
        """
        request_data = {
           'new': new,
           'old': old,
           'uuid': uuid,
        }
	
        errors_mapping = {}
        errors_mapping[('INVALID_TAG', None)] = InvalidTag('The QC task status new value is not a valid value')
        errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields')
        errors_mapping[('NOT_FOUND', None)] = NotFound('The QC task can not be found')
        errors_mapping[('NOT_PERMITTED', None)] = NotPermitted('You are not permitted to set the status for this QC task')
        errors_mapping[('STALE', None)] = Stale('The QC task status you have is stale')
        query_data = {
            'api': self._api,
            'url': '/qctask/status/set',
            'request_data': request_data,
            'errors_mapping': errors_mapping,
            'required_sid': True,
        }
        return QueryO(**query_data) 
    
class AsyncQctask:
    """AsyncQctask."""
    def __init__(self, api):
        self._api = api
    
[docs]    def add(
        self,
        namespace_id,
        priority,
        customfield_param=None,
        message=None,
        qctask_status=None,
        queries=None,
        query_id=None,
        studies=None,
        user_id=None,
    ):
        """Add.
        :param namespace_id: Id of the namespace assigned to the QC Task
        :param priority: QC Task priority
        :param customfield_param: Expected values are CUSTOMFIELD_UUID. Custom field(s) (optional)
        :param message: Explanatory message for the QC Task (optional)
        :param qctask_status: Status of the QC task, Open by default (Open|InProgress|Closed) (optional)
        :param queries: A JSON array of the query uuid(s) associate the QC Task to (optional)
        :param query_id: Id of the query to associate the QC Task to (optional)
        :param studies: A JSON array of the study uuid(s) (optional)
        :param user_id: Id of the user to assign the QC Task to (optional)
        """
        request_data = {
           'message': message,
           'namespace_id': namespace_id,
           'priority': priority,
           'qctask_status': qctask_status,
           'queries': queries,
           'query_id': query_id,
           'studies': studies,
           'user_id': user_id,
        }
        if customfield_param is not None:
            customfield_param_dict = {'{prefix}{k}'.format(prefix='customfield-', k=k): v for k,v in customfield_param.items()}
            request_data.update(customfield_param_dict)
	
        errors_mapping = {}
        errors_mapping[('INVALID_INTEGER', None)] = InvalidInteger('An invalid integer was passed. The error_subtype holds the name of the invalid integer')
        errors_mapping[('INVISIBLE_QUERY', None)] = InvisibleQuery('The passed Query is not visible to the user the QC Task is being assigned to')
        errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields')
        errors_mapping[('NAMESPACE_NOT_ACCOUNT_RELATED', None)] = NamespaceNotAccountRelated('The assigned namespace is not associated with an Account (it is a PHR account)')
        errors_mapping[('NOT_FOUND', None)] = NotFound('The object was not found. The error_subtype holds the type of object not found')
        errors_mapping[('NOT_OWNING_NAMESPACE', None)] = NotOwningNamespace('The assigned namespace is not an owning namespace for the passed Query')
        errors_mapping[('NOT_PERMITTED', None)] = NotPermitted('You are not permitted to assign a QC Task to the namespace')
        query_data = {
            'api': self._api,
            'url': '/qctask/add',
            'request_data': request_data,
            'errors_mapping': errors_mapping,
            'required_sid': True,
        }
        return AsyncQueryO(**query_data) 
    
[docs]    def set(
        self,
        uuid,
        customfield_param=None,
        message=None,
        priority=None,
        queries=None,
        studies=None,
        user_id=None,
    ):
        """Set.
        :param uuid: The QC Task uuid
        :param customfield_param: Expected values are CUSTOMFIELD_UUID. Custom field(s) (optional)
        :param message: Explanatory message for the QC Task (optional)
        :param priority: QC Task priority (optional)
        :param queries: A JSON array of the query uuid(s) associate the QC Task to (optional)
        :param studies: A JSON array of the study uuid(s) (optional)
        :param user_id: Id of the user to assign the QC Task to (optional)
        """
        request_data = {
           'message': message,
           'priority': priority,
           'queries': queries,
           'studies': studies,
           'user_id': user_id,
           'uuid': uuid,
        }
        if customfield_param is not None:
            customfield_param_dict = {'{prefix}{k}'.format(prefix='customfield-', k=k): v for k,v in customfield_param.items()}
            request_data.update(customfield_param_dict)
	
        errors_mapping = {}
        errors_mapping[('INVALID_INTEGER', None)] = InvalidInteger('An invalid integer was passed. The error_subtype holds the name of the invalid integer')
        errors_mapping[('INVISIBLE_QUERY', None)] = InvisibleQuery('The passed Query is not visible to the user the QC Task is being assigned to')
        errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields')
        errors_mapping[('NOT_FOUND', None)] = NotFound('The object was not found. The error_subtype holds the type of object not found')
        errors_mapping[('NOT_PERMITTED', None)] = NotPermitted('You are not permitted to edit the QC Task')
        query_data = {
            'api': self._api,
            'url': '/qctask/set',
            'request_data': request_data,
            'errors_mapping': errors_mapping,
            'required_sid': True,
        }
        return AsyncQueryO(**query_data) 
    
[docs]    def get(
        self,
        uuid,
    ):
        """Get.
        :param uuid: The QC Task uuid
        """
        request_data = {
           'uuid': uuid,
        }
	
        errors_mapping = {}
        errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields')
        errors_mapping[('NOT_FOUND', None)] = NotFound('The QC Task can not be found')
        errors_mapping[('NOT_PERMITTED', None)] = NotPermitted('You are not permitted to view the QC Task')
        query_data = {
            'api': self._api,
            'url': '/qctask/get',
            'request_data': request_data,
            'errors_mapping': errors_mapping,
            'required_sid': True,
        }
        return AsyncQueryO(**query_data) 
    
[docs]    def status_set(
        self,
        new,
        old,
        uuid,
    ):
        """Status set.
        :param new: The new QC task status value (Open|InProgress|Closed)
        :param old: The old QC task status value
        :param uuid: QC task uuid
        """
        request_data = {
           'new': new,
           'old': old,
           'uuid': uuid,
        }
	
        errors_mapping = {}
        errors_mapping[('INVALID_TAG', None)] = InvalidTag('The QC task status new value is not a valid value')
        errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields')
        errors_mapping[('NOT_FOUND', None)] = NotFound('The QC task can not be found')
        errors_mapping[('NOT_PERMITTED', None)] = NotPermitted('You are not permitted to set the status for this QC task')
        errors_mapping[('STALE', None)] = Stale('The QC task status you have is stale')
        query_data = {
            'api': self._api,
            'url': '/qctask/status/set',
            'request_data': request_data,
            'errors_mapping': errors_mapping,
            'required_sid': True,
        }
        return AsyncQueryO(**query_data)