Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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);
        }