public async Task <IActionResult> UploadWatchList([FromForm] WatchGroupWatchListForm watchGroupWatchListForm) { var watchList = watchGroupWatchListForm.WatchList; var watchGroup = await _ctx.WatchGroups.FindAsync(watchGroupWatchListForm.watchGroupId); if (watchGroup == null || watchList == null || watchGroupWatchListForm.WatchList.Length > MAX_WATCHLIST_FILE_SIZE) { return(BadRequest()); } var savePath = await _fileHandlerService.SaveFile(watchList, new[] { ".csv" }); if (savePath == null) { return(BadRequest()); } var pairs = _csvReader.ReadKeyValues(savePath); var titles = pairs.Item1; var shortenedTitles = ShortenTitles(titles); var distinctTitles = shortenedTitles.Distinct().ToList(); var watchGroupItems = _ctx.WatchItems .Where(x => x.WatchGroupId == watchGroupWatchListForm.watchGroupId) .ToArray(); var watchItems = MapWatchItemsOfTitles(distinctTitles, watchGroup, watchGroupItems); await SaveWatchItems(watchItems, watchGroupItems, savePath); return(Ok()); }