Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }
Beispiel #5
0
        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);
        }
Beispiel #7
0
        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();
        }
Beispiel #8
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #15
0
        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);
        }
Beispiel #17
0
        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);
        }
Beispiel #18
0
        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);
        }
Beispiel #19
0
        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);
        }
Beispiel #20
0
        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);
        }
Beispiel #21
0
 private OperatingHours(string Id, string TimeZone) :
     this(Id)
 {
     this.TimeZone = DeserializationUtils.GetTimeZoneFromSFString(TimeZone);
 }