diff --git a/.vs/WHMCS API/v15/.suo b/.vs/WHMCS API/v15/.suo
index 30ea27154fb64af3c7ccd6f657c295d5c472f727..3c0eaff3b6cc7be23211bcc17f87cb0e35d5d34f 100644
Binary files a/.vs/WHMCS API/v15/.suo and b/.vs/WHMCS API/v15/.suo differ
diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite
index 77d26f0df43e1b9d700c25aa381541df576087a0..993f137056df00f8eda11c3def4f5e178fa3589d 100644
Binary files a/.vs/slnx.sqlite and b/.vs/slnx.sqlite differ
diff --git a/API.cs b/API.cs
index 3a500510faae40c42e3e36ad07c1f05c0fd7ad72..d88a3b56f13b45b39c45c8a6762854ddc0cdd3d8 100644
--- a/API.cs
+++ b/API.cs
@@ -26,7 +26,7 @@ namespace WHMCS_API
/// Returns the result of the call
/// The userid string for the session Session["uid"]
/// The passwordhash for the session Session["upw"]
- public ValidateLogin ValidateLogin(string Email, string Password)
+ public ValidateLogin.ValidateLogin ValidateLogin(string Email, string Password)
{
NameValueCollection data = new NameValueCollection()
{
@@ -35,7 +35,7 @@ namespace WHMCS_API
{ EnumUtil.GetString(APIEnums.ValidateLoginParams.Password), Password }
};
- return JsonConvert.DeserializeObject(_call.MakeCall(data));
+ return JsonConvert.DeserializeObject(_call.MakeCall(data));
}
///
@@ -96,7 +96,7 @@ namespace WHMCS_API
/// The client Email to search
/// Get extended stats for the client
/// All details of the client
- public GetClientsDetails GetClientsDetails(int ClientID = -1, string ClientEmail = "", bool Stats = false)
+ public GetClientsDetails.GetClientsDetails GetClientsDetails(int ClientID = -1, string ClientEmail = "", bool Stats = false)
{
if (ClientID == -1 && ClientEmail == "")
throw new Exception("ClientID or ClientEmail needed");
@@ -114,11 +114,10 @@ namespace WHMCS_API
string req = _call.MakeCall(data);
JObject result = JObject.Parse(req);
if (result["result"].ToString() == "success")
- return JsonConvert.DeserializeObject(req);
+ return JsonConvert.DeserializeObject(req);
else
throw new Exception("An API Error occurred", new Exception(result["message"].ToString()));
}
-<<<<<<< HEAD
///
/// Get the orders (for all clients/specific client/specific order/specific status)
@@ -129,7 +128,7 @@ namespace WHMCS_API
/// Find orders for a specific client id
/// Find orders for a specific status
/// In a modelm, total results, start number, the number of results returned
- public GetOrders GetOrders(int LimitStart = 0, int LimitNumber = 25, int OrderID = -1, int UserID = -1, string Status = "")
+ public GetOrders.GetOrders GetOrders(int LimitStart = 0, int LimitNumber = 25, int OrderID = -1, int UserID = -1, string Status = "")
{
NameValueCollection data = new NameValueCollection()
{
@@ -144,10 +143,10 @@ namespace WHMCS_API
if (Status != "")
data.Add(EnumUtil.GetString(APIEnums.GetOrdersParams.Status), Status);
- return JsonConvert.DeserializeObject(_call.MakeCall(data));
+ return JsonConvert.DeserializeObject(_call.MakeCall(data));
}
- public GetTransactions GetTransactions(int InvoiceID = -1, int ClientID = -1, string TransactionID = "")
+ public GetTransactions.GetTransactions GetTransactions(int InvoiceID = -1, int ClientID = -1, string TransactionID = "")
{
NameValueCollection data = new NameValueCollection()
{
@@ -160,9 +159,31 @@ namespace WHMCS_API
if (TransactionID != "")
data.Add(EnumUtil.GetString(APIEnums.GetTransactionsParams.TransactionID), TransactionID);
- return JsonConvert.DeserializeObject(_call.MakeCall(data));
+ return JsonConvert.DeserializeObject(_call.MakeCall(data));
+ }
+
+ public string GetClientsProducts(int LimitStart = 0, int LimitNum = 25, int ClientID = -1, int ServiceID = -1, int ProductID = -1, string Domain = "", string Username = "")
+ {
+ NameValueCollection data = new NameValueCollection()
+ {
+ { "action", APIEnums.Actions.GetClientsProducts.ToString() },
+ { EnumUtil.GetString(APIEnums.GetClientsProductsParams.ResultsStartOffset), LimitStart.ToString()},
+ { EnumUtil.GetString(APIEnums.GetClientsProductsParams.ResultsLimit), LimitNum.ToString()},
+ };
+
+ if (ClientID != -1)
+ data.Add(EnumUtil.GetString(APIEnums.GetClientsProductsParams.ClientID), ClientID.ToString());
+ if (ServiceID != -1)
+ data.Add(EnumUtil.GetString(APIEnums.GetClientsProductsParams.ServiceID), ServiceID.ToString());
+ if (ProductID != -1)
+ data.Add(EnumUtil.GetString(APIEnums.GetClientsProductsParams.ProductID), ProductID.ToString());
+ if (Domain != "")
+ data.Add(EnumUtil.GetString(APIEnums.GetClientsProductsParams.Domain), Domain);
+ if (Username != "")
+ data.Add(EnumUtil.GetString(APIEnums.GetClientsProductsParams.Username), Username);
+
+ return _call.MakeCall(data);
+ //return JsonConvert.DeserializeObject(_call.MakeCall(data));
}
-=======
->>>>>>> origin/master
}
}
diff --git a/Enums.cs b/Enums.cs
index 9c9a61fbdea529de6d99c2be6513e785ff3083d7..b2da36f3dfd38cf015307759b99e8ef63912690c 100644
--- a/Enums.cs
+++ b/Enums.cs
@@ -59,7 +59,6 @@ namespace WHMCS_API
[StringValue("stats")] Stats
}
-<<<<<<< HEAD
public enum GetOrdersParams
{
[StringValue("limitstart")] LimitStart,
@@ -76,8 +75,17 @@ namespace WHMCS_API
[StringValue("transid")] TransactionID
}
-=======
->>>>>>> origin/master
+ public enum GetClientsProductsParams
+ {
+ [StringValue("limitstart")] ResultsStartOffset,
+ [StringValue("limitnum")] ResultsLimit,
+ [StringValue("clientid")] ClientID,
+ [StringValue("serviceid")] ServiceID,
+ [StringValue("pid")] ProductID,
+ [StringValue("domain")] Domain,
+ [StringValue("username2")] Username
+ }
+
///
/// Actions Supported by the WHMCS API that are implemented in this Wrapper
///
@@ -86,13 +94,10 @@ namespace WHMCS_API
[StringValue("ValidateLogin")] ValidateLogin,
[StringValue("DomainWhois")] DomainWhois,
[StringValue("AddClient")] AddClient,
-<<<<<<< HEAD
[StringValue("GetClientsDetails")] GetClientsDetails,
[StringValue("GetOrders")] GetOrders,
- [StringValue("GetTransactions")] GetTransactions
-=======
- [StringValue("GetClientsDetails")] GetClientsDetails
->>>>>>> origin/master
+ [StringValue("GetTransactions")] GetTransactions,
+ [StringValue("GetClientsProducts")] GetClientsProducts
}
}
diff --git a/GetClientsDetails.cs b/GetClientsDetails.cs
index 8deccda6dac9c76a2b7794e2687fc8b5c1c77eb0..4acb49e0d3e687fa95ba2b0947900680fb084491 100644
--- a/GetClientsDetails.cs
+++ b/GetClientsDetails.cs
@@ -5,7 +5,7 @@ using System.IO;
using System.Linq;
using System.Text;
-namespace WHMCS_API
+namespace WHMCS_API.GetClientsDetails
{
public class Client
{
diff --git a/GetClientsProducts.cs b/GetClientsProducts.cs
new file mode 100644
index 0000000000000000000000000000000000000000..c993e3e8f4ce8742cc0a8be35a812d9d10f5fc34
--- /dev/null
+++ b/GetClientsProducts.cs
@@ -0,0 +1,185 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WHMCS_API.GetClientsProducts
+{
+ public class Customfields
+ {
+
+ [JsonProperty("customfield")]
+ public IList