public async Task <ActionResult> DeleteConferenceLink(string conferenceId, [FromServices] IConferenceLinkRepo repo) { var userId = User.Claims.First(x => x.Type == ClaimTypes.NameIdentifier).Value; var conferenceLink = (await repo.FindAsync( new ConferenceLinkByParticipant(userId).And(new ConferenceLinkByConference(conferenceId)))) .FirstOrDefault(); if (conferenceLink == null) { return(NotFound(new Error(ErrorType.NotFound.ToString(), "The conference link was not found", "ConferenceLink_NotFound"))); } try { await repo.DeleteAsync(conferenceLink); } catch (MongoConcurrencyDeletedException) { } return(Ok()); }
public async Task <IReadOnlyList <ConferenceLinkDto> > GetConferenceLinks(string participantId) { var result = new List <ConferenceLinkDto>(); var links = await _conferenceLinkRepo.FindAsync(new ConferenceLinkByParticipant(participantId)); foreach (var conferenceLink in links) { var isActive = await _openConferenceRepository.IsOpen(conferenceLink.ConferenceId); var scheduled = _scheduler.GetNextExecution(conferenceLink); result.Add(new ConferenceLinkDto(conferenceLink, isActive, scheduled)); } return(result); }
public async Task <ActionResult> PatchConferenceLink(string conferenceId, JsonPatchDocument <ChangeConferenceLinkStarDto> patch, [FromServices] IConferenceLinkRepo repo, [FromServices] IOptions <ConcurrencyOptions> options) { var userId = User.Claims.First(x => x.Type == ClaimTypes.NameIdentifier).Value; return(await Policy <ActionResult> .Handle <MongoConcurrencyUpdatedException>() .RetryAsync(options.Value.RetryCount).ExecuteAsync(async() => { var conferenceLink = (await repo.FindAsync( new ConferenceLinkByParticipant(userId).And(new ConferenceLinkByConference(conferenceId)))) .FirstOrDefault(); if (conferenceLink == null) { return NotFound(new Error(ErrorType.NotFound.ToString(), "The conference link was not found", "ConferenceLink_NotFound")); } var dto = new ChangeConferenceLinkStarDto { Starred = conferenceLink.Starred }; patch.ApplyTo(dto); conferenceLink.Starred = dto.Starred; try { await repo.CreateOrReplaceAsync(conferenceLink); } catch (MongoConcurrencyDeletedException) { return NotFound(new Error(ErrorType.NotFound.ToString(), "The conference link was not found", "ConferenceLink_NotFound")); } return Ok(); })); }