public async Task <Result <string> > Create(Models.Requests.ManagerInvitationInfo managerInvitationInfo)
 {
     return(await _managerContext.GetManagerRelation()
            .Ensure(managerRelation => HasManagerInvitationManagerPermission(managerRelation).Value, "The manager does not have enough rights")
            .Bind(managerRelation => CreateInvitation(managerInvitationInfo, managerRelation))
            .Bind(SaveInvitation)
            .Tap(managerInvitation => LogInvitationCreated(managerInvitation.Email))
            .Bind(GetInvitationCode));
 public async Task <Result> Send(Models.Requests.ManagerInvitationInfo managerInvitationInfo)
 {
     return(await _managerContext.GetManagerRelation()
            .Ensure(managerRelation => HasManagerInvitationManagerPermission(managerRelation).Value, "The manager does not have enough rights")
            .BindWithTransaction(_dbContext, managerRelation => CreateInvitation(managerInvitationInfo, managerRelation)
                                 .Bind(SaveInvitation)
                                 .Bind(SendInvitationMail))
            .Tap(managerInvitation => LogInvitationCreated(managerInvitation.Email)));
 }