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.

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

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

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

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