public static async Task <QueueEntryInfo> AddToGuildQueue(this QueueDBContext ctx, ulong guildId, ulong userId, ServiceResult queueEntry) { var baseDB = new DBQueueEntryJson(queueEntry); var baseDBJson = JsonConvert.SerializeObject(baseDB); var baseBytes = Encoding.UTF8.GetBytes(baseDBJson); var queueCount = await ctx.QueueEntries.Where(x => x.GuildId == guildId).CountAsync(); var items = await ctx.QueueEntries.AddAsync(new QueueEntryInfo { AddedBy = userId, AdditionTime = DateTime.Now, DBTrackInfoRaw = Convert.ToBase64String(baseBytes), GuildId = guildId, Position = queueCount }); await ctx.SaveChangesAsync(); items.Entity.DBTrackInfo = new DBQueueEntryJson(queueEntry); return(items.Entity); }
public static async Task <QueueEntryInfo> InsertToGuildQueue(this QueueDBContext ctx, ulong guildId, ulong userId, ServiceResult queueEntry, int position) { var queue = await GetGuildQueue(ctx, guildId); var baseDB = new DBQueueEntryJson(queueEntry); var baseDBJson = JsonConvert.SerializeObject(baseDB); var baseBytes = Encoding.UTF8.GetBytes(baseDBJson); var item = new QueueEntryInfo { AddedBy = userId, AdditionTime = DateTime.Now, DBTrackInfoRaw = Convert.ToBase64String(baseBytes), GuildId = guildId, Position = -1 }; queue.Insert(position, item); await ReorderQueue(ctx, guildId, queue); await ctx.SaveChangesAsync(); item.DBTrackInfo = new DBQueueEntryJson(queueEntry); return(item); }