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); }
public void AssignProviderToDemand(IDemandToProvider demand, DemandToProvider provider) { if (demand.DemandProvider == null) { demand.DemandProvider = new List <DemandToProvider>(); } demand.DemandProvider.Add(provider); Update(demand); SaveChanges(); }
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); }