Ich hatte diese Frage zuvor. Die Idee ist dieselbe, außer dass ich die gesamte gemeinsame Zeit innerhalb bestimmter TimeSpan
finden muss.
Hintergrund
Nehmen wir an,
Ich möchte einige Leute treffen und ich sage, dass ich bestimmte Leute zwischen Datetime X (2014-02-16 09: 00: 00.000) und DateTime Y (2014-02-26 05: 00: 00.000) treffen möchte. Und ich sage, dass ich möchte, dass das Meeting mindestens für N
Stundenzahl hält.
Dann werden die Leute, die ich treffen will, antworten und sagen, dass ich in folgenden Daten verfügbar sein werde:
%Vor%und so weiter.
Ziel
Ich muss dann herausfinden, ob es einen Zeitbereich gibt, der die Antwort des Benutzers enthält.
Nehmen wir an, dies sind die Antworten
Attendee1
(einige GuidId):Antwort1: Startzeit = 2014-02-23 09:00 Uhr, Endzeit = 2014-02-23 11:00 AM,
Antwort2: Startzeit = 2014-02-24 10:00 AM, EndTime = 2014-02-24 12:00 PM,
Antwort3: Startzeit = 2014-02-25 10:00 Uhr, Endzeit = 2014-02-25 11:00 AM,
Response4: Startzeit = 2014-02-23 01:00 PM, EndTime = 2014-02-17 5:00 PM
Attendee2
(einige GuidId):Antwort1: Startzeit = 2014-02-22 09:00 AM, EndTime = 2014-02-22 05:00 PM,
Antwort2: Startzeit = 2014-02-23 09:00 Uhr, Endzeit = 2014-02-23 05:00 PM,
Antwort3: Startzeit = 2014-02-25 09:00 Uhr, Endzeit = 2014-02-25 12:00 PM,
Attendee3
(einige GuidId):Antwort1: Startzeit = 2014-02-22 11:00 AM, EndTime = 2014-02-22 02:00 PM,
Antwort2: Startzeit = 2014-02-23 04:00 PM, EndTime = 2014-02-23 03:00 PM,
Antwort3: Startzeit = 2014-02-23 4:30 PM, EndTime = 2014-02-23 05:30 PM,
Response4: Startzeit = 2014-02-24 02:00 AM, EndTime = 2014-02-24 05:00 PM,
Antwort5: Startzeit = 2014-02-25 11:00 Uhr, Endzeit = 2014-02-25 12:00 Uhr PM,
Also, wenn möglich, sollte ich etwas finden, das sagt, dass hier die gefundenen Übereinstimmungen sind, wenn nicht, dann finde einfach heraus, ob die gemeinsame Zeit für alle Benutzer existiert oder nicht.
Time X to Time Y
(Der Unterschied zwischen X und Y sollte mindestens der angegebene TimeSpan sein): Number of Attendee in this match = N
(type = int, 1 oder 2 oder so viele Übereinstimmung wie gefunden)
...
usw.
PS:
Es handelt sich um eine MVC 5.1-Anwendung, und die Datenbank wird mithilfe des ersten Ansatzes erstellt. Also in der Datenbank gibt es eine Tabelle namens Termin, die die StartDateTime und EndDateTime
speichert Hier sind meine DataModels
und zwischen diesen Terminen geben Leute (Teilnehmer) ihre Antwort ab. Jede Person (die antworten wird), ihre Informationen werden in der Datenbanktabelle Attendees
gespeichert %Vor%Und für jeden Benutzer wird seine Antwort in der Antworttabelle gespeichert, deren Modell wie
aussehen würde %Vor%Das habe ich gemacht, aber es funktioniert nicht.
%Vor% Also in diesem Fall, wenn Attendee X
(mit einer Guid Id) seine / ihre Verfügbarkeit angibt
und Attendee Y
geben ihre Verfügbarkeit als
Das ist die übliche Übereinstimmung, die ich bekomme
Was ich nicht will, wie ich es erklärt habe.
Also, was soll ich tun, um zu bekommen, was ich will.
Basierend auf der Antwort von Zache
%Vor%in Repository
%Vor% StartDate : 2/24/2014 11:30:00 AM
//, das ich beim Erstellen eines Termins festgelegt habe
Enddatum : 2/25/2014 11:30:00 AM
Wenn der erste Benutzer mit folgenden Daten antwortet:
entspricht dem Ergebnis:
wenn der zweite Teilnehmer mit folgenden Daten antwortet
entspricht dem Ergebnis
Hier sollten die üblichen Übereinstimmungen gewesen sein:
%Vor% Die folgende Funktion GetMeetingWindows
gibt eine Liste aller übereinstimmenden Fenster und verfügbaren Teilnehmer zurück. Vollständige oder minimale Teilnehmerbestimmungen können dann wie erforderlich auf das Ergebnis angewendet werden, z.
Ich habe angenommen, dass die gelieferten Teilnehmerantworten den Gesamtzeitraum für das Meeting bereits berücksichtigt haben, aber wenn dies nicht der Fall ist, kann diese Einschränkung als zusätzlicher Teilnehmer hinzugefügt werden, der dann im Ergebnis gefiltert wird. zB
%Vor%Der Code:
%Vor%