using System.Collections.Generic;
using System.Linq;
using Uniconta.Common;
namespace UnicontaAdapter.Helpers
{
public class FilterBuilder
{
private readonly List<PropValuePair> result = new();
private object ConvertValue(object src)
{
if (src is bool b)
{
return b ? "1" : "0";
}
return src;
}
private FilterBuilder AddWhere(string field, object value, CompareOperator op)
{
result.Add(PropValuePair.GenereteWhereElements(field, ConvertValue(value), op));
return this;
}
public FilterBuilder WhereEqual(string field, object value) => AddWhere(field, value, CompareOperator.Equal);
public FilterBuilder WhereNotEqual(string field, object value) => AddWhere(field, value, CompareOperator.NotEqual);
public FilterBuilder WhereStartsWith(string field, object value) => AddWhere(field, value, CompareOperator.StartsWith);
public FilterBuilder WhereContains(string field, object value) => AddWhere(field, value, CompareOperator.Contains);
public FilterBuilder WhereGreaterThan(string field, object value) => AddWhere(field, value, CompareOperator.GreaterThan);
public FilterBuilder WhereGreaterThanOrEqual(string field, object value) => AddWhere(field, value, CompareOperator.GreaterThanOrEqual);
public FilterBuilder WhereLessThan(string field, object value) => AddWhere(field, value, CompareOperator.LessThan);
public FilterBuilder Skip(int number)
{
result.Add(PropValuePair.GenereteSkipN(number));
return this;
}
public FilterBuilder Take(int number)
{
result.Add(PropValuePair.GenereteTakeN(number));
return this;
}
public FilterBuilder OrderBy(string field)
{
result.Add(PropValuePair.GenereteOrderByElement(field, false));
return this;
}
public FilterBuilder OrderByDescending(string field)
{
result.Add(PropValuePair.GenereteOrderByElement(field, true));
return this;
}
public IEnumerable<PropValuePair> Build() => result.ToList();
}
}
573000cookie-checkUniconta FilterBuilder