public async Task <IActionResult> SetEdit([FromBody] DTOs.Edit edit) { string userId = User?.FindFirst(ClaimTypes.NameIdentifier)?.Value; var editDM = new DomainModels.Edit { ClipUID = edit.ClipUID, StartTrim = edit.StartTrim, EndTrim = edit.EndTrim }; var result = await Repository.AddEditAsync(userId, editDM); if (!result) { return(Unauthorized()); } else { return(Ok()); } }
/// <summary> /// Applies the specified edit to the audio stream attached to the sessionUID and userUID. /// </summary> /// <param name="sessionUid">UID of the session.</param> /// <param name="userUid">UID of the user.</param> /// <param name="edit">Edit to apply.</param> /// <returns></returns> public async Task <bool> AddEditAsync(string userUid, DomainModels.Edit edit) { var clip = await DbContext.Clips.Include(x => x.Edit).Include(c => c.Session) .FirstOrDefaultAsync(c => c.UID == edit.ClipUID && c.Session.Podcast.Members.Any(x => x.UserUID == userUid & x.IsAdmin)); if (clip == null) { return(false); } if (clip.Edit != null) { if (clip.Edit.StartTrim == edit.StartTrim && clip.Edit.EndTrim == edit.EndTrim) { return(true); } DbContext.Edits.Remove(clip.Edit); } var dbEdit = new Db.Edit { ClipID = clip.ID, StartTrim = edit.StartTrim, EndTrim = edit.EndTrim, }; DbContext.Edits.Add(dbEdit); await DbContext.SaveChangesAsync(); await UpdateStreamAsync(clip.Session.UID, dbEdit.ID); return(true); }