80 lines
3.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using gehGassiApp.Domain.Common;
namespace gehGassiApp.Core.Interfaces
{
/// <summary>
/// Schnittstellenbeschreibung für einen Service der den Umgang mit Ländern vereinfacht
/// </summary>
public interface ICountryService
{
/// <summary>
/// Gibt eine Liste aller Länder zurück
/// </summary>
/// <returns>Liste</returns>
Task<List<Country>> GetCountriesAsync();
/// <summary>
/// Gibt ein Land anhand des Codes zurück
/// </summary>
/// <param name="countryCode">ISO2</param>
/// <returns>Land oder null, wenn nicht gefunden</returns>
Task<Country> GetCountryAsync(string countryCode);
/// <summary>
/// Gibt eine Liste von Bundesländern zurück
/// </summary>
/// <returns>Liste von Bundesländern</returns>
Task<List<State>> GetStatesAsync();
/// <summary>
/// Gibt eine Liste von Bundesländern / Staaten eines Landes zurück
/// </summary>
/// <param name="countryCode">ISO2 des Landes</param>
/// <returns>Liste von Bundesländern</returns>
Task<List<State>> GetStatesAsync(string countryCode);
/// <summary>
/// Gibt ein Bundesland / Staat eines Landes zurück
/// </summary>
/// <param name="countryCode">ISO2 des Landes</param>
/// <param name="stateCode">Code des Bundeslandes</param>
/// <returns>Bundesland oder null, wenn nicht gefunden</returns>
Task<State> GetStateAsync(string countryCode, string stateCode);
/// <summary>
/// Gibt ein Bundesland / Staat eines Landes zurück
/// </summary>
/// <param name="countryCode">ISO2 des Landes</param>
/// <param name="stateName">Name des Bundeslandes</param>
/// <returns>Bundesland oder null, wenn nicht gefunden</returns>
Task<State> GetStateByNameAsync(string countryCode, string stateName);
/// <summary>
/// Gibt eine Liste der Ländercodes zurück die zu einem Filter passen
/// </summary>
/// <param name="filter">Filter</param>
/// <param name="operatorValue">Operator der angewendet werden soll</param>
/// <returns>Liste gefundener Ländercodes</returns>
Task<List<string>> FindCountryCodesAsync(string filter, string operatorValue);
/// <summary>
/// Gibt eine Liste der Bundesland-Codes zurück die zu einem Filter passen
/// </summary>
/// <param name="filter">Filter</param>
/// <param name="operatorValue">Operator der angewendet werden soll</param>
/// <returns>Liste gefundener Bundeslandcodes</returns>
Task<List<string>> FindStateCodesAsync(string filter, string operatorValue);
/// <summary>
/// Gibt eine Liste aller Länder zurück die in der Nationalitätenliste enthalten sind
/// </summary>
/// <returns>Liste</returns>
Task<List<Country>> GetNationalitiesAsync();
}
}