# -*- coding: utf-8 -*-

from .type import RequestType


def guides_register(self, corpid, store_id, userid, name, mobile, qr_code, avatar, group_qrcode=None, sub_mchid=None):
    """服务人员注册
    :param corpid: 企业ID, 示例值:'1234567890'
    :param store_id: 门店ID, 示例值:12345678
    :param userid: 企业微信的员工ID, 示例值:'robert'
    :param name: 企业微信的员工姓名, 示例值:'robert'
    :param mobile: 手机号码, 示例值:'13900000000'
    :param qr_code: 员工个人二维码, 示例值:'https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=xxx'
    :param avatar: 头像URL, 示例值:'http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0'
    :param group_qrcode: 群二维码URL, 示例值:'http://p.qpic.cn/wwhead/nMl9ssowtibVGyrmvBiaibzDtp/0'
    :param sub_mchid: (服务商模式)子商户的商户号，由微信支付生成并下发。示例值:'1900000109'
    """
    params = {}
    if corpid:
        params.update({'corpid': corpid})
    else:
        raise Exception('corpid is not assigned.')
    if store_id:
        params.update({'store_id': store_id})
    else:
        raise Exception('store_id is not assigned.')
    if userid:
        params.update({'userid': userid})
    else:
        raise Exception('userid is not assigned.')
    if name:
        params.update({'name': self._core.encrypt(name)})
    else:
        raise Exception('name is not assigned')
    if mobile:
        params.update({'mobile': self._core.encrypt(mobile)})
    else:
        raise Exception('mobile is not assigned.')
    if qr_code:
        params.update({'qr_code': qr_code})
    else:
        raise Exception('qr_code is not assigned.')
    if avatar:
        params.update({'avatar': avatar})
    else:
        raise Exception('avatar is not assigned.')
    if group_qrcode:
        params.update({'group_qrcode': group_qrcode})
    if self._partner_mode and sub_mchid:
        params.update({'sub_mchid': sub_mchid})
    path = '/v3/smartguide/guides'
    return self._core.request(path, method=RequestType.POST, data=params, cipher_data=True)


def guides_assign(self, guide_id, out_trade_no, sub_mchid=None):
    """服务人员分配
    :param guide_id: 服务人员ID，示例值:'LLA3WJ6DSZUfiaZDS79FH5Wm5m4X69TBic'
    :param out_trade_no: 商户订单号, 示例值:'20150806125346'
    :param sub_mchid: (服务商模式)子商户的商户号，由微信支付生成并下发。示例值:'1900000109'
    """
    params = {}
    if out_trade_no:
        params.update({'out_trade_no': out_trade_no})
    else:
        raise Exception('out_trade_no is not assigned.')
    if self._partner_mode and sub_mchid:
        params.update({'sub_mchid': sub_mchid})
    if guide_id:
        path = '/v3/smartguide/guides/%s/assign' % guide_id
    else:
        raise Exception('guide_id is not assigned.')
    return self._core.request(path, method=RequestType.POST, data=params)


def guides_query(self, store_id, userid=None, mobile=None, work_id=None, limit=None, offset=0, sub_mchid=None):
    """服务人员查询
    :params store_id: 门店ID, 示例值:1234
    :params userid: 企业微信的员工ID, 示例值:'robert'
    :params mobile: 手机号码, 示例值:'13900000000'
    :params work_id: 工号, 示例值:'robert'
    :params limit: 最大资源条数, 示例值:5
    :params offset: 请求资源起始位置, 示例值:0
    :param sub_mchid: (服务商模式)子商户的商户号，由微信支付生成并下发。示例值:'1900000109'
    """
    if not store_id:
        raise Exception('store_id is not assigned.')
    path = '/v3/smartguide/guides?store_id=%s' % store_id
    if userid:
        path = '%s&userid=%s' % (path, userid)
    cipher_data = False
    if mobile:
        path = '%s&mobile=%s' % (path, self._core.encrypt(mobile))
        cipher_data = True
    if work_id:
        path = '%s&work_id=%s' % (path, work_id)
    if limit:
        path = '%s&limit=%s' % (path, limit)
    if offset:
        path = '%s&offset=%s' % (path, offset)
    if self._partner_mode and sub_mchid:
        path = '%s&sub_mchid=%s' % (path, sub_mchid)
    return self._core.request(path, cipher_data=cipher_data)


def guides_update(self, guide_id, name=None, mobile=None, qr_code=None, avatar=None, group_qrcode=None, sub_mchid=None):
    """服务人员信息更新
    :params guide_id: 服务人员ID, 示例值:'LLA3WJ6DSZUfiaZDS79FH5Wm5m4X69TBic'
    :params name: 服务人员姓名, 示例值:'robert'
    :params mobile: 服务人员手机号码, 示例值:'13900000000'
    :params qr_code: 服务人员二维码URL, 示例值:'https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=xxx'
    :params avatar: 服务人员头像URL, 示例值:'http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0'
    :params group_qrcode: 群二维码URL, 示例值:'http://p.qpic.cn/wwhead/nMl9ssowtibVGyrmvBiaibzDtp/0'
    :param sub_mchid: (服务商模式)子商户的商户号，由微信支付生成并下发。示例值:'1900000109'
    """
    params = {}
    if not guide_id:
        raise Exception('guide_id is not assigned.')
    path = '/v3/smartguide/guides/%s' % guide_id
    cipher_data = False
    if name:
        params.update({'name': self._core.encrypt(name)})
        cipher_data = True
    if mobile:
        params.update({'mobile': self._core.encrypt(mobile)})
        cipher_data = True
    if qr_code:
        params.update({'qr_code': qr_code})
    if avatar:
        params.update({'avatar': avatar})
    if group_qrcode:
        params.update({'group_qrcode': group_qrcode})
    if self._partner_mode and sub_mchid:
        params.update({'sub_mchid': sub_mchid})
    return self._core.request(path, method=RequestType.PATCH, data=params, cipher_data=cipher_data)
