public static void InformProductionEvent(ProductionInProgress productionInProgress, Command command) { if (!productionInProgress.useCorporationWallet) { return; } var replyDict = new Dictionary <string, object>(); var productionDict = productionInProgress.ToDictionary(); replyDict.Add(k.production, productionDict); const CorporationRole roleMask = CorporationRole.CEO | CorporationRole.DeputyCEO | CorporationRole.ProductionManager | CorporationRole.Accountant; Message.Builder.SetCommand(command) .WithData(replyDict) .ToCorporation(productionInProgress.character.CorporationEid, roleMask) .Send(); }
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); } } }