public virtual bool RemoveCook(AbstractCook cook)
        {
            if (cook == null)
            {
                throw new ArgumentNullException(nameof(cook));
            }

            if (!_cooks.Remove(cook))
            {
                return(false);
            }

            CookRemoved(this, cook);

            return(true);
        }
        public virtual void AddCook(AbstractCook cook)
        {
            if (cook == null)
            {
                throw new ArgumentNullException(nameof(cook));
            }

            if (_cooks.Contains(cook))
            {
                throw new ArgumentException("Cook already contained in cooks list.", nameof(cook));
            }

            _cooks.Add(cook);

            CookAdded(this, cook);
        }
 private void OnCookRemoved(object sender, AbstractCook cook) => cook.OrderCompleted -= OnOrderCompleted;
 private void OnCookAdded(object sender, AbstractCook cook) => cook.OrderCompleted   += OnOrderCompleted;