public async Task <ApiResult> Update(UpdateInvitation request) { request.CompanyUid = await _currentCompanyProvider.GetCompanyUid(); request.UserUid = _currentUserProvider.GetUserUid(); return(await _mediator.Send(request)); }
/// <summary> /// Updates an invitation's state and informs the appropriate users. /// </summary> /// <param name="invitation">The invitation to be updated</param> /// <returns>A Task instance</returns> public async Task UpdateInvitation(long id, bool accepted) { var httpContext = Context.GetHttpContext(); var data = new UpdateInvitation { InvitationId = id, Accepted = accepted }; var monad = await _userService.UpdateInvitationAsync(httpContext, data); var signalGroup = string.Empty; var invite = new Invitation(); switch (monad) { case Success <Invitation, Error> success when success.Value.Accepted: invite = success.Value; signalGroup = ServerSignalName(invite.ServerId); await Clients.Group(signalGroup).UpdatedInvitation(invite); await Clients.Caller.UpdatedInvitation(invite); break; case Success <Invitation, Error> success when !success.Value.Accepted: invite = success.Value; signalGroup = ServerSignalName(invite.ServerId); await Clients.Caller.UpdatedInvitation(invite); break; case Failure <Invitation, Error> failure: await Clients.Caller.UpdatedInvitation(failure.Value); break; default: await Clients.Caller.UpdatedInvitation(SystemErrors.Exception()); break; } }
/// <summary> /// Updates a sent invitations based on the provided parameters. /// </summary> /// <param name="context">The current http context</param> /// <param name="invitation">The invitations instance to be updated</param> /// <returns>A task of an either monad</returns> public async Task <Either <Invitation, Error> > UpdateInvitationAsync(HttpContext context, UpdateInvitation invitation) { try { var method = HttpMethod.Put; var url = $"/api/user/invitation"; var jsonMessage = JsonSerializer.Serialize(invitation); var content = new StringContent(jsonMessage, Encoding.UTF8, "application/json"); return(await _apiInteropService.SendAsync <Invitation>(context, method, url, content)); } catch (Exception e) { _logger.LogError(e.Message); return(new Failure <Invitation, Error>(SystemErrors.Exception())); } }
public MonadActionResult <Invitation, Error> UpdateInvitation([FromBody] UpdateInvitation invitation) => HttpContext.GetUserId() .Bind(userId => _userService.UpdateInvitation(userId, invitation));