using BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Linq;
using System.Web.Http;
using Newtonsoft.Json;
namespace WebAPI.Controllers
{
    /// 
    ///  公用接口
    /// 
    public class CommonController : ApiController
    {
        #region  订阅消息
        /// 
        /// 订阅消息
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        public Model.ResponeData getSubscribeMessage(string userId, string thing2, string name1, string date3)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = APICommonService.SendSubscribeMessage(userId, thing2, name1, date3);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
                ErrLogInfo.WriteLog(ex, "WX接口-订阅推送", "CommonController.getSubscribeMessage");
            }
            return responeData;
        }
        #endregion
        #region 订阅消息
        /// 
        ///  订阅消息
        /// 
        /// 
        /// 
        [HttpPost]
        public Model.ResponeData postSubscribeMessage([FromBody] Model.SubscribeMessageItem messgeInfo)
        {
            var responeData = new Model.ResponeData();
            try
            {
                if (messgeInfo != null)
                {
                    string access_token = APICommonService.getaccess_token();
                    string contenttype = "application/json;charset=utf-8";
                    string url = $"https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={access_token}";
                    var tempData = new
                    {
                        access_token,
                        messgeInfo.touser,
                        messgeInfo.template_id,
                        messgeInfo.page,
                        messgeInfo.data,
                        messgeInfo.miniprogram_state,
                        messgeInfo.lang,
                    };
                    responeData.data = APIGetHttpService.Http(url, "POST", contenttype, null, JsonConvert.SerializeObject(tempData));
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region  获取OpenId消息
        /// 
        ///  获取OpenId消息
        /// 
        /// 
        public Model.ResponeData getUserOpenId(string userId, string jsCode)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = APICommonService.getUserOpenId(userId, jsCode);
            }
            catch (Exception ex)
            {
                responeData.code = 1;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region  刷新获取OpenId消息
        /// 
        ///  获取OpenId消息
        /// 
        /// 
        public Model.ResponeData getRefreshUserOpenId(string userId, string jsCode)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = APICommonService.getUserOpenId(userId, jsCode, true);
            }
            catch (Exception ex)
            {
                responeData.code = 1;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 待办信息接收(不审核)保存方法
        /// 
        ///  待办信息接收(不审核)保存方法
        /// 
        /// 
        /// 
        [HttpPost]
        public Model.ResponeData postSaveFlowReceiveItem([FromBody] Model.FlowReceiveItem flowReceiveItem)
        {
            var responeData = new Model.ResponeData();
            try
            {
                if (flowReceiveItem != null)
                {
                    APICommonService.SaveFlowReceiveItem(flowReceiveItem);
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region  GetTakePicDate
        /// 
        /// GetTakePicDate
        /// 
        /// 
        /// 
        public Model.ResponeData getTakePicDate(string fileUrl)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = APICommonService.GetTakePicDate(fileUrl);
            }
            catch (Exception ex)
            {
                responeData.code = 1;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
    }
}