Hi Telerik team,
I am working on sharepoint 2010 and would like to Use Silverlight Telerik Control(radScheduler).
I am Creatiing a WCF servie to rollup calendar list which return generica list of Appoiment objects.can i use this class in WCF Service or i need to create a Custom class with DataContract.
Please find the code
Please advise.
Ronak
I am working on sharepoint 2010 and would like to Use Silverlight Telerik Control(radScheduler).
I am Creatiing a WCF servie to rollup calendar list which return generica list of Appoiment objects.can i use this class in WCF Service or i need to create a Custom class with DataContract.
Please find the code
[ServiceBehavior]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public
class
PublicEventsRollupService : IPublicEventsRollupService
{
public
List<Appointment> GetAllPublicCalEvents() {
SPWeb web = SPContext.Current.Web;
DateTime startdate =
new
DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
string
offset = startdate.Subtract(DateTime.Now).Days.ToString();
SPSiteDataQuery Query =
new
SPSiteDataQuery();
Query.Lists =
"<Lists ServerTemplate=\"106\"/>"
;
Query.Webs =
"<Webs Scope='Recursive' />"
;
Query.Query =
"<OrderBy>"
+
"<FieldRef Name='EventDate' />"
+
"</OrderBy>"
+
"<Where>"
+
"<And>"
+
"<Geq><FieldRef Name='EndDate'/><Value Type='DateTime'><Today OffsetDays='"
+ offset +
"' /></Value></Geq>"
+
"<Eq><FieldRef Name='Public'/><Value Type='Text'>1</Value></Eq>"
+
"</And>"
+
"</Where>"
;
Query.ViewFields +=
"<FieldRef Name='ID' />"
;
Query.ViewFields =
"<FieldRef Name='Title' />"
;
Query.ViewFields +=
"<FieldRef Name='EventDate' />"
;
Query.ViewFields +=
"<FieldRef Name='EndDate' />"
;
Query.ViewFields +=
"<FieldRef Name='Location' />"
;
Query.ViewFields +=
"<FieldRef Name='Event_x0020_Description' />"
;
Query.ViewFields +=
"<FieldRef Name='fRecurrence' />"
;
Query.ViewFields +=
"<FieldRef Name='fAllDayEvent' />"
;
//Query.ViewFields += "<ProjectProperty Name=\"Title\" />";
Query.ViewFields +=
"<FieldRef Name='RecurrenceData' />"
;
Query.ViewFields +=
"<FieldRef Name='XMLTZone' />"
;
Query.ViewFields +=
"<FieldRef Name='EventType' />"
;
Query.ViewFields +=
"<FieldRef Name='MasterSeriesItemID' />"
;
Query.ViewFields +=
"<FieldRef Name='RecurrenceID' />"
;
DataTable events = web.GetSiteData(Query);
List<Appointment> publicCalEvents =
null
;
if
(events !=
null
&& events.Rows.Count > 0)
{
publicCalEvents =
new
List<Appointment>();
// processRecurrenceEvents(events,publicCalEvents);
processSingleEvents(events, publicCalEvents);
}
return
publicCalEvents;
}
//Function to Process Each single event and Convert to RadScheduler Event
private
void
processSingleEvents(DataTable allEvents, List<Appointment> singleEvents)
{
//Filter Datatable to get only Single events
allEvents.DefaultView.RowFilter =
"fRecurrence = '0'"
;
DataView singleEventsView = allEvents.DefaultView;
DataTable singleEventsDT = singleEventsView.ToTable();
//Process Single Event and Create Telerik appoiment Object
foreach
(DataRow row
in
singleEventsDT.Rows) {
Appointment regAppoiment =
new
Appointment();
regAppoiment.UniqueId = row[
"ID"
].ToString();
regAppoiment.Subject = row[
"Title"
].ToString();
regAppoiment.Start = Convert.ToDateTime(row[
"EventDate"
]).ToLocalTime();
regAppoiment.End = Convert.ToDateTime(row[
"EndDate"
]).ToLocalTime();
regAppoiment.IsAllDayEvent = Convert.ToBoolean(row[
"fAllDayEvent"
].ToString());
regAppoiment.Body = row[
"Event_x0020_Description"
].ToString();
regAppoiment.Location = row[
"Location"
].ToString();
singleEvents.Add(regAppoiment);
}
}
But i am getting following exception when try to browse service in browser after deploymnet.
An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.InvalidOperationException: An exception was thrown in a call to a WSDL export extension: System.ServiceModel.Description.DataContractSerializerOperationBehavior
contract: http://tempuri.org/:IPublicEventsRollupService ----> System.TypeLoadException: Could not load type 'System.TimeZoneInfo' from assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
at System.Signature._GetSignature(SignatureStruct& signature, Void* pCorSig, Int32 cCorSig, IntPtr fieldHandle, IntPtr methodHandle, IntPtr declaringTypeHandle)
at System.Signature..ctor(RuntimeMethodHandle methodHandle, RuntimeTypeHandle declaringTypeHandle)
at System.Reflection.RuntimeMethodInfo.get_Signature()
at System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters()
at System.Reflection.RuntimeMethodInfo.GetParameters()
at System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper.ImportDataMembers()
at System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper..ctor(Type type)
at System.Runtime.Serialization.ClassDataContract..ctor(Type type)
at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.CreateDataContract(Int32 id, RuntimeTypeHandle typeHandle, Type type)
at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.GetDataContractSkipValidation(Int32 id, RuntimeTypeHandle typeHandle, Type type)
at System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper..ctor(Type type)
at System.Runtime.Serialization.ClassDataContract..ctor(Type type)
at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.CreateDataContract(Int32 id, RuntimeTypeHandle typeHandle, Type type)
at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.GetDataContractSkipValidation(Int32 id, RuntimeTypeHandle typeHandle, Type type)
at System.Runtime.Serialization.DataContractSet.GetDataContract(Type clrType)
at System.Runtime.Serialization.DataContractSet.AddCollectionDataContract(CollectionDataContract collectionDataContract)
at System.Runtime.Serialization.DataContractSet.Add(XmlQualifiedName name, DataContract dataContract)
at System.Runtime.Serialization.DataContractSet.Add(Type type)
at System.Runtime.Serialization.XsdDataContractExporter.Export(Type type)
at System.ServiceModel.Description.MessageContractExporter.ExportType(Type type, String partName, String operationName, XmlSchemaType& xsdType)
at System.ServiceModel.Description.DataContractSerializerMessageContractExporter.ExportBody(Int32 messageIndex, Object state)
at System.ServiceModel.Description.MessageContractExporter.ExportMessage(Int32 messageIndex, Object state)
at System.ServiceModel.Description.MessageContractExporter.ExportMessageContract()
at System.ServiceModel.Description.WsdlExporter.CallExtension(WsdlContractConversionContext contractContext, IWsdlExportExtension extension)
--- End of inner ExceptionDetail stack trace ---
at System.ServiceModel.Description.WsdlExporter.CallExtension(WsdlContractConversionContext contractContext, IWsdlExportExtension extension)
at System.ServiceModel.Description.WsdlExporter.CallExportContract(WsdlContractConversionContext contractContext)
at System.ServiceModel.Description.WsdlExporter.ExportContract(ContractDescription contract)
at System.ServiceModel.Description.WsdlExporter.ExportEndpoint(ServiceEndpoint endpoint, XmlQualifiedName wsdlServiceQName)
at System.ServiceModel.Description.WsdlExporter.ExportEndpoints(IEnumerable`1 endpoints, XmlQualifiedName wsdlServiceQName)
at System.ServiceModel.Description.ServiceMetadataBehavior.MetadataExtensionInitializer.GenerateMetadata()
at System.ServiceModel.Description.ServiceMetadataExtension.EnsureInitialized()
at System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.InitializationData.InitializeFrom(ServiceMetadataExtension extension)
at System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.GetInitData()
at System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.TryHandleDocumentationRequest(Message httpGetRequest, String[] queries, Message& replyMessage)
at System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.ProcessHttpRequest(Message httpGetRequest)
at SyncInvokeGet(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
Please advise.
Ronak