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(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("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 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 static void RemoveListFromReferenceResolver <T>(List <T> i_ObjectList, SFRefereceResolver i_RefereceResolver) where T : sObject { if (i_ObjectList != null) { i_ObjectList.ForEach(i_RefereceResolver.DeleteReference); } }
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 static void AddListToReferenceResolver <T>(List <T> i_ObjectList, SFRefereceResolver i_RefereceResolver) where T : sObject { if (i_ObjectList != null) { i_ObjectList.ForEach(i_RefereceResolver.AddReference); } }
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("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) { 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); if (OperatingHours != null) { OperatingHours.TimeSlots.Add(this); } base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal static void ProcessRelatedObjectsCollection <T>(RelatedObjectCollection <T> i_ObjectCollection, SFRefereceResolver i_ReferenceResolver) where T : sObject { if (i_ObjectCollection != null) { foreach (T innerRecord in i_ObjectCollection.records) { i_ReferenceResolver.AddReference(innerRecord); innerRecord.updateReferencesAfterDeserialize(i_ReferenceResolver); } } }
//public static SFOptimizationResults Parse(string i_StringToPrase, bool i_IsManaged = true) //{ // return Parse(i_StringToPrase, i_IsManaged, null); //} internal static SFOptimizationResults Parse(string i_StringToPrase, SFRefereceResolver i_ReferenceReslover) { if (string.IsNullOrWhiteSpace(i_StringToPrase)) { throw new ArgumentNullException("i_StringToPrase"); } SFOptimizationResults parsedOptimizationObjects = JsonConvert.DeserializeObject <SFOptimizationResults>(i_StringToPrase, DeserializationUtils.SFJsonSerializerSettings); parsedOptimizationObjects.postDeserialization(i_ReferenceReslover); return(parsedOptimizationObjects); }
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 static T CreateEmptyReferenceFromId <T>(string i_ObjectId, T i_Property, SFRefereceResolver i_RefereceResolver) where T : sObject { if (i_Property == null) { if (!string.IsNullOrEmpty(i_ObjectId)) { i_Property = (T)Activator.CreateInstance(typeof(T), i_ObjectId); i_RefereceResolver.AddReference(i_Property); } } return(i_Property); }
internal override void updateReferencesAfterDeserialize(SFRefereceResolver i_ReferenceResolver, bool i_ShouldAddToRelatedLists = true) { HashSet <string> pinnedStatusesSet; if (string.IsNullOrEmpty(Pinned_Statuses__c)) { pinnedStatusesSet = new HashSet <string>(); } else { pinnedStatusesSet = Pinned_Statuses__c.Split(',').ToHashSet(); } PinnedStatuses = pinnedStatusesSet.ToImmutableHashSet(); base.updateReferencesAfterDeserialize(i_ReferenceResolver); }
internal override void removeReferencesBeforeDelete(SFRefereceResolver i_ReferenceResolver) { updateReferencesAfterDeserialize(i_ReferenceResolver, false); if (ServiceAppointment != null) { if (ServiceResource != null && ServiceResource.Equals(ServiceAppointment.ScheduledSTM.ServiceResource)) { ServiceAppointment.ScheduledSTM = null; } ServiceAppointment.ServiceResources.Remove(this); } base.removeReferencesBeforeDelete(i_ReferenceResolver); }
internal static T GetSingleObjectReference <T>(string i_ObjectId, JToken i_ObjectJson, SFRefereceResolver i_ReferenceResolver) where T : sObject { T objectReference; if (!i_ReferenceResolver.TryGetObjectFromId(i_ObjectId, out objectReference)) { if (i_ObjectJson != null && i_ObjectJson.Type == JTokenType.Object) { objectReference = i_ObjectJson.ToObject <T>(JsonSerializer.Create(SFJsonSerializerSettings)); i_ReferenceResolver.AddReference(objectReference); objectReference.updateReferencesAfterDeserialize(i_ReferenceResolver); } } return(objectReference); }
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); }
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 void populateServiceParentsList(SFRefereceResolver i_RefereceResolver) { if (ServicesParents == null) { ServicesParents = new Dictionary <string, IServiceAppoinmentParent>(); } if (parents != null) { JsonSerializer serializer = JsonSerializer.Create(DeserializationUtils.SFJsonSerializerSettings); foreach (JObject serviceParent in parents) { JToken attributeType = serviceParent.SelectToken("attributes.type"); if (attributeType != null) { string objectType = attributeType.ToString(); switch (objectType) { case "WorkOrder": WorkOrder workOrder = serviceParent.ToObject <WorkOrder>(serializer); i_RefereceResolver.AddReference(workOrder); ServicesParents.Add(workOrder.Id, workOrder); break; case "WorkOrderLineItem": WorkOrderLineItem workOrderLineItem = serviceParent.ToObject <WorkOrderLineItem>(serializer); i_RefereceResolver.AddReference(workOrderLineItem); ServicesParents.Add(workOrderLineItem.Id, workOrderLineItem); break; } } } parents.Clear(); parents = null; } }
internal static T GetSingleObjectReference <T>(string i_ObjectId, SFRefereceResolver i_ReferenceResolver) where T : sObject { return(GetSingleObjectReference <T>(i_ObjectId, null, i_ReferenceResolver)); }
internal virtual void removeReferencesBeforeDelete(SFRefereceResolver i_ReferenceResolver) { }