public async Task <Result <SearchPersonListResponse> > Handle(SearchPersonListCommand request, CancellationToken cancellationToken) { try { StringBuilder sql = new StringBuilder(); if (!string.IsNullOrWhiteSpace(request.firstName) || !string.IsNullOrWhiteSpace(request.identificationNumber) || !string.IsNullOrWhiteSpace(request.middleName) || !string.IsNullOrWhiteSpace(request.lastName)) { sql.Append("exec pr_OpenDecryptedSession;"); sql.Append("Select top 10.* from PersonListView where (DeleteFlag=0 or DeleteFlag is null) "); } if (!string.IsNullOrWhiteSpace(request.firstName)) { sql.Append($" AND FirstName like \'{request.firstName}%\'"); } if (!string.IsNullOrWhiteSpace(request.middleName)) { sql.Append($" AND MiddleName like \'{request.middleName}%\'"); } if (!string.IsNullOrWhiteSpace(request.lastName)) { sql.Append($" AND LastName like \'{request.lastName}%\'"); } if (request.BirthDate.HasValue) { sql.Append($" and DateOfBirth like \'{request.BirthDate}\'"); } if (!string.IsNullOrWhiteSpace(request.identificationNumber)) { sql.Append($" or PersonIdentifierValue like \'{request.identificationNumber}\'"); sql.Append($" or PatientIdentifierValue like \'{request.identificationNumber}\'"); } sql.Append(";exec [dbo].[pr_CloseDecryptedSession];"); var result = await _unitOfWork.Repository <PersonListView>().FromSql(sql.ToString()); list = result; _unitOfWork.Dispose(); return(Result <SearchPersonListResponse> .Valid(new SearchPersonListResponse() { PersonSearch = list, })); } catch (Exception e) { return(Result <SearchPersonListResponse> .Invalid(e.Message)); } }
public async Task <Result <SearchPersonListResponse> > Handle(SearchPersonListCommand request, CancellationToken cancellationToken) { try { StringBuilder sql = new StringBuilder(); var firstName = string.IsNullOrWhiteSpace(request.firstName) ? "" : request.firstName.Replace("'", "''"); var middleName = string.IsNullOrWhiteSpace(request.middleName) ? "" : request.middleName.Replace("'", "''"); var lastName = string.IsNullOrWhiteSpace(request.lastName) ? "" : request.lastName.Replace("'", "''"); sql.Append("exec pr_OpenDecryptedSession;"); sql.Append("Select top 100.* from PersonListView where (DeleteFlag=0 or DeleteFlag is null) "); if (!string.IsNullOrWhiteSpace(firstName)) { sql.Append($" AND FirstName like \'%{firstName.Trim()}%\'"); } if (!string.IsNullOrWhiteSpace(middleName)) { sql.Append($" AND MiddleName like \'%{middleName.Trim()}%\'"); } if (!string.IsNullOrWhiteSpace(lastName)) { sql.Append($" AND LastName like \'%{lastName.Trim()}%\'"); } if (!string.IsNullOrWhiteSpace(request.identificationNumber)) { sql.Append($" AND IdentifierValue like \'%{request.identificationNumber.Trim()}%\'"); } if (!string.IsNullOrWhiteSpace(request.MobileNumber)) { sql.Append($" AND MobileNumber like \'%{request.MobileNumber.Trim()}%\'"); } if (request.BirthDate.HasValue) { sql.Append($" AND DateOfBirth = \'{request.BirthDate}\'"); } if (request.Sex.HasValue) { sql.Append($" AND Sex = \'{request.Sex}\'"); } sql.Append(";exec [dbo].[pr_CloseDecryptedSession];"); var result = await _unitOfWork.Repository <PersonListView>().FromSql(sql.ToString()); result.ForEach(item => item.CalculateYourAge()); _unitOfWork.Dispose(); if (request.Age.HasValue) { result = result.FindAll(x => x.AgeNumber == request.Age.Value); } return(Result <SearchPersonListResponse> .Valid(new SearchPersonListResponse() { PersonSearch = result })); } catch (Exception e) { Log.Error($"Error searching persons, exception message: {e.Message}, innerexception: {e.InnerException}"); return(Result <SearchPersonListResponse> .Invalid($"Error searching persons, exception message: {e.Message}")); } }