Lets have a look for internally whats happening in a Meeting Workspace.
If you open a meeting workspace web with Sharepoint Manager 2010 you can brows all components in a basic meeting workspace template.
That means sharepoint sperates data according this Instance Parameter. As you noticed if you look carefully above image we have 6 attendees . This number is sum of all attendees count .But when you connect a workspace with an InstanceID and if you compare fallowing properties for an Attendees list.
attendeesList.Items.Count is 2 : meens this instance attendees count.
Sharepoint is differantiate the attendees data automatically and internally for which meeting workspace instance in use.
So be careful when you are working with in Meeting Workspaces on InstaceID property and differantiation of data according to this property.
Sharepoint Manager 2010 is a very useful tool when you programming with Sharepoint. You can use it with define Column Names and properties for serval objects in hiearchically.
Results is: [URL], [List Title] -> There is a space char after “,” so you should use trim() function when you parsing this data.
//This webpart is only usable for Meeting Workspace Sites.
//Only the meeting organizer manage meetigs.
if (IsAppointmentExists(info.MeetingIdentifier)) //if Meeting request is already sent.
We are doing some gui operations.
Checking the owner mean organizer beacuse only orginazer manages meetings.
Prepare GUI according to if meeting is already send or not.
MeetingInfo LoadAppointment(string identifer) helper function brings us the Saved MeetingInfo in previous state from web.Properies bag.
That information is imported because we are storing Exchange Appointment object’s ID in this object.
We are getting current Meeting information and already created Appointment object. For updating attendees status a meeting request must already be created.
//Add Atteendees from Workspace Attendees List.
First we checking SavedMeetingInfo object is exists.
Appointment app = Appointment.Bind(conn.Service, SavedMeetingInfo.AppointmentID); // with this line we are binding already created Appointment object in Exchange. SavedMeetingInfo object contains AppointmentID which i mentioned above.
Update Appointment object that will resend all meeting request again via app.Update() command.
Set AppointmentID to new MeetingInfo class instance.
Like before we are checking SavedMeetInfo is exists , creating an exchange connection object and getting currentmeeting object.
Appointment app = Appointment.Bind(conn.Service, SavedMeetingInfo.AppointmentID); // with this line we are binding already created Appointment object in Exchange.
And Canceling Meeting via app.CancelMeeting() function.
Clearing previously saved MeetingInfo instance from web.properties.
Next Article: Part 3 Deployment.