예제 #1
0
 public ContractEvent(ContractEventDto c)
 {
     InternalName = c.InternalName;
     Date         = c.Date;
     FundsChange  = c.FundsChange;
     RepChange    = c.RepChange;
     Type         = c.Type;
 }
예제 #2
0
 public ContractEventDto(ContractEvent ce)
 {
     internalName = ce.InternalName;
     date         = CareerLog.UTToDate(ce.UT).ToString("o");
     fundsChange  = ce.FundsChange;
     repChange    = ce.RepChange;
     type         = ce.Type;
 }
예제 #3
0
        protected override void OnLoad(ConfigNode node)
        {
            base.OnLoad(node);

            string sEvtType = null;

            node.TryGetValue("contractType", ref _ccType);
            node.TryGetValue("eventType", ref sEvtType);
            _evtType = (ContractEventType)Enum.Parse(typeof(ContractEventType), sEvtType);
        }
예제 #4
0
        public List <ContractEventWithCareerInfo> GetEventsForContract(string contract,
                                                                       ContractEventType evtType = ContractEventType.Complete, ODataQueryOptions <CareerLog> queryOptions = null)
        {
            string contractDispName = ResolveContractName(contract);

            var q = _careerLogs.AsQueryable();

            if (queryOptions != null)
            {
                q = (IMongoQueryable <CareerLog>)queryOptions.ApplyTo(q, new ODataQuerySettings
                {
                    HandleNullPropagation = HandleNullPropagationOption.False
                });
            }

            var events = q.Where(entry => entry.ContractEventEntries.Any(ce => ce.InternalName == contract && ce.Type == evtType))
                         .Select(c => new ContractEventWithCareerInfo
            {
                CareerId   = c.Id,
                CareerName = c.Name,
                UserLogin  = c.UserLogin,
                Date       = c.ContractEventEntries.Where(ce => ce.InternalName == contract && ce.Type == evtType)
                             .Min(ce => ce.Date)
            })
                         .ToList();

            events.ForEach(entry =>
            {
                entry.Type = evtType;
                entry.ContractInternalName = contract;
                entry.UserPreferredName    = GetUserPreferredName(entry.UserLogin);
                entry.ContractDisplayName  = contractDispName;
            });

            events.Sort((a, b) => a.Date.Value.CompareTo(b.Date.Value));

            return(events);
        }
예제 #5
0
 public AcceptContractBehaviour(string ccType, ContractEventType evtType)
 {
     _ccType  = ccType;
     _evtType = evtType;
 }
        public override bool Load(ConfigNode node)
        {
            bool valid = base.Load(node);

            valid &= ConfigNodeUtil.ParseValue <string>(node, "contractType", x => ccType = x, this);
            valid &= ConfigNodeUtil.ParseValue <ContractEventType>(node, "eventType", x => eventType = x, this);

            return(valid);
        }
        public List <ContractEventWithCareerInfo> GetEventsForContract(string contract, ContractEventType evtType = ContractEventType.Complete)
        {
            var projection = Builders <CareerLog> .Projection.Expression(c => new ContractEventWithCareerInfo
            {
                CareerId             = c.Id,
                CareerName           = c.name,
                ContractInternalName = contract,
                ContractDisplayName  = ResolveContractName(contract),
                Type = evtType,
                Date = c.contractEventEntries.First(ce => ce.internalName == contract && ce.type == evtType).date
            });

            var events = _careerLogs.Find(entry => entry.contractEventEntries.Any(ce => ce.internalName == contract && ce.type == evtType))
                         .Project(projection)
                         .ToList();

            // Cannot use server-side sort here. https://stackoverflow.com/q/56988743
            events.Sort((a, b) => a.Date.Value.CompareTo(b.Date.Value));
            return(events);
        }