public ConferenceLinkPresenter(IConferenceLinkRepo conferenceLinkRepo, IConferenceScheduler scheduler, IOpenConferenceRepository openConferenceRepository) { _conferenceLinkRepo = conferenceLinkRepo; _scheduler = scheduler; _openConferenceRepository = openConferenceRepository; }
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 <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(); })); }