Hi,
ich arbeite mich gerade erst in C# ein. Nun hab ich mir ein kleines Projekt vorgenommen, wo ich Termine eines Besprechungsraums abfragen möchte und später grafisch darstellen möchte ob der Raum zur Zeit frei ist oder nicht.
So, also hab ich folgende Klasse erstellt:
Soweit funktioniert auch die Abfrage:
Termine werden auf der Console angezeigt.
Was leider nicht richtig angezeigt wird ist, ob der Raum zur Zeit frei ist oder nicht.
Egal was ich mit dem Datum (timeNow) anstelle es kommt immer False raus.
Wo ist da mein Denkfehler?
Danke Euch
ich arbeite mich gerade erst in C# ein. Nun hab ich mir ein kleines Projekt vorgenommen, wo ich Termine eines Besprechungsraums abfragen möchte und später grafisch darstellen möchte ob der Raum zur Zeit frei ist oder nicht.
So, also hab ich folgende Klasse erstellt:
C#-Quellcode
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using Microsoft.Exchange.WebServices.Data;
- namespace EWS
- {
- class EWSConnect
- {
- public string mailBox { get; set; }
- public string user { get; set; }
- public string pass { get; set; }
- public string domain { get; set; }
- const int numAppts = 10;
- static DateTime startDate = DateTime.Now;
- static DateTime endDate = startDate.AddDays(30);
- public EWSConnect(string mailBox, string user, string pass, string domain)
- {
- this.mailBox = mailBox;
- this.user = user;
- this.pass = pass;
- this.domain = domain;
- }
- public IEnumerable<Appointment> GetAppointments()
- {
- NetworkCredential netCred = new NetworkCredential(this.user, this.pass, this.domain);
- ExchangeVersion exVers = ExchangeVersion.Exchange2013;
- ExchangeService exService = new ExchangeService(exVers);
- exService.Credentials = netCred;
- exService.AutodiscoverUrl(this.mailBox);
- CalendarFolder calFolder = CalendarFolder.Bind(exService, WellKnownFolderName.Calendar);
- CalendarView calView = new CalendarView(startDate, endDate, numAppts);
- calView.PropertySet = new PropertySet(ItemSchema.Subject, AppointmentSchema.Start, AppointmentSchema.End);
- FindItemsResults<Appointment> appointments = calFolder.FindAppointments(calView);
- return appointments;
- }
- public bool RoomFree()
- {
- DateTime timeNow = DateTime.Now;
- IEnumerable<Appointment> currAppt = from res in GetAppointments() where res.Start <= timeNow && res.End > timeNow + res.Duration select res;
- if (currAppt != null)
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- }
- }
Soweit funktioniert auch die Abfrage:
C#-Quellcode
- using Microsoft.Exchange.WebServices.Data;
- using System;
- namespace EWS
- {
- class Program
- {
- static void Main(string[] args)
- {
- EWSConnect con = new EWSConnect("EmailAddi", "Username", "Password", "Domain");
- bool roomFree = con.RoomFree();
- Console.WriteLine(roomFree);
- foreach (Appointment a in con.GetAppointments())
- {
- Console.WriteLine($"Betreff: {a.Subject}");
- Console.WriteLine($"Beginn: {a.Start}");
- Console.WriteLine($"Ende: {a.End}");
- }
- }
- }
- }
Termine werden auf der Console angezeigt.
Was leider nicht richtig angezeigt wird ist, ob der Raum zur Zeit frei ist oder nicht.
Egal was ich mit dem Datum (timeNow) anstelle es kommt immer False raus.
Wo ist da mein Denkfehler?
Danke Euch
"Hier könnte Ihre Werbung stehen..."