Added commands to assign business to user

This commit is contained in:
hydrant
2018-11-19 22:24:06 +01:00
parent 225eb78ced
commit cef42180c9
7 changed files with 130 additions and 9 deletions

View File

@@ -39,6 +39,10 @@ namespace reallife_gamemode.Model
modelBuilder.Entity<Server.Entities.BusinessBankAccount>() modelBuilder.Entity<Server.Entities.BusinessBankAccount>()
.HasIndex(b => b.BusinessId) .HasIndex(b => b.BusinessId)
.IsUnique(true); .IsUnique(true);
modelBuilder.Entity<Server.Entities.User>()
.HasIndex(u => u.BusinessId)
.IsUnique(true);
} }
//User //User

View File

@@ -1,5 +1,6 @@
using GTANetworkAPI; using GTANetworkAPI;
using reallife_gamemode.Model; using reallife_gamemode.Model;
using reallife_gamemode.Server.Entities;
using reallife_gamemode.Server.Util; using reallife_gamemode.Server.Util;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -10,6 +11,8 @@ namespace reallife_gamemode.Server.Business
{ {
public abstract class BusinessBase : IBankAccountOwner public abstract class BusinessBase : IBankAccountOwner
{ {
private TextLabel _informationLabel;
public abstract int Id { get; } public abstract int Id { get; }
public abstract string Name { get; } public abstract string Name { get; }
@@ -21,12 +24,36 @@ namespace reallife_gamemode.Server.Business
{ {
using (databaseContext = new DatabaseContext()) using (databaseContext = new DatabaseContext())
{ {
return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == this.Id); return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id);
} }
} }
else else
{ {
return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == this.Id); return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id);
}
}
public void Setup()
{
_informationLabel = NAPI.TextLabel.CreateTextLabel(Name, Position, 20.0f, 1.3f, 0, new Color(255, 255, 255));
}
public void Update()
{
//NAPI.Util.ConsoleOutput("Updating Business: " + Name);
User owner = GetOwner();
string infoText = Name + "\n" + "Besitzer: " + (owner == null ? "Niemand" : owner.Name) + "\nKasse: " + (GetBankAccount()?.Balance ?? 0);
_informationLabel.Text = infoText;
}
public User GetOwner()
{
using (var dbContext = new DatabaseContext())
{
User user = dbContext.Users.FirstOrDefault(u => u.BusinessId == Id);
//NAPI.Util.ConsoleOutput("[" + Name + "] GetOwner: " + (user?.Name ?? "null"));
return user;
} }
} }

View File

@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Text;
using GTANetworkAPI;
namespace reallife_gamemode.Server.Business
{
public class SmsBusiness : BusinessBase
{
public override int Id => 1;
public override string Name => "SMS Business";
public override Vector3 Position => new Vector3(-423, 1130, 326);
public override void Load()
{
}
}
}

View File

@@ -9,15 +9,15 @@ namespace reallife_gamemode.Server.Business
{ {
class TestBusiness : BusinessBase class TestBusiness : BusinessBase
{ {
public override int Id => 1; public override int Id => 0;
public override string Name => "Test Business"; public override string Name => "Test Business";
public override Vector3 Position => throw new NotImplementedException(); public override Vector3 Position => new Vector3(-443, 1134, 326);
public override void Load() public override void Load()
{ {
throw new NotImplementedException();
} }
} }
} }

View File

@@ -15,6 +15,7 @@ using reallife_gamemode.Server.Services;
using reallife_gamemode.Server.Util; using reallife_gamemode.Server.Util;
using reallife_gamemode.Server.Managers; using reallife_gamemode.Server.Managers;
using reallife_gamemode.Server.Saves; using reallife_gamemode.Server.Saves;
using reallife_gamemode.Server.Business;
/** /**
* @overview Life of German Reallife - Admin Commands (Admin.cs) * @overview Life of German Reallife - Admin Commands (Admin.cs)
@@ -172,6 +173,22 @@ namespace reallife_gamemode.Server.Commands
} }
} }
} }
[Command("businesslist", "~m~Benutzung: ~s~/businesslist")]
public void CmdAdminBusinessList(Client player)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
player.SendChatMessage("~m~__________ ~s~Businesses ~m~__________");
foreach (Business.BusinessBase b in BusinessManager.Businesses)
{
player.SendChatMessage(b.Id.ToString().PadRight(3) + " | " + b.Name);
}
}
#endregion #endregion
@@ -1644,6 +1661,7 @@ namespace reallife_gamemode.Server.Commands
NAPI.Chat.SendChatMessageToPlayer(player, "~w~Das Wetter konnte nicht geändert werden"); NAPI.Chat.SendChatMessageToPlayer(player, "~w~Das Wetter konnte nicht geändert werden");
} }
} }
[Command("aspeed", "~m~Benutzung: ~s~/aspeed [Modifier]")] //TODO: Überarbeiten ?? SetPlayerVelocity ?? [Command("aspeed", "~m~Benutzung: ~s~/aspeed [Modifier]")] //TODO: Überarbeiten ?? SetPlayerVelocity ??
public void CmdAdminAspeed(Client player, float modifier) public void CmdAdminAspeed(Client player, float modifier)
{ {
@@ -1661,7 +1679,8 @@ namespace reallife_gamemode.Server.Commands
player.Vehicle.EnginePowerMultiplier = modifier; player.Vehicle.EnginePowerMultiplier = modifier;
} }
[Command("setmoney")]
[Command("setmoney", "~m~Benutzung: ~s~/setmoney [Name] [Menge]")]
public void SetPlayerMoney(Client player, string receiver, int amount) public void SetPlayerMoney(Client player, string receiver, int amount)
{ {
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
@@ -1685,7 +1704,7 @@ namespace reallife_gamemode.Server.Commands
target.SendChatMessage("~b~[ADMIN]~s~ Dein Geld wurde von Admin " + player.Name + " auf ~g~$" + amount + "~s~ gesetzt."); target.SendChatMessage("~b~[ADMIN]~s~ Dein Geld wurde von Admin " + player.Name + " auf ~g~$" + amount + "~s~ gesetzt.");
} }
[Command("givemoney")] [Command("givemoney", "~m~Benutzung: ~s~/givemoney [Name] [Menge]")]
public void GivePlayerMoney(Client player, string receiver, int amount) public void GivePlayerMoney(Client player, string receiver, int amount)
{ {
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
@@ -1693,6 +1712,7 @@ namespace reallife_gamemode.Server.Commands
ChatService.NotAuthorized(player); ChatService.NotAuthorized(player);
return; return;
} }
Client target = ClientService.GetClientByNameOrId(receiver); Client target = ClientService.GetClientByNameOrId(receiver);
if (target == null || !target.IsLoggedIn()) if (target == null || !target.IsLoggedIn())
{ {
@@ -1708,6 +1728,46 @@ namespace reallife_gamemode.Server.Commands
player.SendChatMessage("~b~[ADMIN]~s~ Du hast " + target.Name + " ~g~$" + amount + "~s~ gegeben."); player.SendChatMessage("~b~[ADMIN]~s~ Du hast " + target.Name + " ~g~$" + amount + "~s~ gegeben.");
target.SendChatMessage("~b~[ADMIN]~s~ Admin " + player.Name + " hat dir ~g~$" + amount + "~s~ gegeben."); target.SendChatMessage("~b~[ADMIN]~s~ Admin " + player.Name + " hat dir ~g~$" + amount + "~s~ gegeben.");
} }
[Command("setbusinessowner", "~m~Benutzung: ~s~/setbusinessowner [Name] [Business ID]")]
public void CmdAdminSetbusinessowner(Client player, string name, int businessid)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
Client target = ClientService.GetClientByNameOrId(name);
if (target == null || !target.IsLoggedIn())
{
ChatService.PlayerNotFound(player);
return;
}
BusinessBase business = BusinessManager.GetBusiness(businessid);
if(business == null)
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Business existiert nicht. ~m~/businesslist");
return;
}
if(business.GetOwner() != null)
{
player.SendChatMessage("~r~[FEHLER]~s~ Das Business hat momentan noch einen Besitzer: ~o~" + business.GetOwner().Name + "~s~. Entferne diesen Besitzer erst mit ~m~/clearbusiness");
return;
}
using(var dbContext = new DatabaseContext())
{
Entities.User targetUser = target.GetUser(dbContext);
targetUser.BusinessId = businessid;
business.Update();
dbContext.SaveChanges();
}
}
#endregion #endregion
#region ALevel1338 #region ALevel1338

View File

@@ -58,6 +58,8 @@ namespace reallife_gamemode.Server.Entities
public int? FactionRankId { get; set; } public int? FactionRankId { get; set; }
public FactionRank FactionRank { get;set; } public FactionRank FactionRank { get;set; }
public int? BusinessId { get; set; }
public Faction GetFaction() public Faction GetFaction()
{ {
using(var context = new DatabaseContext()) using(var context = new DatabaseContext())

View File

@@ -11,6 +11,7 @@ namespace reallife_gamemode.Server.Managers
class BusinessManager : Script class BusinessManager : Script
{ {
private static List<BusinessBase> businesses; private static List<BusinessBase> businesses;
public static List<BusinessBase> Businesses { get => businesses; }
public static void LoadBusinesses() public static void LoadBusinesses()
{ {
@@ -22,12 +23,14 @@ namespace reallife_gamemode.Server.Managers
NAPI.Util.ConsoleOutput($"Loading Business {item.Name}"); NAPI.Util.ConsoleOutput($"Loading Business {item.Name}");
if (Activator.CreateInstance(item) is BusinessBase o) if (Activator.CreateInstance(item) is BusinessBase o)
{ {
if (businesses.Find(b => b.GetType() == item) != null) if (businesses.Any(x => x.Id == o.Id))
{ {
throw new InvalidOperationException($"Double Business found: {o.Id} | {o.Name}"); throw new InvalidOperationException($"Double Business ID found: {o.Id} | {o.Name}");
} }
businesses.Add(o); businesses.Add(o);
o.Setup();
o.Load(); o.Load();
o.Update();
} }
} }
} }
@@ -37,5 +40,9 @@ namespace reallife_gamemode.Server.Managers
return (T)businesses.Find(b => b.GetType() == typeof(T)); return (T)businesses.Find(b => b.GetType() == typeof(T));
} }
public static BusinessBase GetBusiness(int id)
{
return businesses.Find(b => b.Id == id);
}
} }
} }