Exemple #1
0
        public async Task <ApiResult> Update(UpdateInvitation request)
        {
            request.CompanyUid = await _currentCompanyProvider.GetCompanyUid();

            request.UserUid = _currentUserProvider.GetUserUid();

            return(await _mediator.Send(request));
        }
Exemple #2
0
        /// <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;
            }
        }
Exemple #3
0
        /// <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));