get all accounts endpoint added
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using WatchIt.Common.Query;
|
||||
|
||||
namespace WatchIt.Common.Model.Accounts;
|
||||
|
||||
public class AccountQueryParameters : QueryParameters<AccountResponse>
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
[FromQuery(Name = "username")]
|
||||
public string? Username { get; set; }
|
||||
|
||||
[FromQuery(Name = "email")]
|
||||
public string? Email { get; set; }
|
||||
|
||||
[FromQuery(Name = "description")]
|
||||
public string? Description { get; set; }
|
||||
|
||||
[FromQuery(Name = "gender_id")]
|
||||
public short? GenderId { get; set; }
|
||||
|
||||
[FromQuery(Name = "last_active")]
|
||||
public DateOnly? LastActive { get; set; }
|
||||
|
||||
[FromQuery(Name = "last_active_from")]
|
||||
public DateOnly? LastActiveFrom { get; set; }
|
||||
|
||||
[FromQuery(Name = "last_active_to")]
|
||||
public DateOnly? LastActiveTo { get; set; }
|
||||
|
||||
[FromQuery(Name = "creation_date")]
|
||||
public DateOnly? CreationDate { get; set; }
|
||||
|
||||
[FromQuery(Name = "creation_date_from")]
|
||||
public DateOnly? CreationDateFrom { get; set; }
|
||||
|
||||
[FromQuery(Name = "creation_date_to")]
|
||||
public DateOnly? CreationDateTo { get; set; }
|
||||
|
||||
[FromQuery(Name = "is_admin")]
|
||||
public bool? IsAdmin { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region PRIVATE METHODS
|
||||
|
||||
protected override bool IsMeetingConditions(AccountResponse item) =>
|
||||
(
|
||||
TestStringWithRegex(item.Username, Username)
|
||||
&&
|
||||
TestStringWithRegex(item.Email, Email)
|
||||
&&
|
||||
TestStringWithRegex(item.Description, Description)
|
||||
&&
|
||||
Test(item.Gender?.Id, GenderId)
|
||||
&&
|
||||
TestComparable(item.LastActive, LastActive, LastActiveFrom, LastActiveTo)
|
||||
&&
|
||||
TestComparable(item.CreationDate, CreationDate, CreationDateFrom, CreationDateTo)
|
||||
&&
|
||||
Test(item.IsAdmin, IsAdmin)
|
||||
);
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -1,13 +1,28 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using WatchIt.Common.Model.Genders;
|
||||
using WatchIt.Common.Query;
|
||||
|
||||
namespace WatchIt.Common.Model.Accounts;
|
||||
|
||||
public class AccountResponse : Account
|
||||
public class AccountResponse : Account, IQueryOrderable<AccountResponse>
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
[JsonIgnore]
|
||||
public static IDictionary<string, Func<AccountResponse, IComparable>> OrderableProperties { get; } = new Dictionary<string, Func<AccountResponse, IComparable>>
|
||||
{
|
||||
{ "id", x => x.Id },
|
||||
{ "username", x => x.Username },
|
||||
{ "email", x => x.Email },
|
||||
{ "description", x => x.Description },
|
||||
{ "gender", x => x.Gender.Name },
|
||||
{ "last_active", x => x.LastActive },
|
||||
{ "creation_date", x => x.CreationDate },
|
||||
{ "is_admin", x => x.IsAdmin }
|
||||
};
|
||||
|
||||
|
||||
[JsonPropertyName("id")]
|
||||
public required long Id { get; set; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user