C# ile Microsoft Exchange Web Service Kullanarak Takvime Erişip Takvim Etkinliğini Güncelleme

Merhaba arkadaşlar bugün sizlere C# kodu ile Microsoft Exchange servise bağlanarak var olan bir etkinliği nasıl güncelleyebileceğinizden bahsedeceğim.

Daha önceki yazılarımda C# ile Microsoft Exchange Web Service Kullanarak Takvime Erişip Takvim Verilerini Almak ve C# ile Microsoft Exchange Web Service Kullanarak Takvime Erişip Takvime Etkinlik Ekleme işlemlerinden bahsetmiştim.

NOT!!!: Bu kısımda dikkat etmemiz gereken en önemli kısım etkinliğin “Id” si yerine “ICalUid” sini kullanmamız gerekmektedir. Çünkü burada “Id” exchange web servise bağlanılan kullanıcıya göre değişik gelmektedir ama “ICalUid” değişmemektedir.

ExchangeService service = ConnectToService(EwsUserName, EwsUserPass, EwsDomainName, ExchangeVersion.Exchange2013, EwsServiceUrl, null);
ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true;
FolderId rfRootFolderid = new FolderId(WellKnownFolderName.Calendar, EventUpdateUserEmailAddress );
CalendarFolder calendar = CalendarFolder.Bind(service, rfRootFolderid, new PropertySet());
CalendarView cView = new CalendarView(DateTime.Now.Date.AddMonths(-1), DateTime.Now.Date.AddMonths(2));
FindItemsResults<Appointment> findResults = service.FindAppointments(rfRootFolderid, cView);
service.LoadPropertiesForItems(findResults, new PropertySet(
AppointmentSchema.Id,
AppointmentSchema.ICalUid,
AppointmentSchema.Subject,
AppointmentSchema.Start,
AppointmentSchema.End,
AppointmentSchema.Duration,
AppointmentSchema.IsAllDayEvent,
AppointmentSchema.DisplayTo,
AppointmentSchema.DisplayCc,
AppointmentSchema.Organizer,
AppointmentSchema.Categories,
AppointmentSchema.Location,
AppointmentSchema.RequiredAttendees,
AppointmentSchema.Sensitivity));
foreach (Appointment appointment in findResults)
{
if (appointment.ICalUid == appointmentId)
{
appointment.Subject = subject;
appointment.Start = Convert.ToDateTime(startDate);
appointment.End = Convert.ToDateTime(endDate);
appointment.Location = location;
appointment.Resources.Clear();
appointment.Resources.Add(meetingRoom);
appointment.RequiredAttendees.Clear();
if (attendees != "")
{
var arrayAttendee = attendees.Split(';');
foreach (string item in arrayAttendee)
{
appointment.RequiredAttendees.Add(item);
}
}
appointment.Update(ConflictResolutionMode.AutoResolve, SendInvitationsOrCancellationsMode.SendOnlyToAll);
}
}

Yukarı daki kodda yazılan parametreleri açıklayacak olursak:

EwsUserName : Exchange Web Servise bağlanılacak olan kullanıcının adı

EwsUserPass : Exchange Web Servise bağlanılacak olan kullanıcının şifresi

EwsDomainName : Exchange Web Servise bağlanılacak olan kullanıcının domain ismi

ExchangeVersion.Exchange2013 : Exchange versiyonuna göre seçilecektir

subject : Etkinliğin açıklaması

startDate : Etkinliğin başlangıç tarihi ve saati

endDate : Etkinliğin bitiş tarihi ve saati

location : Etkinliği lokasyonu

meetingRoom : Varsa eğer etkinlik odasının mail adresi

attendees : etkinliğe katılan katılımcıların mail adresleri

EventUpdateUserEmailAddress : etkinliği oluşturmuş olan kişinin mail adresi

appointmentId : Güncellenecek etkinliğin “ICalUid” id si

Kodun

CalendarView cView = new CalendarView(DateTime.Now.Date.AddMonths(-1), DateTime.Now.Date.AddMonths(2));

kısmında hangi tarih aralığındaki etkinlikleri çekmek istediğinizi belirtiyorsunuz.

Gerekli alanları doğru şekilde tanımlarsanız ve dediğim gibi Id ye dikkat ederseniz sorunsuz güncelleme işlemini gerçekleşecektir.

Bir Cevap Yazın