using FI.FIC.Contracts.DataObjects.BaseObject; using Foresight.Fleet.Services.Credentials; using Foresight.Fleet.Services.Credentials.JDAPI; using Foresight.Service.Credential.Common; using Foresight.Service.Credential.JDAPI; using Foresight.ServiceModel; using IronIntel.Contractor.Users; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespace IronIntel.Contractor.Site.Credentials { public class CredentialEntryBasePage : ContractorBasePage { private const string AEMP = "AEMPFLEET"; private const string JDAPI = "JDAPI"; protected void ProcessRequest(string methodName) { if (methodName != null) { switch (methodName) { case "GetAEMPCredentials": GetAEMPCredentials(); break; case "UpdateAEMPCredential": UpdateAEMPCredential(); break; case "DeleteAEMPCredential": DeleteAEMPCredential(); break; case "DeleteToken": DeleteToken(); break; case "GetJDLinkTokenItems": GetJDLinkTokenItems(); break; case "CreateJDLinkAuthUrl": CreateJDLinkAuthUrl(); break; case "GetAPIDictionaries": GetAPIDictionaries(); break; case "GetAPICredentialDefs": GetAPICredentialDefs(); break; case "UpdateApiCredentialDefs": UpdateApiCredentialDefs(); break; case "DeleteApiCredential": DeleteApiCredential(); break; case "GetNotificationSubscriptions": GetNotificationSubscriptions(); break; case "CreateJDSubPubAuthUrl": CreateJDSubPubAuthUrl(); break; case "DeleteNotificationSubscription": DeleteNotificationSubscription(); break; case "GetMyJDAPITokenItems": GetMyJDAPITokenItems(); break; case "CreateMyJDAPIAuthUrl": CreateMyJDAPIAuthUrl(); break; case "GetOrganizations": GetOrganizations(); break; case "GetJDOrganizationUrl": GetJDOrganizationUrl(); break; } } Response.End(); } protected override bool AllowCurrentLoginSessionEnter() { var f = base.AllowCurrentLoginSessionEnter(); if (!f) { return false; } // check whether you are admin. var session = GetCurrentLoginSession(); if (session == null || session.User == null) { return false; } var ui = UserManagement.GetUserByIID(session.User.UID); return ui != null && ui.UserType >= UserTypes.Admin; } #region AEMP credential private void GetAEMPCredentials() { CredentialProvider crd = FleetServiceClientHelper.CreateClient(); AEMPInfo[] items = crd.GetAEMPCredentials(SystemParams.CompanyID); if (items == null) items = new AEMPInfo[0]; items = items.OrderBy((c) => c.UserName).ToArray(); string json = JsonConvert.SerializeObject(items); Response.Write(json); Response.End(); } private void UpdateAEMPCredential() { var content = Request.Form["ClientData"]; content = HttpUtility.HtmlDecode(content); var aempinfo = JsonConvert.DeserializeObject(content); try { if (string.IsNullOrEmpty(aempinfo.ID)) aempinfo.ID = Guid.NewGuid().ToString(); CredentialProvider crd = FleetServiceClientHelper.CreateClient(); crd.UpdateAEMPCredential(SystemParams.CompanyID, aempinfo); } catch (Exception ex) { Response.Write(JsonConvert.SerializeObject(ex.Message)); return; } Response.Write("\"OK\""); } private void DeleteAEMPCredential() { var iid = Request.Form["ClientData"]; Guid guid; if (!Guid.TryParse(iid, out guid)) { throw new ArgumentException("Credential IID is not valid."); } CredentialProvider crd = FleetServiceClientHelper.CreateClient(); crd.DeleteAEMPCredential(SystemParams.CompanyID, iid); Response.Write("\"OK\""); } #endregion #region JDLink credential private void GetJDLinkTokenItems() { var user = GetCurrentLoginSession().User; JDAPICredentialProvider client = FleetServiceClientHelper.CreateClient(); AuthTokenItem[] items = client.GetJDLinkTokenItems(SystemParams.CompanyID); List ls = new List(); if (items != null && items.Length > 0) { foreach (AuthTokenItem item in items) { AuthTokenInfo ai = new AuthTokenInfo(); Helper.CloneProperty(ai, item); ai.RequestTime = SystemParams.ConvertToUserTimeFromUtc(user, item.RequestTimeUtc); ls.Add(ai); } } string json = JsonConvert.SerializeObject(ls); Response.Write(json); Response.End(); } private void CreateJDLinkAuthUrl() { string absuri = Request.Url.AbsoluteUri; string url = absuri.Substring(0, absuri.LastIndexOf('/')); string redirecturl = url + "/Credentials.aspx?isjdlink=true"; JDAPICredentialProvider client = FleetServiceClientHelper.CreateClient(); string result = client.CreateJDLinkAuthUrl(SystemParams.CompanyID, redirecturl); string json = JsonConvert.SerializeObject(result); Response.Write(json); Response.End(); } private void DeleteToken() { var iid = Request.Form["ClientData"]; JDAPICredentialProvider client = FleetServiceClientHelper.CreateClient(); client.DeleteToken(SystemParams.CompanyID, iid, GetCurrentUser().IID, string.Empty); Response.Write("\"OK\""); } #endregion #region MyJohnDeere private void GetMyJDAPITokenItems() { var user = GetCurrentLoginSession().User; JDAPICredentialProvider client = FleetServiceClientHelper.CreateClient(); AuthTokenItem[] items = client.GetMyJDAPITokenItems(SystemParams.CompanyID); List ls = new List(); if (items != null && items.Length > 0) { foreach (AuthTokenItem item in items) { AuthTokenInfo ai = new AuthTokenInfo(); Helper.CloneProperty(ai, item); ai.RequestTime = SystemParams.ConvertToUserTimeFromUtc(user, item.RequestTimeUtc); ls.Add(ai); } } string json = JsonConvert.SerializeObject(ls); Response.Write(json); Response.End(); } private void CreateMyJDAPIAuthUrl() { string absuri = Request.Url.AbsoluteUri; string url = absuri.Substring(0, absuri.LastIndexOf('/')); string redirecturl = url + "/Credentials.aspx?ismyjd=true"; JDAPICredentialProvider client = FleetServiceClientHelper.CreateClient(); string result = client.CreateMyJDAPIAuthUrl(SystemParams.CompanyID, redirecturl); string json = JsonConvert.SerializeObject(result); Response.Write(json); Response.End(); } #endregion #region JDNotification credential private void GetNotificationSubscriptions() { var user = GetCurrentLoginSession().User; JDAPICredentialProvider client = FleetServiceClientHelper.CreateClient(); SubscriptionItem[] items = client.GetNotificationSubscriptions(SystemParams.CompanyID); List ls = new List(); if (items != null && items.Length > 0) { foreach (SubscriptionItem item in items) { SubscriptionInfo ai = new SubscriptionInfo(); Helper.CloneProperty(ai, item); ai.CreateTime = SystemParams.ConvertToUserTimeFromUtc(user, item.CreateTimeUtc); ls.Add(ai); } } string json = JsonConvert.SerializeObject(ls); Response.Write(json); Response.End(); } private void CreateJDSubPubAuthUrl() { var name = Request.Form["ClientData"]; string absuri = Request.Url.AbsoluteUri; string url = absuri.Substring(0, absuri.LastIndexOf('/')); string redirecturl = url + "/Credentials.aspx?isjdsub=true"; JDAPICredentialProvider client = FleetServiceClientHelper.CreateClient(); string result = client.CreateJDSubPubAuthUrl(SystemParams.CompanyID, redirecturl, name); string json = JsonConvert.SerializeObject(result); Response.Write(json); Response.End(); } private void DeleteNotificationSubscription() { var iid = Request.Form["ClientData"]; JDAPICredentialProvider client = FleetServiceClientHelper.CreateClient(); client.DeleteNotificationSubscription(SystemParams.CompanyID, iid); Response.Write("\"OK\""); } #endregion #region API Credential private void GetAPIDictionaries() { CredentialProvider crd = FleetServiceClientHelper.CreateClient(); APIDictionary[] items = crd.GetAPIDictionaries(SystemParams.CompanyID); items = items.Where(m => m.IsEnabled == true).ToArray(); string json = JsonConvert.SerializeObject(items); Response.Write(json); Response.End(); } private void GetAPICredentialDefs() { CredentialProvider crd = FleetServiceClientHelper.CreateClient(); APICredentialDef[] items = crd.GetAPICredentialDefs(SystemParams.CompanyID); string json = JsonConvert.SerializeObject(items); Response.Write(json); Response.End(); } private void UpdateApiCredentialDefs() { var content = Request.Form["ClientData"]; content = HttpUtility.HtmlDecode(content); var item = JsonConvert.DeserializeObject(content); try { CredentialProvider crd = FleetServiceClientHelper.CreateClient(); crd.UpdateApiCredentialDefs(SystemParams.CompanyID, item, GetCurrentUser().IID); } catch (Exception ex) { Response.Write(JsonConvert.SerializeObject(ex.Message)); return; } Response.Write("\"OK\""); } private void DeleteApiCredential() { var id = Request.Form["ClientData"]; CredentialProvider crd = FleetServiceClientHelper.CreateClient(); crd.DeleteApiCredential(SystemParams.CompanyID, Convert.ToInt32(id), GetCurrentUser().IID); Response.Write("\"OK\""); } #endregion private void GetOrganizations() { var iid = Request.Form["ClientData"]; JDAPICredentialProvider client = FleetServiceClientHelper.CreateClient(); JDOrganizationInfo[] items = client.GetOrganizations(SystemParams.CompanyID, iid); if (items == null) items = new JDOrganizationInfo[0]; string json = JsonConvert.SerializeObject(items); Response.Write(json); Response.End(); } private void GetJDOrganizationUrl() { var iid = Request.Form["ClientData"]; JDAPICredentialProvider client = FleetServiceClientHelper.CreateClient(); string url = client.GetJDOrganizationUrl(SystemParams.CompanyID, iid); string json = JsonConvert.SerializeObject(url); Response.Write(json); Response.End(); } /// /// 用于传输的临时Credential类 /// public class CredentialObj { public string ID { get; set; } public string CredentialType { get; set; } public string Manufacture { get; set; } public string UrlKey { get; set; } public string UserName { get; set; } public string Password { get; set; } public bool Enabled { get; set; } public string OrgnizationID { get; set; } public string Notes { get; set; } } public class AEMPSourceItem { public string ManufactureID { get; set; } public string ManufactureName { get; set; } public string FleetUrl { get; set; } public string AutoServiceClass { get; set; } } public class JDCredentialObj { public string ID { get; set; } public string UserName { get; set; } public string ConsumerKey { get; set; } public string AuthorityUrl { get; set; } public DateTime ExpirationDateUtc { get; set; } public string ExpirationDateUtcStr { get { return ExpirationDateUtc == DateTime.MinValue ? "" : ExpirationDateUtc.ToShortDateString(); } } } public class JDNotifySubItem { public string ID { get; set; } public string UserName { get; set; } public string DisplayName { get; set; } public DateTime ExpireDate { get; set; } public string ExpireDateStr { get { return ExpireDate == DateTime.MinValue ? "" : ExpireDate.ToShortDateString(); } } } public class AuthTokenInfo : AuthTokenItem { public DateTime RequestTime { get; set; } public string RequestTimeStr { get { return RequestTime == DateTime.MinValue ? "" : RequestTime.ToString(); } } } public class SubscriptionInfo : SubscriptionItem { public DateTime CreateTime { get; set; } public string CreateTimeStr { get { return CreateTime == DateTime.MinValue ? "" : CreateTime.ToString(); } } } } }