Example #1
0
            protected override async Task <CommandResult> HandleImpl(Command request)
            {
                List <Category> categories = await Db.Categories
                                             .AsNoTracking()
                                             .OrderBy(x => x.ParentId)
                                             .ThenBy(x => x.Name)
                                             .ToListAsync();

                string[] pathSplit = request
                                     .Path
                                     .Split(new [] { '/' },
                                            StringSplitOptions.RemoveEmptyEntries);

                string parentPath = string.Join(
                    "/",
                    pathSplit.Take(pathSplit.Length - 1));

                Category parent = categories.FindNode(parentPath);

                Db.Categories.Add(new Category
                {
                    Id       = SequentualGuid.New(),
                    ParentId = parent?.Id,
                    Name     = pathSplit.Last(),
                });

                return(CommandResult.Void);
            }
Example #2
0
            protected override Task <CommandResult> HandleImpl(Command request)
            {
                Db.Artists.Add(new Artist
                {
                    Id   = SequentualGuid.New(),
                    Name = request.Name
                });

                return(Task.FromResult(CommandResult.Void));
            }
Example #3
0
            protected override async Task <CommandResult> HandleImpl(Command request)
            {
                Guid id = SequentualGuid.New();

                string fullFilePath = Path.Combine(
                    Settings.Settings.Inbox.InboxFolder,
                    request.FileName);

                await audioStore.StoreAsync(id, fullFilePath);

                string title = string.IsNullOrWhiteSpace(request.Title) ?
                               request.FileName :
                               request.Title;

                AudioItem newItem = new AudioItem
                {
                    Id       = id,
                    Flags    = AudioItemFlags.None,
                    Title    = title,
                    Duration = (long)request.Details.Duration.TotalMilliseconds,
                };

                if (request.Categories.Any())
                {
                    List <Category> categories = await Db.Categories
                                                 .ToListAsync();

                    foreach (string path in request.Categories)
                    {
                        Category cat = categories.FindNode(path);

                        newItem.Categories.Add(cat);
                    }
                }

                Db.Audio.Add(newItem);

                CommandResult result = CommandResult.Void
                                       .WithNotification(
                    new AudioLoaded
                {
                    Id    = id,
                    Title = request.Title
                });

                File.Delete(fullFilePath);

                return(result);
            }
Example #4
0
            protected override Task <CommandResult> HandleImpl(Command request)
            {
                Guid jobId = SequentualGuid.New();

                Db.Jobs.Add(new Job
                {
                    Id        = jobId,
                    StationId = request.StationId,
                    Start     = request.Start,
                    End       = request.End,
                    State     = JobState.None
                });

                return(Task.FromResult(CommandResult.Void.WithNotification(new JobCreated {
                    JobId = jobId
                })));
            }
Example #5
0
            protected override async Task <CommandResult> HandleImpl(Command request)
            {
                AudioItem item = await Db.Audio
                                 .SingleAsync(x => x.Id == request.Id);

                string type = MarkerTypes.KnownTypes.Contains(request.Type) ?
                              request.Type :
                              MarkerTypes.BuildCustomTypeName(request.Type);

                item.Markers.Add(new Marker
                {
                    Id     = SequentualGuid.New(),
                    Offset = request.Offset,
                    Type   = type
                });

                return(CommandResult.Void);
            }
Example #6
0
            protected override async Task <CommandResult> HandleImpl(Command request)
            {
                Template theTemplate = await Db.Templates
                                       .Include(x => x.Items)
                                       .SingleAsync(x => x.Id == request.TemplateId);

                TemplateItem item = new TemplateItem
                {
                    Id         = SequentualGuid.New(),
                    State      = string.Empty,
                    TemplateId = theTemplate.Id,
                    Type       = request.Type,
                    Order      = GetOrder(request.Order, theTemplate)
                };

                theTemplate.Items.Add(item);

                return(CommandResult.Void);
            }
Example #7
0
            protected override async Task <CommandResult> HandleImpl(Command request)
            {
                ArtistGroup newGroup = new ArtistGroup
                {
                    Id   = SequentualGuid.New(),
                    Name = request.Name
                };

                if (request.Members.Any())
                {
                    foreach (string artistName in request.Members)
                    {
                        Artist theArtist = await Db
                                           .Artists
                                           .SingleAsync(x => x.Name.Equals(artistName));

                        newGroup.Members.Add(theArtist);
                    }
                }

                Db.ArtistGroups.Add(newGroup);

                return(CommandResult.Void);
            }