public override IDictionary <string, object> CancelProduction(ProductionInProgress productionInProgress) { return(ReturnReservedItems(productionInProgress)); }
public override IDictionary <string, object> EndProduction(ProductionInProgress productionInProgress, bool forced) { return(EndCalibrationProgramForge(productionInProgress)); }
public void AddToRunningProductions(ProductionInProgress productionInProgress) { _productionsInProgress[productionInProgress.ID] = productionInProgress; }
private bool RemoveFromRunningProductions(ProductionInProgress productionInProgress) { return(_productionsInProgress.Remove(productionInProgress.ID)); }
private void EndProduction(ProductionInProgress productionInProgress, bool forced) { Logger.Info("ending production. " + productionInProgress); var facility = GetFacility(productionInProgress.facilityEID); if (facility == null) { Logger.Error("facility not found in endProduction. facility EID:" + productionInProgress.facilityEID); _pipRepository.Delete(productionInProgress); RemoveFromRunningProductions(productionInProgress); Logger.Error("failed endProduction for " + productionInProgress); return; } using (var scope = Db.CreateTransaction()) { try { var replyDict = facility.EndProduction(productionInProgress, forced); //delete from sql _pipRepository.Delete(productionInProgress); productionInProgress.SendProductionEventToCorporationMembersOnCommitted(Commands.ProductionRemoteEnd); var ep = CalculateEp(facility, productionInProgress); productionInProgress.character.AddExtensionPointsBoostAndLog(EpForActivityType.Production, ep); if (replyDict != null) { Transaction.Current.OnCommited(() => { //if the player is online we report the facility load replyDict.Add(k.production, productionInProgress.ToDictionary()); var facilityInfo = facility.GetFacilityInfo(productionInProgress.character); replyDict.Add(k.facility, facilityInfo); Message.Builder.SetCommand(Commands.ProductionFinished) .WithData(replyDict) .ToCharacter(productionInProgress.character) .Send(); }); } productionInProgress.WriteLog(); Transaction.Current.OnCompleted((c) => { RemoveFromRunningProductions(productionInProgress); }); scope.Complete(); } catch (Exception ex) { Logger.Exception(ex); } } }