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