namespace DevLeap.Linq.Architecture.NTier.DataLayer {
public interface ICustomerDal {
/// <summary>
/// Pidv novho zkaznka do trvalho loit.
/// </summary>
/// <param name="item">Pidvan instance zkaznka</param>
/// <returns>Prv pidan zkaznk</returns>
Customer Add(Customer item);

/// <summary>
/// Nat zkaznka z trvalho loit.
/// </summary>
/// <param name="key">Kl pro naten instance zkaznka</param>
/// <returns>Instance zkaznka, pokud existuje.</returns>
Customer Read(String key);

/// <summary>
/// Nat vechny dostupn instance zkaznk z trvalho loit.
/// </summary>
/// <returns>Seznam existujcch zkaznk</returns>
/// <remarks>Ve skutenosti by mohla existovat podmnka pro filtrovn,
/// vyjden pomoc dotazovacho vrazu LINQ.</remarks>
List<Customer> ReadAll();

/// <summary>
/// Aktualizuje zkaznka v trvalm loiti.
/// </summary>
/// <param name="item">Instance aktualizovanho zkaznka</param>
/// <returns>Prv zaktualizovan zkaznk</returns>
Customer Update(Customer item);

/// <summary>
/// Mae zkaznka z trvalho loit.
/// </summary>
/// <param name="item">Zkaznk, jen se m smazat.</param>
/// <returns>Vsledek operace mazn</returns>
Boolean Delete(Customer item);
}
}
