Hallo,
wollte hier auch mal einen Code abgeben und fragen, was zu verbessern wäre.
Erstmal, es geht darum, Termine eines Besprechungsraums abzufragen und zu zeigen ob der Raum zum jetzigen Zeitpunkt frei oder gebucht ist.
Der Code funktioniert bestens, aber eventuell kann man da noch was verbsssern bevor ich mir eine dll erstelle und an die grafische Oberfläche gehe...
Hier die Klasse EWSConnect:
Spoiler anzeigen
der Aufruf erfolgt dann Beispielhaft so:
Spoiler anzeigen
die Ausgabe auf der Console sieht so aus:
Da ich mich in Zukunft mehr mit C# beschäftigen will/muss, wären Eure Kommentare sehr hilfreich...
Danke Euch
Gruß Micha
wollte hier auch mal einen Code abgeben und fragen, was zu verbessern wäre.
Erstmal, es geht darum, Termine eines Besprechungsraums abzufragen und zu zeigen ob der Raum zum jetzigen Zeitpunkt frei oder gebucht ist.
Der Code funktioniert bestens, aber eventuell kann man da noch was verbsssern bevor ich mir eine dll erstelle und an die grafische Oberfläche gehe...
Hier die Klasse EWSConnect:
C#-Quellcode
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using Microsoft.Exchange.WebServices.Data;
- namespace EWS
- {
- class EWSConnect
- {
- //Properties
- public string mailBox { get; set; }
- public string user { get; set; }
- public string pass { get; set; }
- public string domain { get; set; }
- public DateTime startDate { get; set; }
- public DateTime endDate { get; set; }
- public int maxItems { get; set; }
- public bool IsRoomFree { get; private set; }
- //Fields
- DateTime timeNow = DateTime.Now;
- //Constructor
- public EWSConnect(string mailBox, string user, string pass, string domain, DateTime startDate, DateTime endDate, int maxItems)
- {
- this.mailBox = mailBox;
- this.user = user;
- this.pass = pass;
- this.domain = domain;
- this.startDate = startDate;
- this.endDate = endDate;
- this.maxItems = maxItems;
- }
- //Function
- public FindItemsResults<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(this.startDate, this.endDate, this.maxItems);
- calView.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties);
- FindItemsResults<Appointment> appointments = calFolder.FindAppointments(calView);
- IEnumerable<Appointment> result = from a in appointments where timeNow >= a.Start && timeNow <= a.End select a;
- if (result.Any()) { IsRoomFree = false; } else { IsRoomFree = true; }
- return appointments;
- }
- //Method
- public string CheckAllocation(string room)
- {
- IEnumerable<Appointment> busyResult = from a in GetAppointments() where timeNow >= a.Start && timeNow <= a.End select a;
- IEnumerable<Appointment> freeResult = (from a in GetAppointments() where a.Start >= timeNow select a).Take(1);
- string message = "";
- if (!IsRoomFree)
- {
- foreach (Appointment a in busyResult)
- {
- message = $"Der Raum {room} ist belegt, bitte anderen Raum buchen \nGebucht: {a.Start:d}, {a.Start:t} - {a.End:t} Uhr";
- }
- }
- else
- {
- foreach (Appointment a in freeResult)
- {
- message = $"Der Raum {room} ist frei und kann gebucht werden. \nNächste Buchung: {a.Start:d}, {a.Start:t} - {a.End:t} Uhr";
- }
- }
- return message;
- }
- }
- }
der Aufruf erfolgt dann Beispielhaft so:
C#-Quellcode
- using System;
- namespace EWS
- {
- class Program
- {
- static void Main(string[] args)
- {
- DateTime dateFrom = DateTime.Now.AddDays(-1);
- DateTime dateTo = dateFrom.AddDays(14);
- string room = "";
- EWSConnect meeting_application = new EWSConnect("MailBox", "UserName", "Password", "Domain",dateFrom, dateTo, 10);
- room = "Application Office";
- Console.WriteLine(meeting_application.CheckAllocation(room));
- EWSConnect meeting_bioCel = new EWSConnect("MailBox", "UserName", "Password", "Domain",dateFrom, dateTo, 10);
- room = "BioCel";
- Console.WriteLine(meeting_bioCel.CheckAllocation(room));
- EWSConnect meeting_aquadyn = new EWSConnect("MailBox", "UserName", "Password", "Domain",dateFrom, dateTo, 10);
- room = "Aquadyn";
- Console.WriteLine(meeting_aquadyn.CheckAllocation(room));
- }
- }
- }
die Ausgabe auf der Console sieht so aus:
Da ich mich in Zukunft mehr mit C# beschäftigen will/muss, wären Eure Kommentare sehr hilfreich...
Danke Euch
Gruß Micha
"Hier könnte Ihre Werbung stehen..."