private void ValidateAction(IExcangeAction action) { int animalCount = GetAnimalCount(action.AnimalFrom); if (animalCount < action.AnimalFromCount) { throw new Exception(string.Format("Action can not be performed. Count of {1} is less then {2}", action.AnimalFrom.Name, animalCount)); } }
public bool Validate(IExcangeAction action) { return((action != null) && TryGetAction(action.AnimalFrom, action.AnimalFromCount, action.AnimalTo, out IExcangeAction newAction, out string errorMessage) && (action.AnimalToCount == newAction.AnimalToCount)); }
public bool TryGetAction(IAnimal animalFrom, int animalFromCount, IAnimal animalTo, out IExcangeAction action, out string errorMessage) { action = null; errorMessage = ""; if ((animalFrom.IsWild) || (animalTo.IsWild)) { errorMessage = "animals can not be wild"; return(false); } int actionToCount = (animalFrom.BasePoints * animalFromCount / animalTo.BasePoints) == 0 ? 0 : 1; int actionFromCount = actionToCount * animalTo.BasePoints / animalFrom.BasePoints; if (actionToCount > 0)//!!YH { action = new ExcangeAction(animalFrom, actionFromCount, animalTo, actionToCount); return(true); } else { errorMessage = "from count can not be transformated into to"; return(false); } }