using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;
using System.Threading.Tasks;
using gehGassi.Dto.Common;
namespace gehGassi.Dto.Walks
{
///
/// DTO für einen Walk
///
public class WalkDto : SyncEntityDto
{
///
/// Art der Walk Anfrage
///
[Required]
public WalkTypeDto Type { get; set; }
///
/// Welche Art von Service soll durchgeführt werden
///
[Required]
public WalkServiceTypeDto ServiceType { get; set; }
///
/// Id des Walkers
///
[Required]
[MaxLength(128)]
public string DogWalkerId { get; set; }
///
/// Id des Hundebesitzers
///
[Required]
[MaxLength(128)]
public string DogOwnerId { get; set; }
///
/// Id der öffentlichen Anfrage, wenn über diese erstellt
///
[MaxLength(128)]
public string PublicWalkRequestId { get; set; }
///
/// Jsonliste mit Id´s der Hunde die ausgewählt wurden
///
public string DogsJson { get; set; }
///
/// Anzahl der Hunde
///
[Required]
public int DogCount { get; set; }
///
/// Startdatum des Walks mit Urhrzeit
///
[Required]
public DateTimeOffset Start { get; set; }
///
/// Enddatum des Walks mit Uhrzeit
///
[Required]
public DateTimeOffset End { get; set; }
///
/// Wo soll der Hunde abgeholt werden
///
public AddressDto PickupAddress { get; set; }
///
/// Breitengrad der Abhol-Adresse
///
public double PickupAddressLat { get; set; }
///
/// Längengrad der Abhol-Adresse
///
public double PickupAddressLng { get; set; }
///
/// Wo soll der Hunde zurückgegeben werden werden
///
public AddressDto ReturnAddress { get; set; }
///
/// Breitengrad der Rückgabe-Adresse
///
public double ReturnAddressLat { get; set; }
///
/// Längengrad der Rückgabe-Adresse
///
public double ReturnAddressLng { get; set; }
///
/// Preis für den Walk / Das Sitting. Wird gesetzt und kann entweder fix sein (öffentliche Anfrage) oder errechnet
///
public decimal Price { get; set; }
///
/// Zusatzinfo für den Walk. Z.B. bei Susi klingeln
///
[MaxLength(500)]
public string Info { get; set; }
///
/// Status eines Walks
///
[Required]
public WalkStatusDto Status { get; set; }
///
/// Wann wurde der Walk / Sitting gestartet?
///
public DateTimeOffset? Started { get; set; }
///
/// Wann wurde der Walk / Sitting beendet?
///
public DateTimeOffset? Completed { get; set; }
///
/// Wann wurde der Walk / Sitting bestätigt?
///
public DateTimeOffset? Confirmed { get; set; }
///
/// Wann wurde der Walk / Sitting reklamiert?
///
public DateTimeOffset? Complained { get; set; }
///
/// Optional: Grund für die Reklamation
///
public string ComplainReason { get; set; }
#region Status Infos
///
/// Optional: Grund für die Ablehnung
///
[MaxLength(500)]
public string DeclinedReason { get; set; }
///
/// Optional: Grund für die Stornierung
///
[MaxLength(500)]
public string CancelledReason { get; set; }
///
/// Wer hat eine Stornierung durchgeführt
///
[Required]
public CancellationSourceDto CancelledBy { get; set; }
///
/// Anmerkungen vom Walker nach dem Abschluss
///
[MaxLength(500)]
public string CompletedInfo { get; set; }
///
/// Kotabsatz?
///
[Required]
public bool Defactation { get; set; }
#endregion
///
/// Zahlungsstatus des Walks
///
[Required]
public PaymentStatusDto PaymentStatus { get; set; }
///
/// Zahlungsart für den Walk
///
public WalkPaymentTypeDto PaymentType { get; set; }
///
/// Datum der Erstellung des Walks
///
[Required]
public DateTimeOffset Created { get; set; }
}
}