public void AddEntitlementLineItemToLicenseServer(EntitlementLineItemResponse lineItem, string serverName) { var fnoWs = new v1ManageDeviceService(); fnoWs.Url = EndPointUrl + "ManageDeviceService"; fnoWs.PreAuthenticate = true; CredentialCache credCache = new System.Net.CredentialCache(); NetworkCredential netCred = new NetworkCredential(UserName, Password); credCache.Add(new Uri(fnoWs.Url), "Basic", netCred); fnoWs.Credentials = credCache; var lineItemRq = new linkAddonLineItemDataType[1]; lineItemRq[0] = new linkAddonLineItemDataType(); lineItemRq[0].deviceIdentifier = GetLicenseServer(serverName); var linkLineItems = new linkLineItemDataType[1]; linkLineItems[0] = new linkLineItemDataType(); linkLineItems[0].lineItemIdentifier = new linkLineItemIdentifier { activationId = lineItem.ActivationCode, count = lineItem.TotalQty.ToString() }; lineItemRq[0].lineItem = linkLineItems; var resp = fnoWs.linkAddonLineItems(lineItemRq); }
public EntitlementLineItemResponse Update(OrderEntitlementLineItem lineItem) { var resp = new EntitlementLineItemResponse(); XNamespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/"; XNamespace urn = "urn:v1.webservices.operations.flexnet.com"; XElement soapEnv = new XElement(soapenv + "Envelope", new XAttribute(XNamespace.Xmlns + "soapenv", "http://schemas.xmlsoap.org/soap/envelope/"), new XAttribute(XNamespace.Xmlns + "urn", "urn:v1.webservices.operations.flexnet.com"), new XElement(soapenv + "Header"), new XElement(soapenv + "Body", new XElement(urn + "updateEntitlementLineItemRequest", new XElement(urn + "lineItemData", new XElement(urn + "entitlementIdentifier", new XElement(urn + "primaryKeys", new XElement(urn + "entitlementId", lineItem.EntitlementId))), new XElement(urn + "lineItemData", new XElement(urn + "lineItemIdentifier", new XElement(urn + "primaryKeys", new XElement(urn + "activationId", lineItem.ActivationId))), new XElement(urn + "numberOfCopies", lineItem.Quantity.ToString())), new XElement(urn + "autoDeploy", true) )))); var soapXml = soapEnv.ToString(); var client = new RestClient(EndPointUrl + "EntitlementOrderService"); var request = new RestRequest(Method.POST); byte[] credentialBuffer = new System.Text.UTF8Encoding().GetBytes(UserName + ":" + Password); var authorization = "Basic " + Convert.ToBase64String(credentialBuffer); request.AddHeader("cache-control", "no-cache"); request.AddHeader("accept", "application/json"); request.AddHeader("pragma", "no-cache"); request.AddHeader("soapaction", "updateEntitlementLineItem"); request.AddHeader("authorization", authorization); request.AddHeader("content-type", "text/xml; charset=utf-8"); request.AddParameter("text/xml; charset=utf-8", soapXml, ParameterType.RequestBody); IRestResponse response = client.Execute(request); resp.ActivationCode = lineItem.ActivationId; resp.EntitlementId = lineItem.EntitlementId; resp.TotalQty = lineItem.Quantity; resp.EntitlementLineItemId = lineItem.EntitlementLineItemId; resp.ProductRateChargeId = lineItem.ProductRatePlanChargeId; resp.PartNumber = lineItem.PartNumber; return(resp); }
public List <EntitlementResponse> Provision(FulfillOrderRequest request) { var resultEntitlements = new List <EntitlementResponse>(); var entitlementList = flexeraClient.GetEntitlements(request.Account.AccountNumber); List <string> LicenseServers = GetLicensServers(request); var productFamilies = request.Order.LineItems.Select(c => new { c.EntitlementFamily, c.IsSingleSeat, c.DeployToCloudLicenseServer }).Distinct(); foreach (var p in productFamilies) { var ocsProductFamily = p.EntitlementFamily + (p.DeployToCloudLicenseServer ? "_Networked" : "_Local"); if (!string.IsNullOrWhiteSpace(p.EntitlementFamily)) { var orderEntitlement = new OrderEntitlement(); orderEntitlement.EntitlementFamily = p.EntitlementFamily; orderEntitlement.LineItems = GetLineEntitlementLineItems(request, p.EntitlementFamily, p.DeployToCloudLicenseServer); if (orderEntitlement.LineItems.Count > 0) { var qty = orderEntitlement.LineItems[0].Quantity; var entResp = new EntitlementResponse(); //if (p.IsSingleSeat) // entResp.EntitlementId = flexeraClient.CreateEntitlement(request.Account.AccountNumber, p.EntitlementFamily); //else entResp.EntitlementId = GetProductFamilyEntitlementId(entitlementList, request.Account.AccountNumber, request.Account.CompanyName, ocsProductFamily); entResp.EntitlementFamily = p.EntitlementFamily; entResp.EntitlementLineItems = new List <EntitlementLineItemResponse>(); foreach (var li in orderEntitlement.LineItems) { var entLiResp = new EntitlementLineItemResponse(); var existingLineItem = (from i in entitlementList from j in i.LineItems where j.PartNumber == li.PartNumber select j).FirstOrDefault(); if (existingLineItem != null) { existingLineItem.ProductRatePlanChargeId = li.ProductRatePlanChargeId; existingLineItem.Quantity += qty; entLiResp = flexeraClient.Update(existingLineItem); } else { if (request.RequestType == FulfillmentRequestType.Renewal) { if (li.IsPerpertual) { li.Quantity = qty; flexeraClient.Update(li); } else { flexeraClient.ExpireLineItem(entResp.EntitlementId, li.ActivationId); li.Quantity = qty; entLiResp = flexeraClient.AddLineItemToEntitlement(entResp.EntitlementId, li); } } else { li.Quantity = qty; entLiResp = flexeraClient.AddLineItemToEntitlement(entResp.EntitlementId, li); } } if (p.DeployToCloudLicenseServer) { entLiResp.CloudLicenseServerId = li.LicenseManagerId; if (LicenseServers.Count > 0) { var cls = LicenseServers.FirstOrDefault(ls => ls == entLiResp.CloudLicenseServerId); if (string.IsNullOrWhiteSpace(cls)) { cls = LicenseServers.Last(); } flexeraClient.AddEntitlementLineItemToLicenseServer(entLiResp, cls); entLiResp.CloudLicenseServerId = cls; } } entResp.EntitlementLineItems.Add(entLiResp); } resultEntitlements.Add(entResp); } } } request.setDevices(LicenseServers); return(resultEntitlements); }
public EntitlementLineItemResponse AddLineItemToEntitlement(string entitlementId, OrderEntitlementLineItem lineItem) { var lineItemResp = new EntitlementLineItemResponse(); var fnoWs = new v1EntitlementOrderService(); fnoWs.Url = EndPointUrl + "EntitlementOrderService"; fnoWs.PreAuthenticate = true; CredentialCache credCache = new System.Net.CredentialCache(); NetworkCredential netCred = new NetworkCredential(UserName, Password); credCache.Add(new Uri(fnoWs.Url), "Basic", netCred); fnoWs.Credentials = credCache; var entLineItem = new addOnlyEntitlementLineItemRequestType(); entLineItem.opType = Entitlement.CreateOrUpdateOperationType.CREATE_OR_UPDATE; entLineItem.lineItem = new addEntitlementLineItemDataType[] { new addEntitlementLineItemDataType { autoDeploy = true, autoDeploySpecified = true, entitlementIdentifier = new entitlementIdentifierType { primaryKeys = new entitlementPKType { entitlementId = entitlementId } }, lineItems = new createEntitlementLineItemDataType[] { new createEntitlementLineItemDataType { activationId = new idType { autoGenerate = true, autoGenerateSpecified = true }, isPermanent = lineItem.IsPerpertual, isPermanentSpecified = true, orderId = lineItem.ProductRatePlanChargeId, numberOfCopies = lineItem.Quantity.ToString(), partNumber = new partNumberIdentifierType { primaryKeys = new partNumberPKType { partId = lineItem.PartNumber } }, startDate = lineItem.EffectiveDate, expirationDate = lineItem.ExpirationDate, expirationDateSpecified = lineItem.IsPerpertual? false : true } } } }; var resp = fnoWs.createEntitlementLineItem(entLineItem); if (resp.statusInfo.status == Entitlement.StatusType.SUCCESS) { lineItemResp.ActivationCode = resp.responseData[0].lineItemIdentifiers[0].primaryKeys.activationId; lineItemResp.EntitlementId = resp.responseData[0].entitlementIdentifier.primaryKeys.entitlementId; lineItemResp.EntitlementLineItemId = resp.responseData[0].lineItemIdentifiers[0].uniqueId; lineItemResp.PartNumber = lineItem.PartNumber; lineItemResp.ProductRateChargeId = lineItem.ProductRatePlanChargeId; lineItemResp.TotalQty = lineItem.Quantity; } return(lineItemResp); }