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); }
protected override Task <CommandResult> HandleImpl(Command request) { Db.Artists.Add(new Artist { Id = SequentualGuid.New(), Name = request.Name }); return(Task.FromResult(CommandResult.Void)); }
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); }
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 }))); }
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); }
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); }
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); }