gehgassi_backend/gehGassi.Dto/Walks/WalkWithNamesDto.cs
Florian Mihalits 38142f2435 Add payment type handling for walks
- Updated `Walk` class to include `PaymentType` property.
- Introduced `WalkPaymentTypeDto` enum for payment types.
- Modified DTOs (`PublicWalkRequestAcceptDto`, `WalkCreateDto`, `WalkDto`, `WalkWithNamesDto`) to include `PaymentType`.
- Enhanced `ApiWalksController` with new endpoints for accepting and canceling walks, and confirming walks with ratings.
- Updated `MappingProfile` for seamless conversion between `WalkPaymentType` and `WalkPaymentTypeDto`.
2025-06-30 15:08:57 +02:00

243 lines
6.5 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Drawing;
using System.Text;
using System.Threading.Tasks;
using gehGassi.Dto.Common;
using gehGassi.Dto.Dogs;
namespace gehGassi.Dto.Walks
{
/// <summary>
/// DTO für Walks mit Namen aufgelöst
/// </summary>
public class WalkWithNamesDto : SyncEntityDto
{
/// <summary>
/// Art der Walk Anfrage
/// </summary>
public WalkTypeDto Type { get; set; }
/// <summary>
/// Welche Art von Service soll durchgeführt werden
/// </summary>
public WalkServiceTypeDto ServiceType { get; set; }
/// <summary>
/// Id des Walkers
/// </summary>
public string DogWalkerId { get; set; }
/// <summary>
/// Name des DogWalkers
/// </summary>
public string DogWalkerName { get; set; }
/// <summary>
/// Foto des Dogwalkers
/// </summary>
public string DogWalkerPhoto { get; set; }
/// <summary>
/// Walker gesperrt
/// </summary>
public bool DogWalkerLocked { get; set; }
/// <summary>
/// Walker blockiert
/// </summary>
public bool DogWalkerBlocked { get; set; }
/// <summary>
/// Id des Hundebesitzers
/// </summary>
public string DogOwnerId { get; set; }
/// <summary>
/// Name des Hundebesitzers
/// </summary>
public string DogOwnerName { get; set; }
/// <summary>
/// Foto des Hundebesitzers
/// </summary>
public string DogOwnerPhoto { get; set; }
/// <summary>
/// Hundebesitzer gesperrt
/// </summary>
public bool DogOwnerLocked { get; set; }
/// <summary>
/// Hundebesitzer blockiert
/// </summary>
public bool DogOwnerBlocked { get; set; }
/// <summary>
/// Id der öffentlichen Anfrage, wenn über diese erstellt
/// </summary>
public string PublicWalkRequestId { get; set; }
/// <summary>
/// Liste der Hunde
/// </summary>
public List<DogMinInfoDto> Dogs { get; set; }
/// <summary>
/// Anzahl der Hunde
/// </summary>
public int DogCount { get; set; }
/// <summary>
/// Startdatum des Walks mit Urhrzeit
/// </summary>
public DateTimeOffset Start { get; set; }
/// <summary>
/// Enddatum des Walks mit Uhrzeit
/// </summary>
public DateTimeOffset End { get; set; }
/// <summary>
/// Wo soll der Hunde abgeholt werden
/// </summary>
public AddressDto PickupAddress { get; set; }
/// <summary>
/// Breitengrad der Abhol-Adresse
/// </summary>
public double PickupAddressLat { get; set; }
/// <summary>
/// Längengrad der Abhol-Adresse
/// </summary>
public double PickupAddressLng { get; set; }
/// <summary>
/// Wo soll der Hunde zurückgegeben werden werden
/// </summary>
public AddressDto ReturnAddress { get; set; }
/// <summary>
/// Breitengrad der Rückgabe-Adresse
/// </summary>
public double ReturnAddressLat { get; set; }
/// <summary>
/// Längengrad der Rückgabe-Adresse
/// </summary>
public double ReturnAddressLng { get; set; }
/// <summary>
/// Preis für den Walk / Das Sitting. Wird gesetzt und kann entweder fix sein (öffentliche Anfrage) oder errechnet
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// Zusatzinfo für den Walk. Z.B. bei Susi klingeln
/// </summary>
public string Info { get; set; }
/// <summary>
/// Status eines Walks
/// </summary>
public WalkStatusDto Status { get; set; }
/// <summary>
/// Wann wurde der Walk / Sitting gestartet?
/// </summary>
public DateTimeOffset? Started { get; set; }
/// <summary>
/// Wann wurde der Walk / Sitting beendet?
/// </summary>
public DateTimeOffset? Completed { get; set; }
/// <summary>
/// Wann wurde der Walk / Sitting bestätigt?
/// </summary>
public DateTimeOffset? Confirmed { get; set; }
/// <summary>
/// Wann wurde der Walk / Sitting reklamiert?
/// </summary>
public DateTimeOffset? Complained { get; set; }
/// <summary>
/// Optional: Grund für die Reklamation
/// </summary>
public string ComplainReason { get; set; }
#region Status Infos
/// <summary>
/// Optional: Grund für die Ablehnung
/// </summary>
public string DeclinedReason { get; set; }
/// <summary>
/// Optional: Grund für die Stornierung
/// </summary>
public string CancelledReason { get; set; }
/// <summary>
/// Wer hat eine Stornierung durchgeführt
/// </summary>
public CancellationSourceDto CancelledBy { get; set; }
/// <summary>
/// Anmerkungen vom Walker nach dem Abschluss
/// </summary>
public string CompletedInfo { get; set; }
/// <summary>
/// Kotabsatz?
/// </summary>
public bool Defactation { get; set; }
#endregion
/// <summary>
/// Zahlungsstatus des Walks
/// </summary>
public PaymentStatusDto PaymentStatus { get; set; }
/// <summary>
/// Zahlungsart für den Walk
/// </summary>
public WalkPaymentTypeDto PaymentType { get; set; }
/// <summary>
/// Id des Gutscheins der verwendet wurde, wenn einer verwendet wurde
/// </summary>
public string? VoucherId { get; set; }
/// <summary>
/// Wert des Gutscheins - real verwendeter Wert
/// </summary>
public decimal VoucherAmmount { get; set; }
#region Erweiterung Blockier- und Sperrinfo
/// <summary>
/// Hundebesitzer ist blockiert
/// </summary>
public bool Blocked { get; set; }
/// <summary>
/// Hundebesitzer ist gesperrt
/// </summary>
public bool Locked { get; set; }
#endregion
/// <summary>
/// Datum der Erstellung des Walks
/// </summary>
public DateTimeOffset Created { get; set; }
}
}