public void SetTax(Character character, double newTax) { IsPlayerControlledMarketTax().ThrowIfFalse(ErrorCodes.AccessDenied); var oldTax = Tax; newTax = newTax.Clamp(); var coporationEid = character.CorporationEid; ProfitingOwnerSelector.GetProfitingOwner(GetDockingBase()).ThrowIfNull(ErrorCodes.AccessDenied); var corporation = PrivateCorporation.GetOrThrow(coporationEid); var role = corporation.GetMemberRole(character); role.IsAnyRole(CorporationRole.CEO, CorporationRole.DeputyCEO, CorporationRole.Accountant).ThrowIfFalse(ErrorCodes.InsufficientPrivileges); //write log var e = new MarketTaxChangeLogEvent { BaseEid = GetDockingBase().Eid, ChangeFrom = oldTax, ChangeTo = newTax, CharacterId = character.Id, Owner = coporationEid, }; GetTaxChangeLogger().Log(e); //set value Tax = newTax; }
public void HandleRequest(IRequest request) { var character = request.Session.Character; var offsetInDays = request.Data.GetOrDefault <int>(k.offset); var forCorporation = request.Data.GetOrDefault <int>(k.corporation) == 1; PrivateCorporation corporation = null; if (forCorporation) { corporation = character.GetPrivateCorporationOrThrow(); corporation.GetMemberRole(character).IsAnyRole(CorporationRole.CEO, CorporationRole.DeputyCEO, CorporationRole.Accountant, CorporationRole.ProductionManager).ThrowIfFalse(ErrorCodes.InsufficientPrivileges); } var dictionary = new Dictionary <string, object> { { k.history, ProductionHelper.ProductionLogList(character, offsetInDays, corporation) }, { k.corporation, forCorporation } }; Message.Builder.FromRequest(request) .WithData(dictionary) .WrapToResult() .Send(); }
public static IEnumerable <CorporationApplication> GetAllByCorporation(PrivateCorporation corporation) { return(Db.Query().CommandText("select * from corporationApplication where corporationEID=@corporationEID") .SetParameter("@corporationEID", corporation.Eid) .Execute() .ConvertAll(_converter) .ToArray()); }
private void PayBackBuyOrder() { var submitter = Character.GetByEid(submitterEID); //use corporation wallet based on the order and not on the current corp of the character PrivateCorporation corporation = null; if (forMembersOf != null) { corporation = PrivateCorporation.Get((long)forMembersOf); } IWallet <double> wallet; if (corporation != null && useCorporationWallet) { wallet = new CorporationWallet(corporation); } else { wallet = submitter.GetWallet(false, TransactionType.buyOrderPayBack); } wallet.Balance += FullPrice; var b = TransactionLogEvent.Builder() .SetTransactionType(TransactionType.buyOrderPayBack) .SetCreditBalance(wallet.Balance) .SetCreditChange(FullPrice) .SetCharacter(submitter) .SetItem(itemDefinition, quantity); var corpWallet = wallet as CorporationWallet; if (corpWallet != null) { b.SetCorporation(corpWallet.Corporation); corpWallet.Corporation.LogTransaction(b); } else { submitter.LogTransaction(b); } _centralBank.SubAmount(FullPrice, TransactionType.MarketTax); }
public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var character = request.Session.Character; var targetCorporationEid = request.Data.GetOrDefault <long>(k.eid); var targetCorporation = PrivateCorporation.GetOrThrow(targetCorporationEid); var amount = request.Data.GetOrDefault <int>(k.amount); var privateCorporation = character.GetPrivateCorporationOrThrow(); privateCorporation.Transfer(targetCorporation, amount, character); Message.Builder.FromRequest(request).WithOk().Send(); scope.Complete(); } }
public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var character = request.Session.Character; character.IsInTraining().ThrowIfTrue(ErrorCodes.TrainingCharacterInvolved); var targetCorporationEID = request.Data.GetOrDefault <long>(k.corporationEID); var motivation = request.Data.GetOrDefault <string>(k.note); //from private corp? character.GetCorporation().ThrowIfNotType <DefaultCorporation>(ErrorCodes.CharacterMustBeInDefaultCorporation); //check corp hopping _corporationManager.IsJoinAllowed(character).ThrowIfFalse(ErrorCodes.CorporationChangeTooOften); //is valid target corp? var targetCorporation = PrivateCorporation.Get(targetCorporationEID).ThrowIfNull(ErrorCodes.OnlyPrivateCorporationAcceptsApplication); var applications = character.GetCorporationApplications().ToArray(); applications.Length.ThrowIfGreater(5, ErrorCodes.CorporationApplicationsNumberExceeded); applications.Any(a => a.CorporationEID == targetCorporation.Eid).ThrowIfTrue(ErrorCodes.OneApplicationAllowedPerCorporation); //add appliaction var newApplication = new CorporationApplication(targetCorporation) { Character = character, Motivation = motivation }; newApplication.InsertToDb(); var result = character.GetCorporationApplications().ToDictionary(); Message.Builder.FromRequest(request).WithData(result).Send(); scope.Complete(); } }
public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var character = request.Session.Character; var flush = request.Data.GetOrDefault <int>(k.all) == 1; if (flush) { character.GetCorporationApplications().DeleteAll(); } else { var corporationEID = request.Data.GetOrDefault <long>(k.corporationEID); var corporation = PrivateCorporation.GetOrThrow(corporationEID); corporation.GetApplicationsByCharacter(character).DeleteAll(); } var result = character.GetCorporationApplications().ToDictionary(); Message.Builder.FromRequest(request).WithData(result).Send(); scope.Complete(); } }
public static Dictionary <string, object> ProductionLogList(Character character, int offsetInDays, PrivateCorporation corporation) { var result = new Dictionary <string, object>(); var counter = 0; var later = DateTime.Now.AddDays(-1 * offsetInDays); var earlier = later.AddDays(-14); var queryString = "select definition,amount,productiontime,productiontype,durationsecs,price,usecorporationwallet,characterid from productionlog where productiontime > @earlier and productiontime < @later "; if (corporation != null) { var members = corporation.GetMembersWithAnyRoles(CorporationRole.CEO, CorporationRole.DeputyCEO, CorporationRole.ProductionManager).Select(m => m.character.Id); queryString += " and usecorporationwallet=1 and characterId in ( " + members.ArrayToString() + " )"; } else { queryString += " and characterID=@characterID"; } var records = Db.Query().CommandText(queryString) .SetParameter("@characterID", character.Id) .SetParameter("@earlier", earlier) .SetParameter("@later", later) .Execute(); foreach (var record in records) { var stepper = record.GetStepper(); var tempDict = new Dictionary <string, object> { { k.definition, stepper.GetNextValue <int>() }, { k.amount, stepper.GetNextValue <int>() }, { k.date, stepper.GetNextValue <DateTime>() }, { k.productionType, stepper.GetNextValue <int>() }, { k.duration, stepper.GetNextValue <int>() }, { k.price, stepper.GetNextValue <double>() }, { k.useCorporationWallet, stepper.GetNextValue <bool>() }, { k.characterID, stepper.GetNextValue <int>() }, }; result.Add("c" + counter++, tempDict); } return(result); }
public CorporationApplication(PrivateCorporation corporation) { CorporationEID = corporation.Eid; }
public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var character = request.Session.Character; var corpName = request.Data.GetOrDefault <string>(k.name).Trim(); var taxRate = request.Data.GetOrDefault <int>(k.taxRate); var publicProfile = request.Data.GetOrDefault <Dictionary <string, object> >(k.publicProfile); var nick = request.Data.GetOrDefault <string>(k.nick).Trim(); character.IsInTraining().ThrowIfTrue(ErrorCodes.TrainingCharacterInvolved); nick.Length.ThrowIfGreater(6, ErrorCodes.CorporationNickTooLong); nick.Length.ThrowIfLess(2, ErrorCodes.CorporationNickTooShort); nick.AllowExtras().ThrowIfFalse(ErrorCodes.CorporationNickNotAllowedCharacters); string.IsNullOrEmpty(nick).ThrowIfTrue(ErrorCodes.CorporationNickNotDefined); corpName.Length.ThrowIfGreater(128, ErrorCodes.CorporationNameTooLong); corpName.Length.ThrowIfLessOrEqual(3, ErrorCodes.CorporationNameTooShort); corpName.AllowExtras().ThrowIfFalse(ErrorCodes.CorporationNameNotAllowedCharacters); string.IsNullOrEmpty(corpName).ThrowIfTrue(ErrorCodes.CorporationNameNotDefined); Corporation.IsNameOrNickTaken(corpName, nick).ThrowIfTrue(ErrorCodes.NameTaken); //get the corporation eid the submitter is a member of var oldCorporation = character.GetCorporation().ThrowIfNotType <DefaultCorporation>(ErrorCodes.CharacterMustBeInDefaultCorporation); //member has role in the current corporation so he/she can't be transferred oldCorporation.GetMemberRole(character).ThrowIfNotEqual(CorporationRole.NotDefined, ErrorCodes.MemberHasRolesError); //check enabler extension var privateCorp = _entityServices.Defaults.GetByName(DefinitionNames.PRIVATE_CORPORATION); foreach (var enablerExtension in privateCorp.EnablerExtensions.Keys) { var extensionLevelSummary = character.GetExtensionLevelSummaryByName(ExtensionNames.CORPORATION_FOUNDING_BASIC, ExtensionNames.CORPORATION_FOUNDING_ADVANCED, ExtensionNames.CORPORATION_FOUNDING_EXPERT); enablerExtension.level.ThrowIfGreater(extensionLevelSummary, ErrorCodes.ExtensionLevelMismatch); } character.SubtractFromWallet(TransactionType.corporationCreate, _corporationManager.Settings.FoundingPrice); var corporationDescription = new CorporationDescription { name = corpName, nick = nick, taxRate = taxRate, publicProfile = publicProfile, privateProfile = new Dictionary <string, object>(), isDefault = false, founder = character.Id }; var newCorporation = PrivateCorporation.Create(corporationDescription); var combinedRole = _corporationManager.GetAllRoles(); newCorporation.AddMember(character, combinedRole, oldCorporation); oldCorporation.RemoveMember(character); _channelManager.LeaveChannel(oldCorporation.ChannelName, character); _channelManager.CreateAndJoinChannel(ChannelType.Corporation, newCorporation.ChannelName, character); character.GetCorporationApplications().DeleteAll(); //get resulting info var corpInfo = newCorporation.GetInfoDictionaryForMember(character); Message.Builder.FromRequest(request).WithData(corpInfo).Send(); _corporationManager.InformCorporationMemberTransferred(oldCorporation, newCorporation, character); Transaction.Current.OnCommited(() => { character.GetPlayerRobotFromZone()?.UpdateCorporationOnZone(newCorporation.Eid); }); scope.Complete(); } }
public static IEnumerable <CorporationApplication> GetApplicationsByCharacter(this PrivateCorporation corporation, Character character) { return(corporation.GetApplications().Where(a => a.Character == character)); }
public static IEnumerable <CorporationApplication> GetApplications(this PrivateCorporation corporation) { return(CorporationApplication.GetAllByCorporation(corporation)); }