/// <summary> /// Method that takes in a Channel Author and Channel Name from API and creates a Channel Object for the DB /// </summary> /// <param name="c"></param> /// <param name="channelName"></param> /// <returns></returns> public async Task <Channel> ParseChannelAsync(BL.Creator c, string channelName) { return(new Channel() { ChannelName = channelName, ChannelAuthor = await GetCreatorByEmailAsync(c.Email) }); }
/// <summary> /// Method that converts Business Logic Creator Objects for API to Entity Creator Objects for DB and vice versa /// </summary> /// <param name="creator"></param> /// <returns></returns> public async Task <Creator> ParseCreatorAsync(BL.Creator creator) { return(await Task.FromResult(new Creator() { FirstName = creator.FirstName, LastName = creator.LastName, Email = creator.Email })); }
public async Task AddCreatorandChannelAsync(BL.Creator c, string channelName) { if (await CheckIfChannelNameExistsAsync(channelName)) { throw new ChannelNameTakenException("Channel Name Already Taken"); } else { await AddCreatorAsync(c); await AddChannelAsync(c, channelName); } }
/// <summary> /// Method for adding analysis to the db /// </summary> /// <param name="sentimentAverage"></param> /// <param name="c"></param> public async Task AddAnalysisAsync(BL.AverageSentiment sentimentAverage, BL.Creator c) { if (await _context.Creator.FirstOrDefaultAsync(creator => creator.Email == c.Email) == null) { throw new CreatorDoesNotExistException(); } if (await _context.Video.FirstOrDefaultAsync(v => v.URL == sentimentAverage.VideoURL) == null) { await AddVideoAsync(sentimentAverage.VideoURL, c.ChannelName); } await _context.Analysis1.AddAsync(await _map.ParseAnalysisAsync(sentimentAverage, c)); await _context.SaveChangesAsync(); }
/// <summary> /// Method that updates channel name of a creator /// </summary> /// <param name="newChannelName"></param> /// <param name="channelAuth"></param> public async Task UpdateChannelNameAsync(string newChannelName, BL.Creator channelAuth) { Channel toUpdate = await _context.Channel.FirstOrDefaultAsync(c => c.ChannelAuthor.Email == channelAuth.Email); if (await CheckIfChannelNameExistsAsync(newChannelName)) { throw new ChannelNameTakenException("Channel Name Already Taken. Input a unique one"); } else { toUpdate.ChannelName = newChannelName; await _context.SaveChangesAsync(); } }
/// <summary> /// Method that gets the Analysis History of a certain video by a creator /// </summary> /// <param name="videourl"></param> /// <param name="c"></param> /// <returns></returns> public async Task <List <BL.AverageSentiment> > GetAnalysisHistoryAsync(string videourl, BL.Creator c) { List <BL.AverageSentiment> analHist = new List <BL.AverageSentiment>(); List <Analysis1> analHistfromDB = await _context.Analysis1.Where(a => a.Vid.URL == videourl && a.Creatr.Email == c.Email).Include(a => a.Vid).ToListAsync(); foreach (Analysis1 item in analHistfromDB) { analHist.Add(await _map.ParseAnalysisAsync(item)); } return(analHist); }
/// <summary> /// Method for adding creator to table /// </summary> /// <param name="c"></param> public async Task AddCreatorAsync(BL.Creator c) { await _context.Creator.AddAsync(await _map.ParseCreatorAsync(c)); await _context.SaveChangesAsync(); }
/// <summary> /// Adding a channel to the DB, must have a creator in the DB first /// </summary> /// <param name="c"></param> /// <param name="channelName"></param> public async Task AddChannelAsync(BL.Creator c, string channelName) { await _context.Channel.AddAsync(await _map.ParseChannelAsync(c, channelName)); await _context.SaveChangesAsync(); }
/// <summary> /// Method that converts Business Logic Analysis Objects for API to Entity Analysis Objects for DB and vice versa /// </summary> /// <param name="sentimentAverage"></param> /// <param name="c"></param> /// <returns></returns> public async Task <Analysis1> ParseAnalysisAsync(BL.AverageSentiment sentimentAverage, BL.Creator c) { return(await Task.FromResult(new Analysis1() { Creatr = await GetCreatorByEmailAsync(c.Email), Vid = await GetVideoByURLAsync(sentimentAverage.VideoURL), AnalDate = DateTime.Now, SentAve = (decimal)sentimentAverage.AverageSentimentScore })); }