public CircleNotFoundException(CircleId id, string message) : base(message) { Id = id.Value; }
public CircleNotFoundException(CircleId id) { Id = id.Value; }
public CircleGetCandidatesResult GetCandidates(CircleGetCandidatesCommand command) { var circleId = new CircleId(command.CircleId); var circle = circleRepository.Find(circleId); if (circle == null) { throw new CircleNotFoundException(circleId); } using (var sqlCommand = provider.Connection.CreateCommand()) { var parameterNames = circle.Members.Select((_, i) => "@member" + i).ToList(); var selectQuery = new StringBuilder(@" SELECT * FROM users"); var appendWhere = false; if (circle.ExistsOwner()) { selectQuery.Append(" WHERE id <> @ownerId"); appendWhere = true; } if (parameterNames.Any()) { var inParameters = string.Join(",", parameterNames); var inPhrase = new StringBuilder(); if (appendWhere) { inPhrase.Append(" AND"); } inPhrase.Append($" id NOT IN ({inParameters})"); if (!appendWhere) { selectQuery.Append(" WHERE"); appendWhere = true; } selectQuery.Append(inPhrase); } selectQuery.Append(@" ORDER BY id OFFSET @skip ROWS FETCH NEXT @size ROWS ONLY "); sqlCommand.CommandText = selectQuery.ToString(); if (circle.ExistsOwner()) { sqlCommand.Parameters.Add(new SqlParameter("@ownerId", circle.Owner.Value)); } foreach (var tpl in circle.Members.Zip(parameterNames, (memberId, parameter) => new { memberId, parameter })) { sqlCommand.Parameters.Add(new SqlParameter(tpl.parameter, tpl.memberId.Value)); } var page = command.Page; var size = command.Size; sqlCommand.Parameters.Add(new SqlParameter("@skip", (page - 1) * size)); sqlCommand.Parameters.Add(new SqlParameter("@size", size)); using (var reader = sqlCommand.ExecuteReader()) { var members = new List <UserData>(); while (reader.Read()) { var id = (string)reader["id"]; var name = (string)reader["name"]; var data = new UserData(id, name); members.Add(data); } return(new CircleGetCandidatesResult(members)); } } }
public CircleMembers(CircleId id, User owner, List <User> members) { Id = id; this.owner = owner; this.members = members; }
public Circle Find(CircleId id) { throw new System.NotImplementedException(); }
public void Id(CircleId id) { this.id = id; }
public CircleMembers(CircleId id, User owner, List <User> members) { Id = id; _owner = owner; _members = members; }