/// <summary> /// Creates a new clip in the database. /// </summary> /// <param name="url"></param> /// <param name="sessionId"></param> /// <param name="uid"></param> /// <param name="name"></param> /// <returns></returns> private int CreateClip(string url, int sessionId, Guid uid, string name) { var clip = new Db.Clip { MediaUrl = url, SessionID = sessionId, Time = DateTime.Now, UID = uid, Name = name }; DbContext.Clips.Add(clip); return(clip.ID); }
public async override Task HandleMessageAsync(IEnumerable <Vocalia.ServiceBus.Types.Clip> messages) { using (var scope = ServiceScope.CreateScope()) using (var DbContext = scope.ServiceProvider.GetService <EditorContext>()) { foreach (var message in messages) { //Gets the specified session, or creates it if not available. var session = await DbContext.Sessions.FirstOrDefaultAsync(x => x.UID == message.SessionUID); if (session == null) { var sessionId = await CreateSessionAsync(message); session = await DbContext.Sessions.FindAsync(sessionId); } //Gets the specificed user, or creates it if not available. Db.Clip clip = await DbContext.Clips.FirstOrDefaultAsync(x => x.UID == message.UID && x.Session.UID == message.SessionUID); if (clip == null) { var userId = await CreateClipAsync(message, session.ID); clip = await DbContext.Clips.FindAsync(userId); } foreach (var entry in message.Media) { var userRef = await UserFacade.GetUserInfoAsync(entry.UserUID); var media = new Db.Media { UID = entry.UID, ClipID = clip.ID, Date = entry.Date, MediaUrl = entry.MediaUrl, UserUID = entry.UserUID }; DbContext.Media.Add(media); } await DbContext.SaveChangesAsync(); } } }
/// <summary> /// Creates a user in the database and returns the reference. /// </summary> /// <param name="clip">Clip recieved.</param> /// <returns></returns> private async Task <int> CreateClipAsync(Vocalia.ServiceBus.Types.Clip clip, int sessionId) { using (var scope = ServiceScope.CreateScope()) using (var DbContext = scope.ServiceProvider.GetService <EditorContext>()) { var dbClip = new Db.Clip { Name = clip.Name, UID = clip.UID, SessionID = sessionId, Date = clip.Date }; DbContext.Clips.Add(dbClip); await DbContext.SaveChangesAsync(); return(dbClip.ID); } }