private string processColdRules(string temperatureType, string commandList) { List <string> finalResponseList = new List <string>(); string response = string.Empty; var commands = commandList.Split(','); if (commands?.Length > 0) { if (commands[0] != "8") { return(ErrorConstants.FAILED); } if (commands.Distinct().Count() < commands.Length) { return(generateResponse(temperatureType, commands.Distinct().ToArray(), ref finalResponseList, ErrorConstants.DUPLICATE_COMMAND)); } // check whether the command ids are not in the golden data HashSet <String> masterIds = new HashSet <string>(MasterData.getData().Select(s => s.Id.Trim())); var results = commands.Where(x => !masterIds.Contains(x.Trim())).ToList(); if (results != null && results.Count() > 0) { return(generateResponse(temperatureType, commands, ref finalResponseList, ErrorConstants.INVALID_COMMAND)); } // put on socks or put on jacket - send fail if (commands.Contains("6") && commands.Contains("1")) { var pantsIndex = Array.FindIndex(commands, row => row == "3"); var footwearIndex = Array.FindIndex(commands, row => row == "1"); if (pantsIndex > footwearIndex) { return(generateResponse(temperatureType, commands, ref finalResponseList, ErrorConstants.SOCKS_MUST_BE_PUT_ON)); } } if (commands.Contains("3") && commands.Contains("1")) { var socksIndex = Array.FindIndex(commands, row => row == "3"); var footWearIndex = Array.FindIndex(commands, row => row == "1"); if (socksIndex > footWearIndex) { return(generateResponse(temperatureType, commands, ref finalResponseList, ErrorConstants.PANTS_MUSTBEPUT_BEFORE_FOOTWEAR)); } } if (commands.Contains("4")) { var shirtIndex = Array.FindIndex(commands, row => row == "4"); if (commands.Contains("2")) { var headWearIndex = Array.FindIndex(commands, row => row == "2"); if (shirtIndex > headWearIndex) { return(generateResponse(temperatureType, commands, ref finalResponseList, ErrorConstants.SHIRT_MUSTBEPUT_BEFORE_HEADWEAR)); } var jacketIndex = Array.FindIndex(commands, row => row == "5"); if (shirtIndex > jacketIndex) { return(generateResponse(temperatureType, commands, ref finalResponseList, ErrorConstants.SHIRT_MUSTBEPUT_BEFORE_JACKET)); } } } response = generateResponse(temperatureType, commands, ref finalResponseList); } return(response); }