internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("ServiceCrew"); ServiceCrew = DeserializationUtils.GetSingleObjectReference <ServiceCrew>(ServiceCrewId, objectJson, i_ReferenceResolver); if (ServiceCrew != null) { ServiceCrew.ServiceResources.Add(this); } DeserializationUtils.ProcessRelatedObjectsCollection(serviceTerritoriesCollection, i_ReferenceResolver); ServiceTerritoriesByType = ServiceTerritories.ToLookup(stm => stm.TerritoryType); serviceTerritoriesCollection = null; DeserializationUtils.ProcessRelatedObjectsCollection(serviceResourceCapacitiesCollection, i_ReferenceResolver); serviceResourceCapacitiesCollection = null; DeserializationUtils.ProcessRelatedObjectsCollection(serviceResourceSkillsCollection, i_ReferenceResolver); serviceResourceSkillsCollection = null; DeserializationUtils.ProcessRelatedObjectsCollection(serviceCrewMembersCollection, i_ReferenceResolver); serviceCrewMembersCollection = null; DeserializationUtils.ProcessRelatedObjectsCollection(resourceShiftsCollection, i_ReferenceResolver); resourceShiftsCollection = null; base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal virtual void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { if (m_JSONAdditionalData != null) { foreach (KeyValuePair <string, JToken> nonSchemaProperty in m_JSONAdditionalData) { switch (nonSchemaProperty.Value.Type) { case JTokenType.Boolean: BooleanFields[nonSchemaProperty.Key] = nonSchemaProperty.Value.Value <bool?>(); break; case JTokenType.Float: case JTokenType.Integer: NumericFields[nonSchemaProperty.Key] = nonSchemaProperty.Value.Value <double?>(); break; case JTokenType.Object: JToken junctionToken = nonSchemaProperty.Value; RelatedObjectCollection <sObject> deserializedJunctions = junctionToken.ToObject <RelatedObjectCollection <sObject> >(); DeserializationUtils.ProcessRelatedObjectsCollection(deserializedJunctions, i_ReferenceResolver); JunctionFields[nonSchemaProperty.Key] = deserializedJunctions.records; break; case JTokenType.Date: DateFields[nonSchemaProperty.Key] = nonSchemaProperty.Value.Value <DateTime?>(); break; case JTokenType.String: StringFields[nonSchemaProperty.Key] = nonSchemaProperty.Value.Value <string>(); break; } } } }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("RelatedRecord"); sObject skillRequirementParent = DeserializationUtils.GetSingleObjectReference <sObject>(RelatedRecordId, objectJson, i_ReferenceResolver); switch (skillRequirementParent.attributes.type) { case "WorkOrder": RelatedRecord = (WorkOrder)skillRequirementParent; break; case "WorkOrderLineItem": RelatedRecord = (WorkOrderLineItem)skillRequirementParent; break; case "WorkType": RelatedRecord = (WorkType)skillRequirementParent; break; } if (RelatedRecord != null) { RelatedRecord.SkillRequirements.Add(this); } objectJson = removeObjectJTokenFromAdditionalDictionary("Skill"); Skill = DeserializationUtils.GetSingleObjectReference <Skill>(SkillId, objectJson, i_ReferenceResolver); Skill = DeserializationUtils.CreateEmptyReferenceFromId(SkillId, Skill, i_ReferenceResolver); base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal void postDeserialization() { DeserializationUtils.AddListToReferenceResolver(territoriesList, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(SecondaryTerritories, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(Resources, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(Capacities, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(Breaks, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(NonAvailabilities, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(relocationsList, m_refereceResolver); populateServiceParentsList(m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(Services, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(CalendarDays, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(logicSettingsList, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(GeocodeSettingsList, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(optimizationSettingsList, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(schedulingPolicies, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(Objectives, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(WorkRules, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(timeDependenciesList, m_refereceResolver); DeserializationUtils.AddListToReferenceResolver(Metrics, m_refereceResolver); m_refereceResolver.UpdateStoredObjectsReferences(); }
internal void CopyNonNullValuesFromsObject(sObject i_Src) { if (i_Src == null) { return; } // Check myself and i_src are same type Type myDerivedType = GetType(); if (myDerivedType != i_Src.GetType()) { return; } //TODO: Check ids? BindingFlags propertiesSearchFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public; IEnumerable <PropertyInfo> nonEmptyProperties = myDerivedType.GetProperties(propertiesSearchFlags); foreach (PropertyInfo propertyToCopy in nonEmptyProperties) { object valueToCopy = propertyToCopy.GetValue(i_Src); if (DeserializationUtils.ShouldCopyPropertyValue(propertyToCopy, valueToCopy)) { propertyToCopy.SetValue(this, valueToCopy); } } }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("ServiceTerritory"); ServiceTerritory = DeserializationUtils.GetSingleObjectReference <ServiceTerritory>(ServiceTerritoryId, objectJson, i_ReferenceResolver); objectJson = removeObjectJTokenFromAdditionalDictionary("ParentWorkOrderLineItem"); ParentWorkOrderLineItem = DeserializationUtils.GetSingleObjectReference <WorkOrderLineItem>(ParentWorkOrderLineItemId, objectJson, i_ReferenceResolver); objectJson = removeObjectJTokenFromAdditionalDictionary("RootWorkOrderLineItem"); RootWorkOrderLineItem = DeserializationUtils.GetSingleObjectReference <WorkOrderLineItem>(RootWorkOrderLineItemId, objectJson, i_ReferenceResolver); objectJson = removeObjectJTokenFromAdditionalDictionary("WorkOrder"); WorkOrder = DeserializationUtils.GetSingleObjectReference <WorkOrder>(WorkOrderId, objectJson, i_ReferenceResolver); objectJson = removeObjectJTokenFromAdditionalDictionary("WorkType"); WorkType = DeserializationUtils.GetSingleObjectReference <WorkType>(WorkTypeId, objectJson, i_ReferenceResolver); VisitingHours__r = DeserializationUtils.GetSingleObjectReference <OperatingHours>(VisitingHours__c, i_ReferenceResolver); VisitingHours__r = DeserializationUtils.CreateEmptyReferenceFromId(VisitingHours__c, VisitingHours__r, i_ReferenceResolver); DeserializationUtils.ProcessRelatedObjectsCollection(skillRequirementsCollection, i_ReferenceResolver); skillRequirementsCollection = null; base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal void postDeserialization(SFRefereceResolver i_refereceResolver = null) { if (i_refereceResolver == null) { i_refereceResolver = new SFRefereceResolver(); } DeserializationUtils.RemoveListFromReferenceResolver(BreaksToDelete, i_refereceResolver); DeserializationUtils.RemoveListFromReferenceResolver(AssignedResourcesToDelete, i_refereceResolver); DeserializationUtils.AddListToReferenceResolver(Services, i_refereceResolver); DeserializationUtils.AddListToReferenceResolver(Absences, i_refereceResolver); DeserializationUtils.AddListToReferenceResolver(AssignedResourcesToUpdate, i_refereceResolver); if (AssignedResourcesToCreate != null) { AssignedResourcesToCreate.ForEach(ar => ar.updateReferencesAfterDeserialize(i_refereceResolver)); } if (BreaksToCreate != null) { BreaksToCreate.ForEach(ra => ra.updateReferencesAfterDeserialize(i_refereceResolver)); } //i_refereceResolver.UpdateStoredObjectsReferences(); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("RecordType"); RecordType = DeserializationUtils.GetSingleObjectReference <RecordType>(RecordTypeId, objectJson, i_ReferenceResolver); base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("Resource"); Resource = DeserializationUtils.GetSingleObjectReference <ServiceResource>(ResourceId, objectJson, i_ReferenceResolver); base.updateReferencesAfterDeserialize(i_ReferenceResolver); ScheduledSTM = Resource.GetServiceTerritoryMemberByDateTime(Start.Value); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { DeserializationUtils.ProcessRelatedObjectsCollection(scheduling_Policy_GoalsCollection, i_ReferenceResolver); scheduling_Policy_GoalsCollection = null; DeserializationUtils.ProcessRelatedObjectsCollection(scheduling_Policy_Work_RuleCollection, i_ReferenceResolver); scheduling_Policy_Work_RuleCollection = null; base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("OperatingHours"); OperatingHours = DeserializationUtils.GetSingleObjectReference <OperatingHours>(OperatingHoursId, objectJson, i_ReferenceResolver); if (OperatingHours != null) { OperatingHours.TimeSlots.Add(this); } base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("ServiceResource"); ServiceResource = DeserializationUtils.GetSingleObjectReference <ServiceResource>(ServiceResourceId, objectJson, i_ReferenceResolver); if (ServiceResource != null) { ServiceResource.Capacities.Add(this); } base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("OperatingHours"); OperatingHours = DeserializationUtils.GetSingleObjectReference <OperatingHours>(OperatingHoursId, objectJson, i_ReferenceResolver); objectJson = removeObjectJTokenFromAdditionalDictionary("ParentTerritory"); ParentTerritory = DeserializationUtils.GetSingleObjectReference <ServiceTerritory>(ParentTerritoryId, objectJson, i_ReferenceResolver); objectJson = removeObjectJTokenFromAdditionalDictionary("TopLevelTerritory"); TopLevelTerritory = DeserializationUtils.GetSingleObjectReference <ServiceTerritory>(TopLevelTerritoryId, objectJson, i_ReferenceResolver); base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("WorkType"); WorkType = DeserializationUtils.GetSingleObjectReference <WorkType>(WorkTypeId, objectJson, i_ReferenceResolver); objectJson = removeObjectJTokenFromAdditionalDictionary("ServiceTerritory"); ServiceTerritory = DeserializationUtils.GetSingleObjectReference <ServiceTerritory>(ServiceTerritoryId, objectJson, i_ReferenceResolver); objectJson = removeObjectJTokenFromAdditionalDictionary("ParentRecord"); switch (ParentRecordType) { case "WorkOrder": ParentRecord = DeserializationUtils.GetSingleObjectReference <WorkOrder>(ParentRecordId, objectJson, i_ReferenceResolver); break; case "WorkOrderLineItem": ParentRecord = DeserializationUtils.GetSingleObjectReference <WorkOrderLineItem>(ParentRecordId, objectJson, i_ReferenceResolver); break; } DeserializationUtils.ProcessRelatedObjectsCollection(assignedResourcesCollection, i_ReferenceResolver); assignedResourcesCollection = null; Type myType = GetType(); string propertyName = "Scheduling_Policy_Used__r"; propertyName = DeserializationUtils.GetPropertyName(myType.GetProperty(propertyName), propertyName); objectJson = removeObjectJTokenFromAdditionalDictionary(propertyName); Scheduling_Policy_Used__r = DeserializationUtils.GetSingleObjectReference <Scheduling_Policy__c>(Scheduling_Policy_Used__c, objectJson, i_ReferenceResolver); propertyName = "Related_Service__r"; propertyName = DeserializationUtils.GetPropertyName(myType.GetProperty(propertyName), propertyName); objectJson = removeObjectJTokenFromAdditionalDictionary(propertyName); Related_Service__r = DeserializationUtils.GetSingleObjectReference <ServiceAppointment>(Related_Service__c, objectJson, i_ReferenceResolver); if (IsScheduled) { ScheduledSTM = ServiceResources.First().ServiceResource.GetServiceTerritoryMemberByDateTime(SchedStartTime.Value); } base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("OperatingHours"); OperatingHours = DeserializationUtils.GetSingleObjectReference <OperatingHours>(OperatingHoursId, objectJson, i_ReferenceResolver); objectJson = removeObjectJTokenFromAdditionalDictionary("ServiceResource"); ServiceResource = DeserializationUtils.GetSingleObjectReference <ServiceResource>(ServiceResourceId, objectJson, i_ReferenceResolver); if (ServiceResource != null && !string.IsNullOrEmpty(TerritoryType)) { ServiceResource.ServiceTerritories.Add(this); } objectJson = removeObjectJTokenFromAdditionalDictionary("ServiceTerritory");; ServiceTerritory = DeserializationUtils.GetSingleObjectReference <ServiceTerritory>(ServiceTerritoryId, objectJson, i_ReferenceResolver); base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("ServiceAppointment"); ServiceAppointment = DeserializationUtils.GetSingleObjectReference <ServiceAppointment>(ServiceAppointmentId, objectJson, i_ReferenceResolver); if (ServiceAppointment != null && i_ShouldAddToRelatedLists) { ServiceAppointment.ServiceResources.Add(this); } objectJson = removeObjectJTokenFromAdditionalDictionary("ServiceCrew"); ServiceCrew = DeserializationUtils.GetSingleObjectReference <ServiceCrew>(ServiceCrewId, objectJson, i_ReferenceResolver); objectJson = removeObjectJTokenFromAdditionalDictionary("ServiceResource"); ServiceResource = DeserializationUtils.GetSingleObjectReference <ServiceResource>(ServiceResourceId, objectJson, i_ReferenceResolver); base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { Type myType = GetType(); string propertyName = "Root_Service_Appointment__r"; propertyName = DeserializationUtils.GetPropertyName(myType.GetProperty(propertyName), propertyName); JToken objectJson = removeObjectJTokenFromAdditionalDictionary(propertyName); Root_Service_Appointment__r = DeserializationUtils.GetSingleObjectReference <ServiceAppointment>(Root_Service_Appointment__c, objectJson, i_ReferenceResolver); propertyName = "Service_Appointment_1__r"; propertyName = DeserializationUtils.GetPropertyName(myType.GetProperty(propertyName), propertyName); objectJson = removeObjectJTokenFromAdditionalDictionary(propertyName); Service_Appointment_1__r = DeserializationUtils.GetSingleObjectReference <ServiceAppointment>(Service_Appointment_1__c, objectJson, i_ReferenceResolver); if (Service_Appointment_1__r != null) { if (Service_Appointment_1__r.Time_Dependencies__r == null) { Service_Appointment_1__r.Time_Dependencies__r = new List <Time_Dependency__c>(); } Service_Appointment_1__r.Time_Dependencies__r.Add(this); } propertyName = "Service_Appointment_2__r"; propertyName = DeserializationUtils.GetPropertyName(myType.GetProperty(propertyName), propertyName); objectJson = removeObjectJTokenFromAdditionalDictionary(propertyName); Service_Appointment_2__r = DeserializationUtils.GetSingleObjectReference <ServiceAppointment>(Service_Appointment_2__c, objectJson, i_ReferenceResolver); // if (Service_Appointment_2__r != null) // { // if (Service_Appointment_2__r.Time_Dependencies__r == null) // { // Service_Appointment_2__r.Time_Dependencies__r = new List<Time_Dependency__c>(); // } // // Service_Appointment_2__r.Time_Dependencies__r.Add(this); // } base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) { JsonProperty property = base.CreateProperty(member, memberSerialization); if (property.PropertyName == "Name") { SFNameFieldAttribute classNameAttribute = member.DeclaringType.GetCustomAttribute <SFNameFieldAttribute>(); if (classNameAttribute != null) { property.PropertyName = classNameAttribute.FieldName; } } else { property.PropertyName = DeserializationUtils.GetPropertyName(member, property.PropertyName); } return(property); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { JToken objectJson = removeObjectJTokenFromAdditionalDictionary("RelatedRecord"); sObject resourcePreferenceParent = DeserializationUtils.GetSingleObjectReference <sObject>(RelatedRecordId, objectJson, i_ReferenceResolver); switch (resourcePreferenceParent.attributes.type) { case "WorkOrder": RelatedRecord = (WorkOrder)resourcePreferenceParent; break; } if (RelatedRecord != null) { RelatedRecord.ResourcePreferences.Add(this); } objectJson = removeObjectJTokenFromAdditionalDictionary("ServiceResource"); ServiceResource = DeserializationUtils.GetSingleObjectReference <ServiceResource>(ServiceResourceId, objectJson, i_ReferenceResolver); base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { Type myType = GetType(); string propertyName = "Scheduling_Policy__r"; propertyName = DeserializationUtils.GetPropertyName(myType.GetProperty(propertyName), propertyName); JToken objectJson = removeObjectJTokenFromAdditionalDictionary(propertyName); Scheduling_Policy__r = DeserializationUtils.GetSingleObjectReference <Scheduling_Policy__c>(Scheduling_Policy__c, objectJson, i_ReferenceResolver); if (Scheduling_Policy__r != null) { Scheduling_Policy__r.Objectives.Add(this); } propertyName = "Service_Goal__r"; propertyName = DeserializationUtils.GetPropertyName(myType.GetProperty(propertyName), propertyName); objectJson = removeObjectJTokenFromAdditionalDictionary(propertyName); Service_Goal__r = DeserializationUtils.GetSingleObjectReference <Service_Goal__c>(Service_Goal__c, objectJson, i_ReferenceResolver); base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
private OperatingHours(string Id, string TimeZone) : this(Id) { this.TimeZone = DeserializationUtils.GetTimeZoneFromSFString(TimeZone); }