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 gehGassi.Domain.Base;
using gehGassi.Domain.Common;
using gehGassi.Domain.Dogs;
using NetTopologySuite.Geometries;
namespace gehGassi.Domain.Walks
{
///
/// Repräsentiert eine öffentliche Anfrage für einen Walk
///
public class PublicWalkRequest : SyncEntity
{
///
/// Id des App-Users / Hundebesitzers der die Anfrage erstellt hat
/// Ist eine AppUserId
///
[Required]
[MaxLength(128)]
public string DogOwnerId { get; set; }
///
/// Abhol-Adresse
///
public Address PickupAddress { get; set; }
///
/// Geo-Koordinaten der Adresse
///
public Point Location { get; set; }
///
/// Welche Art der Anfrage?
///
[Required]
public PublicWalkRequestType RequestType { get; set; }
///
/// Startdatum und Uhrzeit
///
[Required]
public DateTimeOffset StartDate { get; set; }
///
/// Enddatum und Urzeit
///
[Required]
public DateTimeOffset EndDate { get; set; }
///
/// Id des Hundes
///
[Required]
[MaxLength(128)]
public string DogId { 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; }
///
/// Exklusiv buchen?
///
[Required]
public bool Exclusive { get; set; }
///
/// Preis den der Besitzer bereit ist zu zahlen
///
[Required]
public decimal Price { get; set; }
///
/// Zusatzinfo für den Auftrag
///
[MaxLength(500)]
public string Info { get; set; }
///
/// Offen als Ausschreibung bis... Ablaufdatum
///
public DateTimeOffset ExpirationDate { get; set; }
///
/// Id des Walkers der den Auftrag erhalten hat
/// Ist eine AppUserId
///
[MaxLength(128)]
public string DogWalkerId { get; set; }
///
/// Zuordnung zum angenommenen Angebot
///
public string PublicWalkResponseId { get; set; }
///
/// Anzahl der Antworten
///
public int ResponseCount { get; set; }
///
/// Aktueller Status der öffentlichern Anfrage
///
public PublicWalkRequestStatus Status { get; set; }
///
/// Datum wann ein Angebot angenommen wurde
///
public DateTimeOffset? PlacedDate { get; set; }
///
/// Wann wurde die Anfrage erstellt?
///
public DateTimeOffset Created { get; set; }
public PublicWalkRequest()
{
Location = new Point(0, 0);
}
}
///
/// Repräsentiert eine öffentliche Anfrage mit Namen aufgelöst
///
public class PublicWalkRequestWithNames : SyncEntityVw
{
///
/// Id des App-Users / Hundebesitzers der die Anfrage erstellt hat
/// Ist eine AppUserId
///
public string DogOwnerId { get; set; }
///
/// Name des Hundebesitzers
///
public string DogOwnerName { get; set; }
///
/// Foto des Hundebesitzers
///
public string DogOwnerPhoto { get; set; }
///
/// Abholadresse - Adresszeile 1
///
public string PickupAddress_AddressLine1 { get; set; }
///
/// Abholadresse - Adresszeile 2
///
public string PickupAddress_AddressLine2 { get; set; }
///
/// Abholadresse - Stadt / Ort
///
public string PickupAddress_City { get; set; }
///
/// Abholadresse - PLZ
///
public string PickupAddress_Zip { get; set; }
///
/// Abholadresse - Bundesland / Staat
///
public string PickupAddress_State { get; set; }
///
/// Abholadresse - ISO2 Ländercode
///
public string PickupAddress_CountryCode { get; set; }
///
/// Geo-Koordinaten der Adresse
///
public Point Location { get; set; }
///
/// Welche Art der Anfrage?
///
public PublicWalkRequestType RequestType { get; set; }
///
/// Startdatum und Uhrzeit
///
public DateTimeOffset StartDate { get; set; }
///
/// Enddatum und Urzeit
///
public DateTimeOffset EndDate { get; set; }
///
/// Id des Hundes
///
public string DogId { get; set; }
///
/// Name des Hundes
///
public string DogName { get; set; }
///
/// Foto des Hundes
///
public string DogPhoto { get; set; }
///
/// Jsonliste mit Id´s der Hunde die ausgewählt wurden
///
public string DogsJson { get; set; }
///
/// Liste der Hunde
///
[NotMapped]
public List Dogs { get; set; }
///
/// Anzahl der Hunde
///
public int DogCount { get; set; }
///
/// Exklusiv buchen?
///
public bool Exclusive { get; set; }
///
/// Preis den der Besitzer bereit ist zu zahlen
///
public decimal Price { get; set; }
///
/// Zusatzinfo für den Auftrag
///
public string Info { get; set; }
///
/// Offen als Ausschreibung bis... Ablaufdatum
///
public DateTimeOffset ExpirationDate { get; set; }
///
/// Id des Walkers der den Auftrag erhalten hat
/// Ist eine AppUserId
///
public string DogWalkerId { get; set; }
///
/// Name des Dogwalkers wenn selektiert
///
public string DogWalkerName { get; set; }
///
/// Foto des Dogwalkers wenn gesetzt
///
public string DogWalkerPhoto { get; set; }
///
/// Zuordnung zum angenommenen Angebot
///
public string PublicWalkResponseId { get; set; }
///
/// Anzahl der Antworten
///
public int ResponseCount { get; set; }
///
/// Aktueller Status der öffentlichern Anfrage
///
public PublicWalkRequestStatus Status { get; set; }
///
/// Datum wann ein Angebot angenommen wurde
///
public DateTimeOffset? PlacedDate { get; set; }
///
/// Wann wurde die Anfrage erstellt?
///
public DateTimeOffset Created { get; set; }
}
///
/// Repräsentiert eine öffentliche Anfrage mit Namen aufgelöst und dem Antwort-Status eines Dogwalkers
///
public class PublicWalkRequestWithNamesAndResponseStatus : SyncEntityVw
{
///
/// Id des App-Users / Hundebesitzers der die Anfrage erstellt hat
/// Ist eine AppUserId
///
public string DogOwnerId { get; set; }
///
/// Name des Hundebesitzers
///
public string DogOwnerName { get; set; }
///
/// Foto des Hundebesitzers
///
public string DogOwnerPhoto { get; set; }
///
/// Wurde der Hundebesitzer vom Walker blockiert?
///
public bool DogOwnerBlocked { get; set; }
///
/// Ist der Hundebesitzer gesperrt?
///
public bool DogOwnerLocked { get; set; }
///
/// Abholadresse - Adresszeile 1
///
public string PickupAddress_AddressLine1 { get; set; }
///
/// Abholadresse - Adresszeile 2
///
public string PickupAddress_AddressLine2 { get; set; }
///
/// Abholadresse - Stadt / Ort
///
public string PickupAddress_City { get; set; }
///
/// Abholadresse - PLZ
///
public string PickupAddress_Zip { get; set; }
///
/// Abholadresse - Bundesland / Staat
///
public string PickupAddress_State { get; set; }
///
/// Abholadresse - ISO2 Ländercode
///
public string PickupAddress_CountryCode { get; set; }
///
/// Geo-Koordinaten der Adresse
///
public Point Location { get; set; }
///
/// Welche Art der Anfrage?
///
public PublicWalkRequestType RequestType { get; set; }
///
/// Startdatum und Uhrzeit
///
public DateTimeOffset StartDate { get; set; }
///
/// Enddatum und Urzeit
///
public DateTimeOffset EndDate { get; set; }
///
/// Id des Hundes
///
public string DogId { get; set; }
///
/// Name des Hundes
///
public string DogName { get; set; }
///
/// Foto des Hundes
///
public string DogPhoto { get; set; }
///
/// Jsonliste mit Id´s der Hunde die ausgewählt wurden
///
public string DogsJson { get; set; }
///
/// Liste der Hunde
///
[NotMapped]
public List Dogs { get; set; }
///
/// Anzahl der Hunde
///
public int DogCount { get; set; }
///
/// Exklusiv buchen?
///
public bool Exclusive { get; set; }
///
/// Preis den der Besitzer bereit ist zu zahlen
///
public decimal Price { get; set; }
///
/// Zusatzinfo für den Auftrag
///
public string Info { get; set; }
///
/// Offen als Ausschreibung bis... Ablaufdatum
///
public DateTimeOffset ExpirationDate { get; set; }
///
/// Id des Walkers der den Auftrag erhalten hat
/// Ist eine AppUserId
///
public string DogWalkerId { get; set; }
///
/// Name des Dogwalkers wenn selektiert
///
public string DogWalkerName { get; set; }
///
/// Foto des Dogwalkers wenn gesetzt
///
public string DogWalkerPhoto { get; set; }
///
/// Zuordnung zum angenommenen Angebot
///
public string PublicWalkResponseId { get; set; }
///
/// Anzahl der Antworten
///
public int ResponseCount { get; set; }
///
/// Aktueller Status der öffentlichern Anfrage
///
public PublicWalkRequestStatus Status { get; set; }
///
/// Datum wann ein Angebot angenommen wurde
///
public DateTimeOffset? PlacedDate { get; set; }
///
/// Wann wurde die Anfrage erstellt?
///
public DateTimeOffset Created { get; set; }
///
/// Antwort-Status für einen Dogwalker wenn es schon eine Antwort gibt. Null sonst
///
public PublicWalkResponseStatus? ResponseStatus { get; set; }
}
}