Exemple #1
0
        /// <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);
        }
Exemple #2
0
        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();
                    }
                }
        }
Exemple #3
0
        /// <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);
                }
        }