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; } } }