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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
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
1 |
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.
İlk Yorumu Siz Yapın