215 lines
5.5 KiB
C#
215 lines
5.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using gehGassiApp.Domain.Base;
|
|
using gehGassiApp.Domain.Common;
|
|
|
|
namespace gehGassiApp.Domain.Walks
|
|
{
|
|
/// <summary>
|
|
/// Repräsentiert eine Antwort auf eine öffentliche Anfrage
|
|
/// </summary>
|
|
public class PublicWalkResponse : SyncEntity
|
|
{
|
|
private decimal _price;
|
|
private string _info;
|
|
private string _answer;
|
|
private PublicWalkResponseStatus _status;
|
|
private string _cancellationReason;
|
|
|
|
/// <summary>
|
|
/// Id der öffentlichen Anfrage
|
|
/// </summary>
|
|
[MaxLength(128)]
|
|
public string PublicWalkRequestId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id des App-Users / Walker
|
|
/// Ist eine AppUserId
|
|
/// </summary>
|
|
[MaxLength(128)]
|
|
public string DogWalkerId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Preis den der Walker anbietet
|
|
/// </summary>
|
|
[Required]
|
|
public decimal Price
|
|
{
|
|
get => _price;
|
|
set
|
|
{
|
|
_price = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Zusatzinfo für das Angebot
|
|
/// </summary>
|
|
[MaxLength(500)]
|
|
public string Info
|
|
{
|
|
get => _info;
|
|
set
|
|
{
|
|
_info = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Optional: Antwort des Hundebesitzers
|
|
/// </summary>
|
|
[MaxLength(500)]
|
|
public string Answer
|
|
{
|
|
get => _answer;
|
|
set
|
|
{
|
|
_answer = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Status des Angebotes
|
|
/// </summary>
|
|
public PublicWalkResponseStatus Status
|
|
{
|
|
get => _status;
|
|
set
|
|
{
|
|
_status = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Grund für die Stornierung
|
|
/// </summary>
|
|
[MaxLength(500)]
|
|
public string CancellationReason
|
|
{
|
|
get => _cancellationReason;
|
|
set
|
|
{
|
|
_cancellationReason = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Wann wurde das Angebot erstellt?
|
|
/// </summary>
|
|
public DateTimeOffset Created { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Antwort auf eine öffentliche Anfrage mit Namen aufgelöst
|
|
/// </summary>
|
|
public class PublicWalkResponseWithNames : SyncEntityVw
|
|
{
|
|
/// <summary>
|
|
/// Id der öffentlichen Anfrage
|
|
/// </summary>
|
|
public string PublicWalkRequestId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id des App-Users / Walker
|
|
/// Ist eine AppUserId
|
|
/// </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>
|
|
/// Dogwalker verifiziert?
|
|
/// </summary>
|
|
public bool DogWalkerVerified { get; set; }
|
|
|
|
/// <summary>
|
|
/// Dogwalker blockiert?
|
|
/// </summary>
|
|
[NotMapped]
|
|
public bool DogWalkerBlocked { get; set; }
|
|
|
|
/// <summary>
|
|
/// Dogwalker gesperrt?
|
|
/// </summary>
|
|
[NotMapped]
|
|
public bool DogWalkerLocked { get; set; }
|
|
|
|
/// <summary>
|
|
/// Blockiert oder gesperrt
|
|
/// </summary>
|
|
[NotMapped]
|
|
public bool DogWalkerBlockedOrLocked => DogWalkerBlocked || DogWalkerLocked;
|
|
|
|
/// <summary>
|
|
/// Preis den der Walker anbietet
|
|
/// </summary>
|
|
[Required]
|
|
public decimal Price { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zusatzinfo für das Angebot
|
|
/// </summary>
|
|
public string Info { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Antwort des Hundebesitzers
|
|
/// </summary>
|
|
public string Answer { get; set; }
|
|
|
|
/// <summary>
|
|
/// Status des Angebotes
|
|
/// </summary>
|
|
public PublicWalkResponseStatus Status { get; set; }
|
|
|
|
/// <summary>
|
|
/// Grund für die Stornierung
|
|
/// </summary>
|
|
public string CancellationReason { get; set; }
|
|
|
|
/// <summary>
|
|
/// Wann wurde das Angebot erstellt?
|
|
/// </summary>
|
|
public DateTimeOffset Created { get; set; }
|
|
|
|
/// <summary>
|
|
/// Vorname + Nachname erster Buchstabe + Punkt, oder nur Vorname wenn kein Nachname
|
|
/// </summary>
|
|
[NotMapped]
|
|
public string DogWalkerFullNameShort
|
|
{
|
|
get
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(DogWalkerName))
|
|
{
|
|
var parts = DogWalkerName.Split(" ");
|
|
var firstName = parts[0];
|
|
var lastName = string.Empty;
|
|
if (parts.Length > 1)
|
|
lastName = parts[1];
|
|
return string.IsNullOrWhiteSpace(lastName) ? firstName : $"{firstName} {lastName[..1]}.";
|
|
}
|
|
return string.Empty;
|
|
}
|
|
}
|
|
}
|
|
}
|