Beispiel #1
0
        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);
        }