Esempio n. 1
0
        /// <summary>
        /// Populates the serialization object contract with the info from the API.
        /// </summary>
        /// <param name="src">The source.</param>
        /// <exception cref="System.ArgumentNullException">src</exception>
        private void PopulateContractInfo(EsiContractListItem src)
        {
            src.ThrowIfNull(nameof(src));

            m_method         = src.APIMethod;
            ID               = src.ContractID;
            IssuerID         = src.IssuerID;
            AssigneeID       = src.AssigneeID;
            Description      = src.Title.IsEmptyOrUnknown() ? "(None)" : src.Title;
            IssuedFor        = src.ForCorp ? IssuedFor.Corporation : IssuedFor.Character;
            Issued           = src.DateIssued;
            Expiration       = src.DateExpired;
            Duration         = (int)Math.Round(src.DateExpired.Subtract(src.DateIssued).TotalDays);
            DaysToComplete   = src.NumDays;
            Price            = src.Price;
            Reward           = src.Reward;
            Collateral       = src.Collateral;
            Buyout           = src.Buyout;
            Volume           = src.Volume;
            m_startStationID = src.StartStationID;
            m_endStationID   = src.EndStationID;
            UpdateStation();
            UpdateContractInfo(src);

            Availability = src.Availability;
            ContractType = src.ContractType;
            // Issuer and assignee
            m_issuer = src.ForCorp ? Character.Corporation.Name : EveIDToName.GetIDToName(
                src.IssuerID);
            m_assignee = EveIDToName.GetIDToName(src.AssigneeID);
        }
Esempio n. 2
0
        /// <summary>
        /// Try to update this contract with a serialization object from the API.
        /// </summary>
        /// <param name="src">The serializable source.</param>
        /// <param name="endedContracts">The ended contracts.</param>
        /// <returns>True if import successful otherwise, false.</returns>
        internal bool TryImport(EsiContractListItem src, ICollection <Contract> endedContracts)
        {
            // Note that, before a match is found, all contracts have been marked for deletion:
            // m_markedForDeletion == true
            bool matches = MatchesWith(src);

            if (matches)
            {
                // Prevent deletion
                MarkedForDeletion = false;
                // Contract is from a serialized object, so populate the missing info
                if (IssuerID == 0L || Issuer.IsEmptyOrUnknown())
                {
                    PopulateContractInfo(src);
                }
                // Update if modified
                ContractState state = GetState(src);
                if (state != m_state || NeedsAttention)
                {
                    if (state != m_state || Overdue)
                    {
                        m_state = state;
                        UpdateContractInfo(src);
                    }
                    // If the contract has just finished or expired, add it to the ended list
                    if (NeedsAttention || state == ContractState.Finished)
                    {
                        endedContracts.Add(this);
                    }
                }
            }
            return(matches);
        }
Esempio n. 3
0
        /// <summary>
        /// Constructor from the API.
        /// </summary>
        /// <param name="ccpCharacter">The CCP character.</param>
        /// <param name="src">The source.</param>
        /// <exception cref="System.ArgumentNullException">src</exception>
        internal Contract(CCPCharacter ccpCharacter, EsiContractListItem src)
        {
            src.ThrowIfNull(nameof(src));

            m_bidsResponse = m_itemsResponse = null;
            Character      = ccpCharacter;
            PopulateContractInfo(src);
            m_state = GetState(src);
            m_bids  = new LinkedList <ContractBid>();
        }
Esempio n. 4
0
 /// <summary>
 /// Updates the contract info.
 /// </summary>
 /// <param name="src">The source.</param>
 private void UpdateContractInfo(EsiContractListItem src)
 {
     Accepted   = src.DateAccepted;
     Completed  = src.DateCompleted;
     AcceptorID = src.AcceptorID;
     m_acceptor = EveIDToName.GetIDToName(src.AcceptorID);
     Status     = src.ContractStatus;
     if (Overdue)
     {
         Status = CCPContractStatus.Overdue;
     }
 }
Esempio n. 5
0
        /// <summary>
        /// Gets the state of a contract.
        /// </summary>
        /// <param name="src">The source.</param>
        /// <returns></returns>
        private ContractState GetState(EsiContractListItem src)
        {
            CCPContractStatus status = src.ContractStatus;

            if (status == CCPContractStatus.Outstanding && IsExpired)
            {
                return(ContractState.Expired);
            }

            switch (status)
            {
            case CCPContractStatus.Failed:
                return(ContractState.Failed);

            case CCPContractStatus.Canceled:
                return(ContractState.Canceled);

            case CCPContractStatus.Overdue:
            case CCPContractStatus.Outstanding:
            case CCPContractStatus.InProgress:
                return(IssuerID != Character.CharacterID ? ContractState.Assigned :
                       ContractState.Created);

            case CCPContractStatus.Completed:
            case CCPContractStatus.CompletedByContractor:
            case CCPContractStatus.CompletedByIssuer:
                return(ContractState.Finished);

            case CCPContractStatus.Rejected:
                return(ContractState.Rejected);

            case CCPContractStatus.Deleted:
                return(ContractState.Deleted);

            default:
                throw new NotImplementedException();
            }
        }
Esempio n. 6
0
 /// <summary>
 /// Checks whether the given API object matches with this contract.
 /// </summary>
 /// <param name="src"></param>
 /// <returns></returns>
 private bool MatchesWith(EsiContractListItem src) => src.ContractID == ID;