private bool ValidateInquireDoNotCallRequest(InquireDoNotCallRequest request, out string errorMessage) { bool validInput = false; errorMessage = string.Empty; StringBuilder error = new StringBuilder(); if (request == null) { error.AppendLine("Request is null"); } else { _commonFacade = new CommonFacade(); bool hasAtLeastOneCriteria = request.CisId > 0 || !string.IsNullOrWhiteSpace(request.CardNo) || !string.IsNullOrWhiteSpace(request.SubscriptionTypeCode) || !string.IsNullOrWhiteSpace(request.ProductCode) || !string.IsNullOrWhiteSpace(request.PhoneNo) || !string.IsNullOrWhiteSpace(request.Email); if (!hasAtLeastOneCriteria) { error.AppendLine("Must insert at least one search criteria"); } else { // Card Info bool hasCardNo = !string.IsNullOrWhiteSpace(request.CardNo); bool hasSubscriptionType = !string.IsNullOrWhiteSpace(request.SubscriptionTypeCode); bool incompleteCardInfo = hasCardNo ^ hasSubscriptionType;// exclusive-or: ONLY ONE condition is true if (incompleteCardInfo) { error.AppendLine("Incomplete card info: missing CardNo or SubscriptionTypeCode"); } // Total Limit int doNotCallUploadLimit = _commonFacade.GetDoNotCallUploadTotalRecord(); bool validLimitNumber = request.DataLimit >= 1 && request.DataLimit <= doNotCallUploadLimit; if (!validLimitNumber) { error.AppendLine($"Limit must be between 1 and {doNotCallUploadLimit.FormatNumber()} records"); } validInput = validLimitNumber && !incompleteCardInfo; } } if (!validInput) { errorMessage = error.ToString(); } return(validInput); }