forked from SoDOff-Project/sodoff
Buddy System #3
@ -1147,7 +1147,7 @@ public class ContentController : Controller {
|
||||
[Route("ContentWebService.asmx/GetBuddyList")]
|
||||
public IActionResult GetBuddyList() {
|
||||
// TODO: this is a placeholder
|
||||
return Ok(new BuddyList { Buddy = new Buddy[0] });
|
||||
return Ok(new BuddyList { Buddy = new Schema.Buddy[0] });
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
|
@ -35,21 +35,9 @@ public class MessagingController : Controller {
|
||||
|
||||
// clients (at least older ones) don't send what typeID the message is, its encoded in data
|
||||
ArrayOfKeyValuePairOfStringString arrayOfKeyValuePairOfStringString = XmlUtil.DeserializeXml<ArrayOfKeyValuePairOfStringString>(data);
|
||||
MessageTypeID typeID = MessageTypeID.Unknown;
|
||||
string typeText = "";
|
||||
switch(arrayOfKeyValuePairOfStringString.KeyValuePairOfStringString[0]?.Value)
|
||||
{
|
||||
case "Drawing":
|
||||
typeID = MessageTypeID.GreetingCard;
|
||||
typeText = "Card";
|
||||
break;
|
||||
case "Photo":
|
||||
typeID = MessageTypeID.Photo;
|
||||
typeText = "PhotoBomb";
|
||||
break;
|
||||
}
|
||||
MessageTypeID typeID = (MessageTypeID)int.Parse(arrayOfKeyValuePairOfStringString.KeyValuePairOfStringString![0].Value ?? "0");
|
||||
|
||||
var msg = messagingService.AddMessageToViking(viking, toViking, MessageType.Data, typeID, MessageLevel.WhiteList, data, "[[Line1]]=[[{{BuddyUserName}}]] has sent you a " + typeText + "!", "[[Line1]]=[[{{BuddyUserName}}]] has sent you a " + typeText + "!");
|
||||
var msg = messagingService.AddMessageToViking(viking, toViking, MessageType.Data, typeID, MessageLevel.WhiteList, data, "[[Line1]]=[[{{BuddyUserName}}]] has sent you a {{MessageType}}!", "[[Line1]]=[[{{BuddyUserName}}]] has sent you a {{MessageType}}!");
|
||||
if (msg != null) return Ok(true);
|
||||
else return Ok(false);
|
||||
}
|
||||
|
1307
src/Migrations/20250303203411_Buddies.Designer.cs
generated
Normal file
1307
src/Migrations/20250303203411_Buddies.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
54
src/Migrations/20250303203411_Buddies.cs
Normal file
54
src/Migrations/20250303203411_Buddies.cs
Normal file
@ -0,0 +1,54 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace sodoff.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class Buddies : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Buddy",
|
||||
columns: table => new
|
||||
{
|
||||
VikingId = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
BuddyVikingId = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
BuddyStatus1 = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
BuddyStatus2 = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
IsBestFriend1 = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
IsBestFriend2 = table.Column<bool>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Buddy", x => x.VikingId);
|
||||
table.ForeignKey(
|
||||
name: "FK_Buddy_Vikings_BuddyVikingId",
|
||||
column: x => x.BuddyVikingId,
|
||||
principalTable: "Vikings",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_Buddy_Vikings_VikingId",
|
||||
column: x => x.VikingId,
|
||||
principalTable: "Vikings",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Buddy_BuddyVikingId",
|
||||
table: "Buddy",
|
||||
column: "BuddyVikingId");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "Buddy");
|
||||
}
|
||||
}
|
||||
}
|
@ -70,6 +70,33 @@ namespace sodoff.Migrations
|
||||
b.ToTable("AchievementTaskState");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("sodoff.Model.Buddy", b =>
|
||||
{
|
||||
b.Property<int>("VikingId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("BuddyStatus1")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("BuddyStatus2")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("BuddyVikingId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<bool>("IsBestFriend1")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<bool>("IsBestFriend2")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("VikingId");
|
||||
|
||||
b.HasIndex("BuddyVikingId");
|
||||
|
||||
b.ToTable("Buddy");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("sodoff.Model.Dragon", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@ -849,6 +876,25 @@ namespace sodoff.Migrations
|
||||
b.Navigation("Viking");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("sodoff.Model.Buddy", b =>
|
||||
{
|
||||
b.HasOne("sodoff.Model.Viking", "BuddyViking")
|
||||
.WithMany("BuddyList")
|
||||
.HasForeignKey("BuddyVikingId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("sodoff.Model.Viking", "Viking")
|
||||
.WithMany("BuddiesMade")
|
||||
.HasForeignKey("VikingId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("BuddyViking");
|
||||
|
||||
b.Navigation("Viking");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("sodoff.Model.Dragon", b =>
|
||||
{
|
||||
b.HasOne("sodoff.Model.Viking", "Viking")
|
||||
@ -1206,6 +1252,10 @@ namespace sodoff.Migrations
|
||||
|
||||
b.Navigation("AchievementTaskStates");
|
||||
|
||||
b.Navigation("BuddiesMade");
|
||||
|
||||
b.Navigation("BuddyList");
|
||||
|
||||
b.Navigation("Dragons");
|
||||
|
||||
b.Navigation("GameData");
|
||||
|
22
src/Model/Buddy.cs
Normal file
22
src/Model/Buddy.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using sodoff.Schema;
|
||||
|
||||
namespace sodoff.Model;
|
||||
|
||||
[PrimaryKey(nameof(VikingId))]
|
||||
public class Buddy
|
||||
{
|
||||
public int VikingId { get; set; }
|
||||
public int BuddyVikingId { get; set; }
|
||||
|
||||
public BuddyStatus BuddyStatus1 { get; set; }
|
||||
public BuddyStatus BuddyStatus2 { get; set; }
|
||||
|
||||
public bool IsBestFriend1 { get; set; }
|
||||
public bool IsBestFriend2 { get; set; }
|
||||
|
||||
public virtual Viking? Viking { get; set; }
|
||||
public virtual Viking? BuddyViking { get; set; }
|
||||
}
|
@ -167,6 +167,12 @@ public class DBContext : DbContext {
|
||||
builder.Entity<Viking>().HasMany(v => v.MessagesMade)
|
||||
.WithOne(r => r.Viking);
|
||||
|
||||
builder.Entity<Viking>().HasMany(v => v.BuddyList)
|
||||
.WithOne(r => r.BuddyViking);
|
||||
|
||||
builder.Entity<Viking>().HasMany(v => v.BuddiesMade)
|
||||
.WithOne(r => r.Viking);
|
||||
|
||||
// Dragons
|
||||
builder.Entity<Dragon>().HasOne(d => d.Viking)
|
||||
.WithMany(e => e.Dragons)
|
||||
@ -331,5 +337,14 @@ public class DBContext : DbContext {
|
||||
.WithOne(e => e.ParentMessage)
|
||||
.HasForeignKey(e => e.ParentMessageId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
// Buddies
|
||||
builder.Entity<Buddy>().HasOne(r => r.BuddyViking)
|
||||
.WithMany(e => e.BuddyList)
|
||||
.HasForeignKey(e => e.BuddyVikingId);
|
||||
|
||||
builder.Entity<Buddy>().HasOne(r => r.Viking)
|
||||
.WithMany(e => e.BuddiesMade)
|
||||
.HasForeignKey(e => e.VikingId);
|
||||
}
|
||||
}
|
||||
|
@ -47,6 +47,8 @@ public class Viking {
|
||||
public virtual ICollection<UserBan> UserBans { get; set; } = null!;
|
||||
public virtual ICollection<Message> MessageBoard { get; set; } = null!;
|
||||
public virtual ICollection<Message> MessagesMade { get; set; } = null!;
|
||||
public virtual ICollection<Buddy> BuddyList { get; set; } = null!;
|
||||
public virtual ICollection<Buddy> BuddiesMade { get; set; } = null!;
|
||||
|
||||
public DateTime? CreationDate { get; set; }
|
||||
public DateTime? BirthDate { get; set; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user