public IEnumerable <string> Errors(ChatMessage chat) { if (_checkList.HasFlag(CheckList.UserId) && chat.UserGuid != default) { yield return("UserId should exist."); } if (_checkList.HasFlag(CheckList.Content) && string.IsNullOrEmpty(chat.Content)) { yield return("Content can't be empty or null."); } if (_checkList.HasFlag(CheckList.ValidUserName) && !IsUsernameValid(chat.UserName)) { yield return("Invalid username format."); } if (_checkList.HasFlag(CheckList.ValidRegistration)) { bool isValidRegistration = chat.Command == Command.REQ_REGISTER_USERNAME && IsUsernameValid(chat.UserName); if (!isValidRegistration) { yield return("Invalid registration command"); } } if (_checkList.HasFlag(CheckList.ValidExit)) { bool isValidExit = chat.Command == Command.REQ_END_SESSION && IsUsernameValid(chat.UserName); if (!isValidExit) { yield return("Invalid exit command"); } } yield break; }