示例#1
0
        /// <summary>
        /// Populates the serialization object job with the info from the API.
        /// </summary>
        /// <param name="src">The source.</param>
        private void PopulateJobInfo(SerializableJobListItem src)
        {
            ID             = src.JobID;
            InstallerID    = src.InstallerID;
            InstalledItem  = StaticBlueprints.GetBlueprintByID(src.BlueprintTypeID);
            Runs           = src.Runs;
            Cost           = src.Cost;
            Probability    = src.Probability;
            SuccessfulRuns = src.SuccessfulRuns;
            //InstalledTime = src.InstallTime;
            //InstalledME = src.InstalledItemMaterialLevel;
            //InstalledPE = src.InstalledItemProductivityLevel;
            StartDate = src.StartDate;
            EndDate   = src.EndDate;
            PauseDate = src.PauseDate;
            IssuedFor = src.IssuedFor;
            m_installedItemLocationID = src.FacilityID;
            UpdateLocation();

            UpdateInstallation();
            if (Enum.IsDefined(typeof(BlueprintActivity), src.ActivityID))
            {
                Activity = (BlueprintActivity)Enum.ToObject(typeof(BlueprintActivity), src.ActivityID);
            }

            OutputItem = GetOutputItem(src.ProductTypeID);
            //if (Enum.IsDefined(typeof(BlueprintType), src.InstalledItemCopy))
            //    BlueprintType = (BlueprintType)Enum.ToObject(typeof(BlueprintType), src.InstalledItemCopy);
        }
示例#2
0
        /// <summary>
        /// Gets the state of a job.
        /// </summary>
        /// <param name="src">The serializable source.</param>
        /// <returns>State of the seriallzable job.</returns>
        private static JobState GetState(SerializableJobListItem src)
        {
            //if (src.CompletedDate != DateTime.MinValue)
            //    return JobState.Active;

            switch ((CCPJobCompletedStatus)src.Status)
            {
            // Active States
            case CCPJobCompletedStatus.Installed:
                return(JobState.Active);

            // Canceled States
            case CCPJobCompletedStatus.Canceled:
                return(JobState.Canceled);

            // Failed States
            case CCPJobCompletedStatus.Reverted:
                return(JobState.Failed);

            // Delivered States
            case CCPJobCompletedStatus.Delivered:
                return(JobState.Delivered);

            // Paused States
            case CCPJobCompletedStatus.Paused:
                return(JobState.Paused);

            default:
                throw new NotImplementedException();
            }
        }
示例#3
0
        /// <summary>
        /// Constructor from the API.
        /// </summary>
        /// <param name="src">The source.</param>
        /// <exception cref="System.ArgumentNullException">src</exception>
        internal IndustryJob(SerializableJobListItem src)
        {
            src.ThrowIfNull(nameof(src));

            PopulateJobInfo(src);
            State           = GetState(src);
            LastStateChange = DateTime.UtcNow;
            ActiveJobState  = GetActiveJobState();
        }
示例#4
0
        /// <summary>
        /// Try to update this job with a serialization object from the API.
        /// </summary>
        /// <param name="src">The serializable source.</param>
        /// <returns>True if import sucessful otherwise, false.</returns>
        internal bool TryImport(SerializableJobListItem src)
        {
            // Note that, before a match is found, all jobs have been marked for deletion : m_markedForDeletion == true

            // Checks whether ID is the same
            if (!MatchesWith(src))
            {
                return(false);
            }

            // Prevent deletion
            MarkedForDeletion = false;

            // Update infos (if ID is the same it may have been modified)
            if (IsModified(src))
            {
                // Job is from a serialized object, so populate the missing info
                if (InstalledItem == null)
                {
                    PopulateJobInfo(src);
                }
                else
                {
                    EndDate   = src.EndDate;
                    PauseDate = src.PauseDate;
                }

                State           = PauseDate == DateTime.MinValue ? JobState.Active : JobState.Paused;
                ActiveJobState  = GetActiveJobState();
                LastStateChange = DateTime.UtcNow;
            }

            // Job is from a serialized object, so populate the missing info
            if (InstalledItem == null)
            {
                PopulateJobInfo(src);
            }

            // Update state
            JobState state = GetState(src);

            if (State == JobState.Paused || state == State)
            {
                return(true);
            }

            State           = state;
            LastStateChange = DateTime.UtcNow;

            return(true);
        }
示例#5
0
        /// <summary>
        /// Try to update this job with a serialization object from the API.
        /// </summary>
        /// <param name="src">The serializable source.</param>
        /// <returns>True if import sucessful otherwise, false.</returns>
        internal bool TryImport(SerializableJobListItem src)
        {
            bool matches = MatchesWith(src);

            // Note that, before a match is found, all jobs have been marked for deletion:
            // m_markedForDeletion == true
            if (matches)
            {
                MarkedForDeletion = false;
                // Update information (if ID is the same it may have been modified)
                if (IsModified(src))
                {
                    // Job is from a serialized object, so populate the missing info
                    if (InstalledItem == null)
                    {
                        PopulateJobInfo(src);
                    }
                    else
                    {
                        EndDate   = src.EndDate;
                        PauseDate = src.PauseDate;
                    }
                    State = (PauseDate == DateTime.MinValue) ? JobState.Active : JobState.
                            Paused;
                    ActiveJobState  = GetActiveJobState();
                    LastStateChange = DateTime.UtcNow;
                }
                // Job is from a serialized object, so populate the missing info
                if (InstalledItem == null)
                {
                    PopulateJobInfo(src);
                }
                var state = GetState(src);
                if (state != State)
                {
                    State           = state;
                    LastStateChange = DateTime.UtcNow;
                }
            }
            return(matches);
        }
示例#6
0
 /// <summary>
 /// Constructor from the API.
 /// </summary>
 /// <param name="src"></param>
 internal IndustryJob(SerializableJobListItem src)
 {
     m_state               = GetState(src);
     m_jobID               = src.JobID;
     m_installedItemID     = src.InstalledItemTypeID;
     m_installedItem       = StaticBlueprints.GetBlueprintByID(src.InstalledItemTypeID);
     m_outputItemID        = src.OutputTypeID;
     m_outputItem          = GetOutputItem(src.OutputTypeID);
     m_runs                = src.Runs;
     m_activity            = (BlueprintActivity)Enum.ToObject(typeof(BlueprintActivity), src.ActivityID);
     m_blueprintType       = (BlueprintType)Enum.ToObject(typeof(BlueprintType), src.InstalledItemCopy);
     m_installation        = GetInstallation(src.OutputLocationID);
     m_solarSystem         = StaticGeography.GetSystem(src.SolarSystemID);
     m_installedTime       = src.InstallTime;
     m_installedItemME     = src.InstalledItemMaterialLevel;
     m_installedItemPE     = src.InstalledItemProductivityLevel;
     m_beginProductionTime = src.BeginProductionTime;
     m_endProductionTime   = src.EndProductionTime;
     m_pauseProductionTime = src.PauseProductionTime;
     m_lastStateChange     = DateTime.UtcNow;
     m_issuedFor           = src.IssuedFor;
     m_activeJobState      = GetActiveJobState();
 }
示例#7
0
 /// <summary>
 /// Checks whether the given API object matches with this job.
 /// </summary>
 /// <param name="src"></param>
 /// <returns></returns>
 internal bool IsModified(SerializableJobListItem src)
 {
     return(src.EndProductionTime != m_endProductionTime ||
            src.PauseProductionTime != m_pauseProductionTime);
 }
示例#8
0
 /// <summary>
 /// Checks whether the given API object matches with this job.
 /// </summary>
 /// <param name="src"></param>
 /// <returns></returns>
 internal bool MatchesWith(SerializableJobListItem src)
 {
     return(src.JobID == m_jobID);
 }
示例#9
0
 /// <summary>
 /// Checks whether the given API object has been modified.
 /// </summary>
 /// <param name="src"></param>
 /// <returns></returns>
 private bool IsModified(SerializableJobListItem src) => src.EndDate != EndDate ||
 src.PauseDate != PauseDate;
示例#10
0
 /// <summary>
 /// Checks whether the given API object matches with this job.
 /// </summary>
 /// <param name="src"></param>
 /// <returns></returns>
 private bool MatchesWith(SerializableJobListItem src) => src.JobID == ID;