예제 #1
0
        /// <summary>
        /// Gets the rules of the server
        /// </summary>
        /// <returns>RuleResponse containing all rules as a Dictionary</returns>
        /// <exception cref="SourceQueryException"></exception>
        public RuleResponse GetRules(int maxRetries = 10)
        {
            try
            {
                var byteReader = RequestDataFromServer(Constants.A2S_RULES_CHALLENGE_REQUEST, out byte header, maxRetries, true);
                if (!header.Equals(Constants.A2S_RULES_RESPONSE))
                {
                    throw new ArgumentException("Response was no rules response.");
                }

                RuleResponse ruleResponse = new RuleResponse()
                {
                    Header = header, Rules = new Dictionary <string, string>()
                };
                int rulecount = byteReader.GetShort();
                for (int i = 1; i <= rulecount; i++)
                {
                    ruleResponse.Rules.Add(byteReader.GetString(), byteReader.GetString());
                }

                return(ruleResponse);
            }
            catch (Exception ex)
            {
                throw new SourceQueryException("Could not gather Rules", ex);
            }
        }
        private SonarQubeRule ToSonarQubeRule(RuleResponse response,
                                              IEnumerable <QualityProfileResponse> activeQualityProfiles)
        {
            var isActive = activeQualityProfiles.Any();

            SonarQubeIssueSeverity      severity;
            Dictionary <string, string> parameters;

            if (isActive)
            {
                var activeQP = activeQualityProfiles.First();
                severity = SonarQubeIssueSeverityConverter.Convert(activeQP.Severity);

                // Optimisation: avoid creating objects if there are no parameters
                parameters = activeQP.Parameters.Length > 0 ?
                             activeQP.Parameters.ToDictionary(p => p.Key, p => p.Value) : null;
            }
            else
            {
                severity   = SonarQubeIssueSeverity.Unknown;
                parameters = null;
            }

            var issueType = SonarQubeIssueTypeConverter.Convert(response.Type);

            return(new SonarQubeRule(GetRuleKey(response.Key), response.RepositoryKey, isActive, severity, parameters, issueType));
        }
예제 #3
0
        public void Calling_process_action_with_a_process_rule_response_request_for_an_in_flight_contract_with_no_triggered_actions_should_progress_the_trade_to_approved()
        {
            var processor          = GetProcessor(true);
            var currentContract    = new Contract();
            var contractRequest    = ProcessContractRequest.New(currentContract);
            var trackingRefernence = contractRequest.Payload.TrackingReference;

            var processResponse = processor.ProcessAction(contractRequest).Result;

            AwaitAssert(() => {
                Assert.IsNotNull(_contractPersistence.GetContractTrackingReference(trackingRefernence));
                Assert.IsTrue(_responseObserver.Responses.Any(r => (r.Request as IActionRequest)?.Context.OriginatingRequest == contractRequest && r.GetStateChange().NewState.CurrentState == "IsPendingApproval"));
            },
                        assertTimeout, assertInterval);

            var ruleResponse = new RuleResponse {
                TriggeredActions = new List <TriggeredAction>()
            };
            var ruleRequest = ProcessRuleResponseRequest.New(currentContract, ruleResponse, trackingRefernence);

            processResponse = processor.ProcessAction(ruleRequest).Result;

            AwaitAssert(() => {
                Assert.IsTrue(_responseObserver.Responses.Any(r => (r.Request as IActionRequest)?.Context.OriginatingRequest == contractRequest && r.GetStateChange().NewState.CurrentState == "IsNotPendingResubmit"));
            },
                        assertTimeout, assertInterval);
        }
        public void ProcessLearningToSkiOrderTest()
        {
            OrderDetails od = new OrderDetails();

            od.OrderType = OrderType.LEARNING_TO_SKI;
            od.UserEmail = "*****@*****.**";
            HandleOrder  obj = new HandleOrder();
            RuleResponse upgradeMemberShipOrder = obj.handleOrder(od);

            Assert.AreNotEqual(null, od);
            Assert.AreEqual(true, upgradeMemberShipOrder.LearnToSki);
        }
        public void ProcessUpgradeMembershipOrderTest()
        {
            OrderDetails od = new OrderDetails();

            od.OrderType = OrderType.UPGRADE_MEMBERSHIP;
            od.UserEmail = "*****@*****.**";
            HandleOrder  obj = new HandleOrder();
            RuleResponse upgradeMemberShipOrder = obj.handleOrder(od);

            Assert.AreNotEqual(null, od);
            Assert.AreEqual(true, upgradeMemberShipOrder.UpgradeMembership);
        }
        public void ProcessBookOrderTest()
        {
            OrderDetails od = new OrderDetails();

            od.OrderType = OrderType.BOOK;
            od.UserEmail = "*****@*****.**";
            HandleOrder  obj         = new HandleOrder();
            RuleResponse bookOrdered = obj.handleOrder(od);

            Assert.AreNotEqual(null, od);
            Assert.AreEqual(true, bookOrdered.BookOrder);
        }
        public void ProcessPhysicalProductOrderComissionSentTest()
        {
            OrderDetails od = new OrderDetails();

            od.OrderType    = OrderType.PHYSICAL_PRODUCT;
            od.UserEmail    = "*****@*****.**";
            od.AgentContact = "myAgent";
            HandleOrder  obj = new HandleOrder();
            RuleResponse physicalProductOrder = obj.handleOrder(od);

            Assert.AreNotEqual(null, od);
            Assert.AreEqual(true, physicalProductOrder.ComissionCredited);
        }
예제 #8
0
        public RuleResponse Evaluate(Card active, Card played)
        {
            RuleResponse response = new RuleResponse();

            if (active.Suit == played.Suit || active.Value == played.Value)
            {
                response.Response = RuleResponse.ResponseType.Legal;
                response.Message  = "The move is legal";
            }
            else
            {
                response.Response = RuleResponse.ResponseType.Illegal;
                response.Message  = "Incorrect play";
            }

            return(response);
        }
예제 #9
0
        public void Calling_process_action_with_a_process_workflow_response_request_for_an_in_flight_contract_with_triggered_actions_should_leave_the_contract_pending_approval_unless_all_actions_are_approved()
        {
            var processor          = GetProcessor(true);
            var currentContract    = new Contract();
            var contractRequest    = ProcessContractRequest.New(currentContract);
            var trackingRefernence = contractRequest.Payload.TrackingReference;

            var processResponse = processor.ProcessAction(contractRequest).Result;

            AwaitAssert(() => {
                Assert.IsNotNull(_contractPersistence.GetContractTrackingReference(trackingRefernence));
                Assert.IsTrue(_responseObserver.Responses.Any(r => (r.Request as IActionRequest)?.Context.OriginatingRequest == contractRequest && r.GetStateChange().NewState.CurrentState == "IsPendingApproval"));
            },
                        assertTimeout, assertInterval);

            var ruleResponse = new RuleResponse
            {
                TriggeredActions = new List <TriggeredAction>()
                {
                    new TriggeredAction {
                        ActionReference = Guid.NewGuid()
                    },
                    new TriggeredAction {
                        ActionReference = Guid.NewGuid()
                    }
                }
            };
            var ruleRequest = ProcessRuleResponseRequest.New(currentContract, ruleResponse, trackingRefernence);

            processResponse = processor.ProcessAction(ruleRequest).Result;

            AwaitAssert(() => {
                Assert.IsTrue(_responseObserver.Responses.Any(r => (r.Request as IActionRequest)?.Context.OriginatingRequest == ruleRequest && r.GetStateChange().NewState.CurrentState == "IsPendingApproval"));
            },
                        assertTimeout, assertInterval);

            var workflowResponse = new WorkflowResponse
            {
                ActionReference = ruleResponse.TriggeredActions.First().ActionReference,
                ActionState     = Domain.ActionState.Approved
            };
            var workflowRequest = ProcessWorkflowResponseRequest.New(currentContract, workflowResponse, trackingRefernence);

            processResponse = processor.ProcessAction(workflowRequest).Result;
        }
예제 #10
0
        public async Task <RuleResponse> DeleteAsync(int code)
        {
            try
            {
                var exist = await _ruleRepository.FindByIdAsync(code);

                RuleResponse response = exist == null ? new RuleResponse($"Rule {code} not found") : new RuleResponse(exist);

                _ruleRepository.Remove(exist);
                await _unitOfWork.CompleteAsync();

                return(response);
            }
            catch (Exception e)
            {
                return(new RuleResponse($"An error occurred when deleting the rule: { e.Message }"));
            }
        }
        /// <summary>
        /// Checks the new request.
        /// </summary>
        /// <param name="requestId">The request identifier.</param>
        /// <param name="briefingRequest">The briefing request.</param>
        /// <returns>Rule Response Message</returns>
        public RuleResponse CheckNewRequest(decimal requestId, BriefingRequestViewModel briefingRequest)
        {
            bool         duplicateDefaultAddress = false;
            RuleResponse response = new RuleResponse()
            {
                Result = true
            };

            // Process for assign error error
            if (duplicateDefaultAddress)
            {
                ///// use  common repository class BriefingRequestCommonRepository to  get data
                //    response.Result = false;
                //    response.RuleErrors.ValidationHeaderMessage = "Duplicate Default Customer Address";
                //    response.RuleErrors.TryAdd("CustomerAddress", new List<string> { "Customer default address had been modified by other users and only one address can be default, please refresh and try again" });
            }

            return(response);
        }
예제 #12
0
        public async Task <RuleResponse> UpdateAsync(int code, Rule rule)
        {
            try
            {
                var exist = await _ruleRepository.FindByIdAsync(code);

                RuleResponse response = exist == null ? new RuleResponse($"Rule {code} not found") : new RuleResponse(exist);

                exist.Type = rule.Type != "" ? rule.Type : exist.Type;

                exist.Description = rule.Description != "" ? rule.Description : exist.Description;

                _ruleRepository.Update(exist);
                await _unitOfWork.CompleteAsync();

                return(response);
            }
            catch (Exception e)
            {
                return(new RuleResponse($"An error occurred when updating the rule: { e.Message }"));
            }
        }
예제 #13
0
        /// <summary>
        /// The ButtonAdd_Click method.
        /// </summary>
        /// <param name="sender">The <paramref name="sender"/> parameter.</param>
        /// <param name="args">The <paramref name="args"/> parameter.</param>
        private void ButtonAdd_Click(object sender, EventArgs args)
        {
            var lvItem          = new ListViewItem(string.Empty);
            var newRuleResponse = new RuleResponse();

            if (rbCustomScript.Checked)
            {
                newRuleResponse.IsCustomScript = true;
                newRuleResponse.Script         = tbxScript.Text;
                lvItem.SubItems.Add($"Custom Script: {newRuleResponse.Script}");
            }
            else
            {
                newRuleResponse.IsCustomScript = false;
                newRuleResponse.SituationType  = tbxSituationType.Text;
                if (chbxSeverity.Checked)
                {
                    newRuleResponse.UsedSourceEventFields.Add("severity");
                }

                if (chbxSourceDeviceId.Checked)
                {
                    newRuleResponse.UsedSourceEventFields.Add("source_device_id");
                }

                if (chbxProperties.Checked)
                {
                    newRuleResponse.UsedSourceEventFields.Add("properties");
                }

                lvItem.SubItems.Add($"Generate Event: {newRuleResponse.SituationType}");
            }

            lvItem.Tag = newRuleResponse;
            ResponseListView.Items.Add(lvItem);
        }
 public static ProcessRuleResponseRequest New(Contract contract, RuleResponse ruleResponse, Guid trackingReference) => new ProcessRuleResponseRequest(new RuleResponseProcessingPayload(contract, ruleResponse, trackingReference));
예제 #15
0
        static void Main(string[] args)
        {
            //Initialize Samart API using clientcode and password.

            string Client_code  = ""; //YOUR CLIENT CODE
            string Password     = ""; //YOUR PASSWORD
            string api_key      = "";
            string JWTToken     = ""; // optional
            string RefreshToken = ""; // optional

            SmartApi connect = new SmartApi(api_key, JWTToken, RefreshToken);

            OutputBaseClass obj = new OutputBaseClass();

            //Login by client code and password
            obj = connect.GenerateSession(Client_code, Password);
            AngelToken agr = obj.TokenResponse;

            Console.WriteLine("------GenerateSession call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(agr));
            Console.WriteLine("----------------------------------------------");

            //Get Token
            obj = connect.GenerateToken();
            agr = obj.TokenResponse;

            Console.WriteLine("------GenerateToken call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(agr));
            Console.WriteLine("----------------------------------------------");

            //Get Profile
            obj = connect.GetProfile();
            GetProfileResponse gp = obj.GetProfileResponse;

            Console.WriteLine("------GetProfile call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(gp));
            Console.WriteLine("----------------------------------------------");

            //Place Order
            OrderInfo ord = new OrderInfo();

            ord.variety         = Constants.VARIETY_NORMAL;
            ord.tradingsymbol   = "SBIN-EQ";
            ord.symboltoken     = "3045";
            ord.transactiontype = Constants.TRANSACTION_TYPE_BUY;
            ord.exchange        = Constants.EXCHANGE_NSE;
            ord.ordertype       = Constants.ORDER_TYPE_LIMIT;
            ord.producttype     = Constants.PRODUCT_TYPE_INTRADAY;
            ord.duration        = Constants.VALIDITY_DAY.ToString();
            ord.price           = "350.00";
            ord.squareoff       = "0";
            ord.stoploss        = "0";
            ord.quantity        = "10";
            ord.triggerprice    = "0"; //OPTIONAL PARAMETER
            //ord.triggerprice = "350";  //OPTIONAL PARAMETER

            obj = connect.placeOrder(ord);
            OrderResponse Ores = obj.PlaceOrderResponse;

            Console.WriteLine("------placeOrder call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(Ores));
            Console.WriteLine("----------------------------------------------");

            //Modify Order
            OrderInfo mord = new OrderInfo();

            mord.orderid         = "211029001245777";
            mord.variety         = Constants.VARIETY_NORMAL;
            mord.tradingsymbol   = "SBIN-EQ";
            mord.symboltoken     = "3045";
            mord.transactiontype = Constants.TRANSACTION_TYPE_BUY;
            mord.exchange        = Constants.EXCHANGE_NSE;
            mord.ordertype       = Constants.ORDER_TYPE_LIMIT;
            mord.producttype     = Constants.PRODUCT_TYPE_DELIVERY;
            mord.duration        = Constants.VALIDITY_DAY.ToString();
            mord.price           = "340.00";
            mord.squareoff       = "0";
            mord.stoploss        = "0";
            mord.quantity        = "20";
            mord.triggerprice    = "0"; //OPTIONAL PARAMETER
                                        //mord.triggerprice = "357";  //OPTIONAL PARAMETER

            obj = connect.modifyOrder(mord);
            OrderResponse mOres = obj.ModifyOrderResponse;

            Console.WriteLine("------modifyOrder call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(mOres));
            Console.WriteLine("----------------------------------------------");

            //cancel Order
            OrderInfo ord2 = new OrderInfo();

            ord2.orderid = "211029001245777";
            ord2.variety = Constants.VARIETY_NORMAL;

            obj = connect.cancelOrder(ord2);
            OrderResponse cOrs = obj.CancelOrderResponse;

            Console.WriteLine("------cancelOrder call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(cOrs));
            Console.WriteLine("----------------------------------------------");


            //get Order Book
            obj = connect.getOrderBook();
            GetOrderBookResponse book = obj.GetOrderBookResponse;

            Console.WriteLine("------getOrderBook call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(book));
            Console.WriteLine("----------------------------------------------");

            //get Trade Book
            obj = connect.getTradeBook();
            GetTradeBookResponse trade = obj.GetTradeBookResponse;

            Console.WriteLine("------getTradeBook call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(trade));
            Console.WriteLine("----------------------------------------------");

            // Get Get LTP Data
            LTPDataRequest lreq = new LTPDataRequest();

            lreq.exchange      = Constants.EXCHANGE_NSE;
            lreq.symboltoken   = "3045";
            lreq.tradingsymbol = "SBIN-EQ";
            obj = connect.GetLTPData(lreq);
            GetLTPDataResponse ltp = obj.GetLTPDataResponse;

            Console.WriteLine("------GetLTPData call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(ltp));
            Console.WriteLine("----------------------------------------------");

            //get Holding
            obj = connect.getHolding();
            GetHoldingResponse holding = obj.GetHoldingResponse;

            Console.WriteLine("------getHolding call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(holding));
            Console.WriteLine("----------------------------------------------");

            //get Position
            obj = connect.getPosition();
            GetPositionResponse position = obj.GetPositionResponse;

            Console.WriteLine("------getPosition call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(position));
            Console.WriteLine("----------------------------------------------");

            //Convert Position
            ConvertPositionRequest req = new ConvertPositionRequest();

            req.exchange        = Constants.EXCHANGE_NSE.ToString();
            req.oldproducttype  = Constants.PRODUCT_TYPE_DELIVERY;
            req.newproducttype  = Constants.PRODUCT_TYPE_MARGIN;
            req.tradingsymbol   = "SBIN-EQ";
            req.transactiontype = Constants.TRANSACTION_TYPE_BUY;
            req.quantity        = 1;
            req.type            = Constants.VALIDITY_DAY;

            obj = connect.convertPosition(req);
            PositionConversionResponse cc = obj.PositionConversionResponse;

            Console.WriteLine("------convertPosition call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(cc));
            Console.WriteLine("----------------------------------------------");

            //get RMS
            obj = connect.getRMS();
            GetRMSLimitResponse gmres = obj.GetRMSLimitResponse;

            Console.WriteLine("------getRMS call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(gmres));
            Console.WriteLine("----------------------------------------------");

            //Create Rule
            CreateRuleRequest crreq = new CreateRuleRequest();

            //crreq.id = 0;
            crreq.tradingsymbol   = "SBIN-EQ";
            crreq.symboltoken     = "3045";
            crreq.exchange        = Constants.EXCHANGE_NSE;
            crreq.transactiontype = Constants.TRANSACTION_TYPE_BUY;
            crreq.producttype     = Constants.PRODUCT_TYPE_MARGIN;
            crreq.price           = "350";
            crreq.qty             = "10";
            crreq.triggerprice    = "370";
            crreq.disclosedqty    = "10";
            crreq.timeperiod      = "20";

            obj = connect.CreateRule(crreq);
            RuleResponse rr = obj.CreateRuleResponse;

            Console.WriteLine("------CreateRule call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(rr));
            Console.WriteLine("----------------------------------------------");

            //Rule Details
            string RuleID = "1000118";

            obj = connect.ruleDetails(RuleID);
            RuleDetailsResponse rd = obj.RuleDetailsResponse;

            Console.WriteLine("------ruleDetails call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(rd));
            Console.WriteLine("----------------------------------------------");

            //Modify Rule
            CreateRuleRequest crreq2 = new CreateRuleRequest();

            crreq2.id              = "1000118";
            crreq2.tradingsymbol   = "SBIN-EQ";
            crreq2.symboltoken     = "3045";
            crreq2.exchange        = Constants.EXCHANGE_NSE;
            crreq2.transactiontype = Constants.TRANSACTION_TYPE_BUY;
            crreq2.producttype     = Constants.PRODUCT_TYPE_MARGIN;
            crreq2.price           = "350";
            crreq2.qty             = "10";
            crreq2.triggerprice    = "360";
            crreq2.disclosedqty    = "10";
            crreq2.timeperiod      = "20";

            obj = connect.modifyRule(crreq2);
            RuleResponse rm = obj.ModifyRuleResponse;

            Console.WriteLine("------modifyRule call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(rm));
            Console.WriteLine("----------------------------------------------");

            //Cancel Rule
            CancelRuleRequest creq = new CancelRuleRequest();

            creq.id          = "1000117";
            creq.symboltoken = "3045";
            creq.exchange    = Constants.EXCHANGE_NSE;

            obj = connect.cancelRule(creq);
            RuleResponse rc = obj.CancelRuleResponse;

            Console.WriteLine("------cancelRule call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(rc));
            Console.WriteLine("----------------------------------------------");

            //Rule List
            RuleListRequest rreq = new RuleListRequest();

            rreq.status = new List <string>();
            rreq.status.Add("NEW");
            rreq.status.Add("CANCELLED");
            rreq.page  = 1;
            rreq.count = 10;

            obj = connect.ruleList(rreq);
            RuleListResponse rl = obj.RuleListResponse;

            Console.WriteLine("------ruleList call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(rl));
            Console.WriteLine("----------------------------------------------");

            //Get Candle Data
            CandleRequest cdreq = new CandleRequest();

            cdreq.exchange    = Constants.EXCHANGE_NSE;
            cdreq.symboltoken = "3045";
            cdreq.interval    = Constants.INTERVAL_MINUTE;
            cdreq.fromdate    = "2021-02-08 09:00";
            cdreq.todate      = "2021-02-08 09:15";

            obj = connect.GetCandleData(cdreq);
            CandleDataResponse cd = obj.GetCandleDataResponse;

            Console.WriteLine("------GetCandleData call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(cd));
            Console.WriteLine("----------------------------------------------");

            //LogOut
            obj = connect.LogOut(Client_code);
            LogOutResponse lg = obj.LogOutResponse;

            Console.WriteLine("------LogOut call output-------------");
            Console.WriteLine(JsonConvert.SerializeObject(lg));
            Console.WriteLine("----------------------------------------------");
        }
예제 #16
0
 public RuleResponseProcessingPayload(Contract contract, RuleResponse ruleResponse, Guid trackingReference)
     : base(contract, trackingReference)
 {
     RuleResponse = ruleResponse;
 }
        async Task <IEnumerable <RuleResponse> > getRulesForParameters(int[] parameterIds)
        {
            var rules   = new List <RuleResponse>();
            var ruleIds = new List <int>();

            //get all parameters
            var allDisallowedParameters = new List <DisallowedParameter>();

            foreach (var parameterId in parameterIds)
            {
                var fetchedParameters = await _context.DisallowedParameter
                                        .Where(rule => rule.ParameterId == parameterId)
                                        .ToListAsync();

                allDisallowedParameters.AddRange(fetchedParameters);
            }

            //get all rule names
            var allDisallowedRuleNames = new List <DisallowedRule>();

            foreach (var disallowedParameter in allDisallowedParameters)
            {
                var fetchedRuleNames = await _context.DisallowedRule
                                       .Where(rule => rule.ObjectId == disallowedParameter.DisallowedRuleId)
                                       .ToListAsync();

                allDisallowedRuleNames.AddRange(fetchedRuleNames);
            }

            //get all rule values
            var allDisallowedRuleValues = new List <DisallowedValue>();

            foreach (var disallowedParameter in allDisallowedParameters)
            {
                var fetchedRuleValues = await _context.DisallowedValue
                                        .Where(value => value.DisallowedParameterId == disallowedParameter.ParameterId)
                                        .ToListAsync();

                allDisallowedRuleValues.AddRange(fetchedRuleValues);
            }

            //remove duplicates
            var disallowedRuleNames = allDisallowedRuleNames.Distinct().ToList();

            //add rules
            foreach (var disallowedRule in disallowedRuleNames)
            {
                //create value list
                var incompatableValues = new List <ParameterValueResponse>();

                //get all parameter with rule id
                var ruleParameters = allDisallowedParameters.FindAll(p => p.DisallowedRuleId == disallowedRule.ObjectId);

                foreach (var param in ruleParameters)
                {
                    //get all values with param ids
                    var ruleValues = allDisallowedRuleValues.FindAll(v => v.DisallowedParameterId == param.ParameterId);
                    System.Console.WriteLine("{0}, param {1}, have {2} conflicting values", disallowedRule.Name, param.ParameterId, ruleValues.Count);

                    foreach (var value in ruleValues)
                    {
                        if (!incompatableValues.Exists(v => v.id == value.ParameterValueId))
                        {
                            //add values
                            var valueResponse = new ParameterValueResponse {
                                id          = value.ParameterValueId,
                                parameterId = value.DisallowedParameterId,
                                name        = null
                            };

                            incompatableValues.Add(valueResponse);
                        }
                    }
                }

                //map rules
                var rule = new RuleResponse {
                    id   = disallowedRule.ObjectId,
                    name = disallowedRule.Name,
                    incompatableValues = incompatableValues.ToArray(),
                };

                rules.Add(rule);
                System.Console.WriteLine("");
            }
            return(rules);
        }