Example #1
0
        private IDemandToProvider GetNextByActivitySlack(List <DemandToProvider> demandRequester, int simulationId)
        {
            if (!demandRequester.Any())
            {
                return(null);
            }
            DemandToProvider mostUrgentRequester = null;

            foreach (var demand in demandRequester)
            {
                var dueTime = _context.GetDueTimeByOrder(demand);
                if (mostUrgentRequester == null || _context.GetDueTimeByOrder(mostUrgentRequester) > dueTime)
                {
                    mostUrgentRequester = demand;
                }
            }

            var lowestActivitySlack = _context.GetDueTimeByOrder(mostUrgentRequester);

            foreach (var singleRequester in demandRequester)
            {
                var activitySlack = GetActivitySlack(singleRequester, simulationId);
                if (activitySlack >= lowestActivitySlack)
                {
                    continue;
                }
                lowestActivitySlack = activitySlack;
                mostUrgentRequester = singleRequester;
            }
            return(mostUrgentRequester);
        }
Example #2
0
 public void AssignProviderToDemand(IDemandToProvider demand, DemandToProvider provider)
 {
     if (demand.DemandProvider == null)
     {
         demand.DemandProvider = new List <DemandToProvider>();
     }
     demand.DemandProvider.Add(provider);
     Update(demand);
     SaveChanges();
 }
Example #3
0
        public bool TryUpdateStockProvider(DemandToProvider requester)
        {
            var unfinishedProvider = (from dp in requester.DemandProvider
                                      where dp.State != State.Finished
                                      select dp).ToList();

            if (unfinishedProvider.Any(d => d.GetType() != typeof(DemandProviderStock)))
            {
                return(false);
            }
            foreach (var provider in unfinishedProvider)
            {
                provider.State = State.Finished;
            }
            return(true);
        }