public ActionResult Finish()
        {
            ScenarioModel  scenario = this.TempData["Scenario"] != null ? (ScenarioModel)this.TempData["Scenario"] : null;
            List <Witness> witness  = this.TempData["Witness"] != null ? (List <Witness>) this.TempData["Witness"] : null;
            TheEndModel    theEnd   = new TheEndModel();

            try
            {
                theEnd = ChallengeSolverBusiness.GetInstance().FindWhoIsTheKiller(scenario, witness);
            }
            catch (Exception e)
            {
                Error("Assassino não encontrado!");
                return(View(theEnd));
            }

            if (theEnd == null || theEnd.Killers == null || theEnd.Killers.Count == 0)
            {
                Error("Assassino não encontrado!");
            }
            else
            {
                Success("Assassino(s) encontrado(s)!");
            }


            return(View(theEnd));
        }
        public TheEndModel FindWhoIsTheKiller(ScenarioModel scenario, List <Witness> lWitness)
        {
            if (scenario == null || scenario.Guns.Count == 0 || scenario.Suspects.Count == 0 || scenario.Locals.Count == 0)
            {
                return(null);
            }

            TheEndModel theEnd = new TheEndModel();

            List <Killer> lKillers = new List <Killer>();

            detective.Guesses = new List <Killer>();

            for (int i = 0; i < lWitness.Count(); i++)
            {
                killer = null;
                FindTheKiller(0, 0, 0, lWitness[i], scenario);
                lKillers.Add(killer);
            }

            theEnd.Killers   = lKillers;
            theEnd.Detective = detective;
            return(theEnd);
        }