This commit is contained in:
2023-04-28 12:21:24 +08:00
parent 156d145a48
commit 88e0a25ecd
162 changed files with 26324 additions and 7519 deletions

View File

@ -0,0 +1,424 @@
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<CredentialProvider>();
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<AEMPInfo>(content);
try
{
if (string.IsNullOrEmpty(aempinfo.ID))
aempinfo.ID = Guid.NewGuid().ToString();
CredentialProvider crd = FleetServiceClientHelper.CreateClient<CredentialProvider>();
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<CredentialProvider>();
crd.DeleteAEMPCredential(SystemParams.CompanyID, iid);
Response.Write("\"OK\"");
}
#endregion
#region JDLink credential
private void GetJDLinkTokenItems()
{
var user = GetCurrentLoginSession().User;
JDAPICredentialProvider client = FleetServiceClientHelper.CreateClient<JDAPICredentialProvider>();
AuthTokenItem[] items = client.GetJDLinkTokenItems(SystemParams.CompanyID);
List<AuthTokenInfo> ls = new List<AuthTokenInfo>();
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<JDAPICredentialProvider>();
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<JDAPICredentialProvider>();
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<JDAPICredentialProvider>();
AuthTokenItem[] items = client.GetMyJDAPITokenItems(SystemParams.CompanyID);
List<AuthTokenInfo> ls = new List<AuthTokenInfo>();
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<JDAPICredentialProvider>();
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<JDAPICredentialProvider>();
SubscriptionItem[] items = client.GetNotificationSubscriptions(SystemParams.CompanyID);
List<SubscriptionInfo> ls = new List<SubscriptionInfo>();
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<JDAPICredentialProvider>();
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<JDAPICredentialProvider>();
client.DeleteNotificationSubscription(SystemParams.CompanyID, iid);
Response.Write("\"OK\"");
}
#endregion
#region API Credential
private void GetAPIDictionaries()
{
CredentialProvider crd = FleetServiceClientHelper.CreateClient<CredentialProvider>();
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<CredentialProvider>();
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<APICredentialDef>(content);
try
{
CredentialProvider crd = FleetServiceClientHelper.CreateClient<CredentialProvider>();
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<CredentialProvider>();
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<JDAPICredentialProvider>();
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<JDAPICredentialProvider>();
string url = client.GetJDOrganizationUrl(SystemParams.CompanyID, iid);
string json = JsonConvert.SerializeObject(url);
Response.Write(json);
Response.End();
}
/// <summary>
/// 用于传输的临时Credential类
/// </summary>
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(); } }
}
}
}

View File

@ -0,0 +1,84 @@
using Foresight.Fleet.Services.Customer;
using Foresight.Fleet.Services.User;
using IronIntel.Contractor.Users;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IronIntel.Contractor.Site.Credentials
{
public class CredentialsBasePage : ContractorBasePage
{
protected void ProcessRequest(string methodName)
{
object result = null;
if (methodName != null)
{
switch (methodName.ToUpper())
{
case "GETNAVS":
result = GetNavigations();
break;
}
}
string json = JsonConvert.SerializeObject(result);
Response.Write(json);
Response.End();
}
private CredentialNavigateItem[] GetNavigations()
{
List<CredentialNavigateItem> list = GetNavigateItems();
LicenseInfo license = SystemParams.GetLicense();
if (license != null && license.Items.Count > 0)
{
var jdn = license.Items.FirstOrDefault(m => m.Key == "JohnDeereNotifications");
if (jdn == null || !Helper.IsTrue(jdn.Value))
{
CredentialNavigateItem item = list.FirstOrDefault(m => m.ID == "nav_jdnotification");
list.Remove(item);
}
}
return list.ToArray();
}
public static List<CredentialNavigateItem> GetNavigateItems()
{
List<CredentialNavigateItem> list = new List<CredentialNavigateItem>();
CredentialNavigateItem item1 = new CredentialNavigateItem();
item1.ID = "nav_credential";
item1.Title = "Credentials";
item1.Url = "ManageCredential.aspx";
item1.IconPath = "img/credential.png";
list.Add(item1);
CredentialNavigateItem item2 = new CredentialNavigateItem();
item2.ID = "nav_jdlink";
item2.Title = "JD Link";
item2.Url = "ManageJDLink.aspx";
item2.IconPath = "img/jdlink.png";
list.Add(item2);
//CredentialNavigateItem item3 = new CredentialNavigateItem();
//item3.ID = "nav_jdnotification";
//item3.Title = "JohnDeere Notifications";
//item3.Url = "ManageJDNotifications.aspx";
//item3.IconPath = "img/jdnotifications.png";
//list.Add(item3);
CredentialNavigateItem item4 = new CredentialNavigateItem();
item4.ID = "nav_apicredential";
item4.Title = "API Credentials";
item4.Url = "ManageAPICredential.aspx";
item4.IconPath = "img/apicredential.png";
list.Add(item4);
return list;
}
}
}