public string CraftPresent(string presentName) { var workShop = new Workshop(); var targetPresent = presents.FindByName(presentName); var availableDwarfs = dwarfs.Models.Where(x => x.Energy >= 50).OrderByDescending(x => x.Energy); if (availableDwarfs.Count() == 0) { throw new InvalidOperationException("There is no dwarf ready to start crafting!"); } foreach (var dwarf in availableDwarfs) { workShop.Craft(targetPresent, dwarf); if (dwarf.Energy == 0) { dwarfs.Remove(dwarf); } if (targetPresent.IsDone()) { craftedPresents++; break; } } var isDone = "not done"; if (targetPresent.IsDone()) { isDone = "done"; } return($"Present {presentName} is {isDone}."); }
public string CraftPresent(string presentName) { var readyToWorkdwarfs = new List <IDwarf>(); foreach (var dwarf in dwarfs.Models) { if (dwarf.Energy >= 50 && dwarf.Instruments.Any(x => x.IsBroken() == false)) { readyToWorkdwarfs.Add(dwarf); } } if (readyToWorkdwarfs == null) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } present = presents.FindByName(presentName); foreach (var currentDwarf in readyToWorkdwarfs) { //readyToWorkdwarfs = dwarfs.Models.Where(x => x.Energy >= 50); currentDwarf.Work(); var currentInstrument = currentDwarf.Instruments.FirstOrDefault(x => x.IsBroken() == false); //currentInstrument.Use(); if (currentInstrument.IsBroken()) { brokenOnes++; } present.GetCrafted(); workshop.Craft(present, currentDwarf); if (currentDwarf.Energy == 0) { dwarfs.Remove(currentDwarf); } if (present.IsDone()) { countCraftedPresents++; return(string.Format(OutputMessages.PresentIsDone, presentName)); } } return(string.Format(OutputMessages.PresentIsNotDone, presentName)); }
public string CraftPresent(string presentName) { var present = presents.FindByName(presentName); var workers = dwarfs.Models.ToList().Where(x => x.Energy >= 50).OrderByDescending(x => x.Energy).ToList(); while (!present.IsDone()) { if (!workers.Any()) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } var currentDwarf = workers.FirstOrDefault(x => x.Instruments.Any(x => x.IsBroken() == false)); if (currentDwarf == null) { return(string.Format(OutputMessages.PresentIsNotDone, presentName)); } while (currentDwarf.Energy > 0 && !present.IsDone() && currentDwarf.Instruments.FirstOrDefault(x => x.IsBroken() == false) != null) { currentDwarf.Work(); present.GetCrafted(); currentDwarf.Instruments.First(x => x.IsBroken() == false).Use(); } if (currentDwarf.Energy <= 0) { dwarfs.Remove(currentDwarf); workers.RemoveAt(0); } } if (present.IsDone()) { return(string.Format(OutputMessages.PresentIsDone, presentName)); } else { return(string.Format(OutputMessages.PresentIsNotDone, presentName)); } }
public string CraftPresent(string presentName) { List <IDwarf> readyToWorkDwarves = dwarfs.Models.Where(el => el.Energy >= 50).OrderByDescending(el => el.Energy).ToList(); IPresent present = presents.FindByName(presentName); if (readyToWorkDwarves.Count == 0) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } foreach (var dwarf in readyToWorkDwarves) { workshop.Craft(present, dwarf); if (dwarf.Energy == 0) { dwarfs.Remove(dwarf); } if (present.IsDone()) { return(string.Format(OutputMessages.PresentIsDone, presentName)); } } return(string.Format(OutputMessages.PresentIsNotDone, presentName)); }
public string CraftPresent(string presentName) { Workshop workShop = new Workshop(); IPresent present = presents.FindByName(presentName); ICollection <IDwarf> dwarves = dwarfs .Models .Where(dw => dw.Energy >= 50) .OrderByDescending(dw => dw.Energy) .ToList(); if (!dwarves.Any()) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } while (dwarves.Any()) { IDwarf currDwarf = dwarves.First(); workShop.Craft(present, currDwarf); if (!currDwarf.Instruments.Any()) { dwarves.Remove(currDwarf); } if (currDwarf.Energy == 0) { dwarves.Remove(currDwarf); dwarfs.Remove(currDwarf); } if (present.IsDone()) { break; } } return(string.Format(present.IsDone() ? OutputMessages.PresentIsDone : OutputMessages.PresentIsNotDone, presentName)); }