# wxwork_api.py

import requests


class WxWorkAPI:
    def __init__(self, corp_id, secret):
        self.corp_id = corp_id
        self.secret = secret
        self.access_token = self.get_access_token()
        # self.type = type

    def get_access_token(self):
        url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={self.corp_id}&corpsecret={self.secret}"
        response = requests.get(url)
        result = response.json()
        if 'access_token' in result:
            return result['access_token']
        else:
            raise Exception(f"获取AccessToken失败: {result}")

    def get_template_detail(self, template_data):
        url = f"https://qyapi.weixin.qq.com/cgi-bin/oa/gettemplatedetail?access_token={self.access_token}"
        headers = {'Content-Type': 'application/json'}
        response = requests.post(url, json=template_data, headers=headers)
        result = response.json()
        if result['errcode'] == 0:
            # print(result)
            return result
        else:
            raise Exception(f"获取模板详情请求失败: {result}")

    def create_approval_request(self, approval_data):
        url = f"https://qyapi.weixin.qq.com/cgi-bin/oa/applyevent?access_token={self.access_token}"
        headers = {'Content-Type': 'application/json'}
        response = requests.post(url, json=approval_data, headers=headers)
        result = response.json()
        if result['errcode'] == 0:
            print(result)
            return result['sp_no']
        else:
            raise Exception(f"发起审批请求失败: {result}")

    def get_approval_result(self, event_id):
        url = f"https://qyapi.weixin.qq.com/cgi-bin/oa/getapprovalinfo?access_token={self.access_token}"
        headers = {'Content-Type': 'application/json'}
        data = {"apply_eventid": event_id}
        response = requests.post(url, json=data, headers=headers)
        result = response.json()
        if result['errcode'] == 0:
            return result
        else:
            raise Exception(f"获取审批结果失败: {result}")

    def upload_temp_file(self):
        """
        上传临时素材
        :return:
        """
        url = f"https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token={self.access_token}&type=file"
        headers = {'Content-Type': 'application/json'}
        file_path = '长沙研究院2023年月度考勤.xlsx'
        media_type = 'file'
        with open(file_path, 'rb') as f:
            file_content = f.read()
        files = {'media': (file_path, file_content)}
        # response = requests.post(url=url.format(access_token=access_token, type=media_type), files=files)
        response = requests.post(url=url, files=files)
        result = response.json()
        print('upload_result%s' % result)
        return result['media_id']


# template_id_dict = {"test": "ZvmJBAt7U2iUju9JLePxfkfuN22meQMVTAHymA"}
# creator_userid = "MaGuangWei"
# corid = 'wweaf7f1caab27a136'
# secret = 'L6z-kjrUBOWfhBiLOmX_fNSY3jydDkLUNNWnemafn00'
# wx = WxWorkAPI(corid, secret)
# media_id = wx.upload_temp_file()
# print(media_id)
# # access = wx.get_access_token()
# approval_datas = {
#     "creator_userid": creator_userid,
#     "template_id": template_id_dict['test'],
#     "use_template_approver": 0,
#     # "choose_department": 2,
#     "approver": [
#         {
#             "attr": 2,
#             "userid": ["MaGuangWei", "YangJinLing"]
#         },
#         {
#             "attr": 1,
#             "userid": ["MaGuangWei"]
#         }
#     ],
#     "notifyer": ["MaGuangWei", "PengYuBo"],
#     # "notifyer": ["MaGuangWei"],
#     "notify_type": 1,
#     "apply_data": {
#         "contents": [
#             # 申请事项
#             {
#                 "control": "Text",
#                 "id": "Text-1640339319582",
#                 "value": {
#                     "text": "测试测试测试测试测试"
#                 }
#             },
#             # 申请内容
#             {
#                 "control": "Textarea",
#                 "id": "Textarea-1640339335659",
#                 "value": {
#                     "text": "odoo>>>企业微信审批"
#                 }
#             },
#             # 附件
#             {
#                 "control": "File",
#                 "id": "File-1640339381728",
#                 "value": {
#                     "files": [
#                         {
#                             "file_id": media_id
#                         }
#                     ]
#                 }
#
#             },
#
#         ]
#     },
#     "summary_list": [
#         {
#             "summary_info": [{
#                 "text": "测试附件上传",
#                 "lang": "zh_CN"
#             }]
#         },
#         # {
#         #     "summary_info": [{
#         #         "text": "摘要第2行",
#         #         "lang": "zh_CN"
#         #     }]
#         # },
#         # {
#         #     "summary_info": [{
#         #         "text": "摘要第3行",
#         #         "lang": "zh_CN"
#         #     }]
#         # }
#     ]
# }
# wx.create_approval_request(approval_datas)
# print('创建成功')

aa = {"errcode": 0, "errmsg": "ok", "template_names": [{"text": "对接开发测试", "lang": "zh_CN"}], "template_content": {
    "controls": [{"property": {"control": "Text", "id": "Text-1640339319582",
                               "title": [{"text": "申请事项", "lang": "zh_CN"}],
                               "placeholder": [{"text": "请输入申请事项", "lang": "zh_CN"}], "require": 1, "un_print": 0,
                               "un_replace": 0, "display": 1}},
                 {
                     "property": {"control": "Textarea", "id": "Textarea-1640339335659",
                                  "title": [{"text": "申请内容", "lang": "zh_CN"}],
                                  "placeholder": [{"text": "请输入申请详情描述", "lang": "zh_CN"}], "require": 1, "un_print": 0,
                                  "un_replace": 0, "display": 1}},
                 {
                     "property": {"control": "Textarea", "id": "Textarea-1684823453770",
                                  "title": [{"text": "多行文本", "lang": "zh_CN"}],
                                  "placeholder": [{"text": "", "lang": "zh_CN"}], "require": 0, "un_print": 0}},
                 {
                     "property": {"control": "Money", "id": "Money-1684823460232",
                                  "title": [{"text": "金额", "lang": "zh_CN"}],
                                  "placeholder": [{"text": "", "lang": "zh_CN"}], "require": 0, "un_print": 0}},
                 {
                     "property": {"control": "Contact", "id": "Contact-1684823477216",
                                  "title": [{"text": "部门", "lang": "zh_CN"}],
                                  "placeholder": [{"text": "", "lang": "zh_CN"}], "require": 0, "un_print": 0},
                     "config": {"contact": {"type": "multi", "mode": "department"}}},
                 {
                     "property": {"control": "Contact", "id": "Contact-1684823465317",
                                  "title": [{"text": "成员", "lang": "zh_CN"}],
                                  "placeholder": [{"text": "", "lang": "zh_CN"}], "require": 0, "un_print": 0},
                     "config": {"contact": {"type": "multi", "mode": "user"}}},
                 {
                     "property": {"control": "Table", "id": "Table-1684823492261",
                                  "title": [{"text": "明细", "lang": "zh_CN"}],
                                  "placeholder": [{"text": "", "lang": "zh_CN"}], "require": 0, "un_print": 0},
                     "config": {"table": {"children": [{"property": {"control": "Selector",
                                                                     "id": "Selector-1684823501307",
                                                                     "title": [{"text": "单选", "lang": "zh_CN"}],
                                                                     "placeholder": [{"text": "", "lang": "zh_CN"}],
                                                                     "require": 0, "un_print": 0}, "config": {
                         "selector": {"type": "single", "exp_type": 0, "options": [
                             {"key": "option-1684823501307", "value": [{"text": "选项1", "lang": "zh_CN"}]},
                             {"key": "option-1684823501308", "value": [{"text": "选项2", "lang": "zh_CN"}]}],
                                      "op_relations": [],
                                      "external_option": {"use_external_option": False, "external_url": ""}}}}, {
                                                           "property": {"control": "Selector",
                                                                        "id": "Selector-1684823504236",
                                                                        "title": [{"text": "多选", "lang": "zh_CN"}],
                                                                        "placeholder": [{"text": "", "lang": "zh_CN"}],
                                                                        "require": 0, "un_print": 0}, "config": {
                             "selector": {"type": "multi", "exp_type": 0, "options": [
                                 {"key": "option-1684823504236", "value": [{"text": "选项1", "lang": "zh_CN"}]},
                                 {"key": "option-1684823504237", "value": [{"text": "选项2", "lang": "zh_CN"}]}],
                                          "op_relations": [],
                                          "external_option": {"use_external_option": False, "external_url": ""}}}}],
                                          "stat_field": [], "sum_field": [], "print_format": 0}}},
                 {
                     "property": {"control": "RelatedApproval", "id": "RelatedApproval-1684823485883",
                                  "title": [{"text": "关联申请单", "lang": "zh_CN"}],
                                  "placeholder": [{"text": "", "lang": "zh_CN"}], "require": 0, "un_print": 0}},
                 {
                     "property": {"control": "File", "id": "File-1640339381728",
                                  "title": [{"text": "附件", "lang": "zh_CN"}],
                                  "placeholder": [{"text": "", "lang": "zh_CN"}], "require": 0, "un_print": 0,
                                  "un_replace": 0, "display": 1}, "config": {"file": {"is_only_photo": 0}}}]}}
