Пример #1
0
        private void _InviteRequestNotification(Message message)
        {
            InviteRequest inviteRequest = message.Inviterequest;

            Console.WriteLine("收到了来自用户的邀请:" + inviteRequest.Srcuserid.ToString());
            ClientInfo.rival_user.userID = inviteRequest.Srcuserid;
            int  userid = inviteRequest.Srcuserid;
            User src_user;

            ClientInfo.online_users.TryGetValue(userid, out src_user);
            string name = src_user.username;

            bool has_user = false;

            foreach (KeyValuePair <int, User> pair in ClientInfo.online_users)
            {
                if (pair.Key == ClientInfo.rival_user.userID)
                {
                    ClientInfo.rival_user.username = pair.Value.username;
                    has_user = true;
                }
            }
            if (!has_user)
            {
                Console.WriteLine("该用户不在线!");
                return;
            }
            ClientInfo.send_invite_user.Enqueue(ClientInfo.rival_user);
        }
Пример #2
0
        public async Task HummClient_Throws_On_NonSuccess_Response()
        {
            var handler = new MockHttpHandler
                          (
                (clientRequest) =>
            {
                return(Task.FromResult(new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest)));
            }
                          );

            var config = new HummClientConfiguration()
            {
                BaseApiUrl = new Uri("https://integration-pos.shophumm.com.au/webapi/v1/Test/"),
                MerchantId = "30299999",
                DeviceId   = "d555",
                PosVersion = "1.0",
                DeviceKey  = "1234567890",
                HttpClient = new HttpClient(handler)
            };

            var client = new HummClient(config);

            var request = new InviteRequest()
            {
                MobileNumber = "0400000", PurchaseAmount = 10.01M, OperatorId = "Automated"
            };

            _ = await client.InviteAsync(request);
        }
        public IActionResult Invite([FromRoute] int groupId, [FromBody] InviteRequest request)
        {
            var userId = Request.GetUserId();

            _userFacade.Invite(userId, request.InvitedId, groupId, MemberRole.Teacher);
            return(Ok());
        }
        public async Task <IHttpActionResult> InviteToJoinMyCompany(Invite inviteDetail)
        {
            if (inviteDetail == null)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            if (inviteDetail.ToUserId <= 0)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            User user = await db.Users.SingleOrDefaultAsync(c => c.UserName == User.Identity.Name);

            if (user == null)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            if (!User.Identity.IsAuthenticated)
            {
                throw new HttpResponseException(HttpStatusCode.Unauthorized);
            }

            if (user.Company == null)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
            Guid inviteCode = Guid.NewGuid();


            string webSiteUrl = System.Configuration.ConfigurationManager.AppSettings["WebSiteUrl"];

            string emailContent = " You have been invited by {0} to join." + "<br><br>" + "Please click below link to register and join.";

            emailContent = string.Format(emailContent, user.FirstName + " (" + user.Email + ")");


            string          apiKey         = SENDGRID_API_KEY;
            SendGridClient  sendGridClient = new SendGridClient(apiKey, "https://api.sendgrid.com");
            EmailAddress    emailSender    = new EmailAddress("*****@*****.**", "Cervitt");
            String          subject        = "Invitation to Join Company on Cervitt.";
            EmailAddress    emailRecipient = new EmailAddress(inviteDetail.EmailAddress);
            Content         content        = new Content("text/html", emailContent);
            SendGridMessage mail           = MailHelper.CreateSingleEmail(emailSender, emailRecipient, subject, "", emailContent);
            dynamic         response       = sendGridClient.SendEmailAsync(mail);

            InviteRequest inviteRequest = new InviteRequest();

            inviteRequest.InviteType           = 2;
            inviteRequest.Processed            = false;
            inviteRequest.InviteDate           = DateTime.Now;
            inviteRequest.InviteCode           = inviteCode;
            inviteRequest.InviteFromCompanyId  = user.Company.ID;
            inviteRequest.InviteFromUserId     = user.Id;
            inviteRequest.InviteToUserId       = inviteDetail.ToUserId;
            inviteRequest.InviteToEmailAddress = null;
            inviteRequestService.Insert(inviteRequest);
            return(Ok("true"));
        }
Пример #5
0
        public async Task HummClient_CreateKey_SetsDeviceKey_On_Success()
        {
            int requestCount = 0;
            var handler      = new MockHttpHandler
                               (
                (clientRequest) =>
            {
                requestCount++;
                if (requestCount <= 1)
                {
                    return(GetSuccessfulCreateKeyResponse());
                }

                return(GetSuccessfulInviteResponse());
            }
                               );

            var client = CreateMockedClient(handler);

            var response = await client.CreateKeyAsync(new CreateKeyRequest()
            {
                DeviceToken = "ABC123", PosVendor = "Yort", OperatorId = "Yort", AutoUpdateClientToken = true
            });

            //Confirm key changed by making another call
            //that needs the returned key to gen valid sig
            var request = new InviteRequest()
            {
                MobileNumber = "0400000", PurchaseAmount = 10.01M, OperatorId = "Automated"
            };
            var response2 = await client.InviteAsync(request);

            Assert.AreEqual(RequestStates.Success, response.Status);
        }
Пример #6
0
        public async Task HummClient_Sets_Default_UserAgent()
        {
            string sentUserAgent = null;

            var handler = new MockHttpHandler
                          (
                (clientRequest) =>
            {
                sentUserAgent = clientRequest.Headers.UserAgent.ToString();
                return(GetSuccessfulInviteResponse());
            }
                          );

            var config = new HummClientConfiguration()
            {
                BaseApiUrl = new Uri("https://integration-pos.shophumm.com.au/webapi/v1/Test/"),
                MerchantId = "30299999",
                DeviceId   = "d555",
                PosVersion = "1.0",
                DeviceKey  = "1234567890",
                HttpClient = new HttpClient(handler)
            };

            var client = new HummClient(config);

            var request = new InviteRequest()
            {
                MobileNumber = "0400000", PurchaseAmount = 10.01M, OperatorId = "Automated"
            };
            var response = await client.InviteAsync(request);

            Assert.AreEqual("Yort.Humm.Instore/" + typeof(HummClientConfiguration).Assembly.GetName().Version.ToString(), sentUserAgent);
        }
        public async Task <IActionResult> RescindInvite([FromBody] InviteRequest request)
        {
            var currentUser = await _userManager.FindByNameAsync(User.Identity.Name);

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var league = await _fantasyCriticService.GetLeagueByID(request.LeagueID);

            if (league.HasNoValue)
            {
                return(BadRequest());
            }

            if (league.Value.LeagueManager.UserID != currentUser.UserID)
            {
                return(Unauthorized());
            }

            Result result = await _fantasyCriticService.RescindInvite(league.Value, request.InviteEmail);

            if (result.IsFailure)
            {
                return(BadRequest(result.Error));
            }

            return(Ok());
        }
        public IActionResult RequestInvite(InviteRequestModel requestModel)
        {
            //if already logged in, redirect to home
            if (!CurrentUser.IsVisitor())
            {
                return(R.Fail.Result);
            }
            //check if the email being requested is already a regsitered user
            var user = _userService.GetByUserInfo(requestModel.Email);

            if (user != null)
            {
                return(R.Fail.With("error", T("A user with this email is already registered")).Result);
            }
            //do we already have a request with this email
            var inviteRequest = _inviteRequestService.FirstOrDefault(x => x.Email == requestModel.Email);

            if (inviteRequest == null)
            {
                inviteRequest = new InviteRequest()
                {
                    Email     = requestModel.Email,
                    CreatedOn = DateTime.UtcNow
                };
                _inviteRequestService.Insert(inviteRequest);
                RaiseEvent(NamedEvent.InvitationRequested, requestModel.Email);
            }
            return(R.Success.Result);
        }
        public void Invite()
        {
            var request = new InviteRequest(GeneralRequests.Invite);

            request.Parse();
            Assert.Equal("test", request.ChannelName);
            Assert.Equal("spyguy", request.UserName);
        }
        public async Task <IActionResult> SendInvites(string[] phones, string message)
        {
            InviteRequest request = new InviteRequest()
            {
                Phones  = phones,
                Message = message
            };

            return(await Post <InviteRequest, InviteResponse>(request));
        }
Пример #11
0
        public async Task InviteAsync_Validates_MobileNumber_NotOverLength()
        {
            var client = CreateTestClient();

            var request = new InviteRequest()
            {
                MobileNumber   = "01234567890",
                PurchaseAmount = 0
            };

            _ = await client.InviteAsync(request);
        }
Пример #12
0
        public async Task InviteAsync_Validates_MobileNumber_NotEmpty()
        {
            var client = CreateTestClient();

            var request = new InviteRequest()
            {
                MobileNumber   = String.Empty,
                PurchaseAmount = 0
            };

            _ = await client.InviteAsync(request);
        }
Пример #13
0
        public async Task <Core.Models.Result.Result> Invite(InviteRequest inviteRequest)
        {
            _logger.LogInformation($"Adding new invite");

            ValidationResult validationResult = _inviteRequestValidator.Validate(inviteRequest);

            if (!validationResult.IsValid)
            {
                _logger.LogWarning($"Invalid {nameof(InviteToGroupRequest)} model");
                return(Result.Fail(validationResult.ToResultError()).ToOldResult());
            }

            return((await AddInvite(inviteRequest.Email, inviteRequest.RoleId, inviteRequest.GroupId, inviteRequest.GroupRoleId)).ToOldResult());
        }
Пример #14
0
        public void _InviteRequest(int userid)
        {
            InviteRequest invite = new InviteRequest();

            invite.Dstuserid = userid;
            invite.Srcuserid = ClientInfo.self_user.userID;

            Message message = new Message();

            message.Type          = BombplaneProto.Type.InviteRequest;
            message.Inviterequest = invite;
            Console.WriteLine("dstuserid:" + message.Inviterequest.Dstuserid.ToString());
            NetworkClient.Generate_Package(message);
        }
Пример #15
0
 public long Insert(InviteRequest request)
 {
     if (request == null)
     {
         return(0);
     }
     if (string.IsNullOrEmpty(request.InviteToEmailAddress))
     {
         return(0);
     }
     db.InviteRequests.Add(request);
     db.SaveChangesAsync();
     return(request.Id);
 }
Пример #16
0
        public void RequestBase_Validates_PosVersion_Oversize()
        {
            var request = new InviteRequest()
            {
                DeviceId       = Environment.GetEnvironmentVariable("Humm_Test_Sandbox_DeviceId"),
                MerchantId     = Environment.GetEnvironmentVariable("Humm_Test_Sandbox_MerchantId"),
                PosVersion     = "0123456789012345678901234567890123456789012345678901234567890123456789",
                MobileNumber   = "04000000",
                PurchaseAmount = 10,
                OperatorId     = "Yort"
            };

            request.Validate();
        }
Пример #17
0
        public void RequestBase_Validates_DeviceId_Not_Empty()
        {
            var request = new InviteRequest()
            {
                DeviceId       = String.Empty,
                MerchantId     = Environment.GetEnvironmentVariable("Humm_Test_Sandbox_MerchantId"),
                PosVersion     = "1.0",
                MobileNumber   = "04000000",
                PurchaseAmount = 10,
                OperatorId     = "Yort"
            };

            request.Validate();
        }
Пример #18
0
        public void InviteRequest_Validates_Ok_When_Valid()
        {
            var request = new InviteRequest()
            {
                OperatorId     = "Yort",
                DeviceId       = Environment.GetEnvironmentVariable("Humm_Test_Sandbox_DeviceId"),
                MerchantId     = Environment.GetEnvironmentVariable("Humm_Test_Sandbox_MerchantId"),
                PosVersion     = "1.0",
                MobileNumber   = "0123456789",
                PurchaseAmount = 10
            };

            request.Validate();
        }
Пример #19
0
        public async Task <ActionResult> ContragentRegistration([FromBody] InviteRequest request,
                                                                [FromServices] IInviteService inviteService)
        {
            var codeAndEmail = request.InviteClientRequest.Xin + ">" + HttpContext.User.Identity.Name;
            var code         = inviteService.GenerateCode(codeAndEmail);
            var callbackUrl  = Url.Action("GetInformationByInviteCode",
                                          "Registration",
                                          new { email = request.InviteClientRequest.Email, code },
                                          protocol: HttpContext.Request.Scheme);

            callbackUrl = callbackUrl.Replace("api/Registration/GetInformationByInviteCode", "auth/registration");
            var response = await inviteService.RegisterContrager(request, callbackUrl, User.Identity.Name);

            return(Json(ApiResponse.Success(response)));
        }
Пример #20
0
        public Task <Result> Invite(InviteRequest inviteRequest)
        {
            _logger.LogInformation($"Adding new invite");

            ValidationResult validationResult = _inviteRequestValidator.Validate(inviteRequest);

            if (!validationResult.IsValid)
            {
                _logger.LogWarning($"Invalid {nameof(InviteToGroupRequest)} model");
                return(Task.FromResult(Result.Fail(validationResult.Errors)));
            }

            Result canInviteResult = CanInvite(inviteRequest.Email);

            if (canInviteResult.Failure)
            {
                return(Task.FromResult(Result.Fail(canInviteResult.Errors)));
            }

            if (inviteRequest.RoleId != null)
            {
                Result globalRoleExists = GlobalRoleExists(inviteRequest.RoleId);
                if (globalRoleExists.Failure)
                {
                    return(Task.FromResult(Result.Fail(globalRoleExists.Errors)));
                }
            }

            if (inviteRequest.GroupId != null)
            {
                Result isGroupInviteValid = IsGroupInviteValid(inviteRequest.GroupId, inviteRequest.GroupRoleId);
                if (isGroupInviteValid.Failure)
                {
                    return(Task.FromResult(Result.Fail(isGroupInviteValid.Errors)));
                }
            }

            InviteEntity inviteEntity = new InviteEntity(
                email: inviteRequest.Email,
                token: StringUtils.GenerateToken(),
                status: Data.Enums.Entity.InviteStatuses.Pending,
                roleId: inviteRequest.RoleId,
                groupId: inviteRequest.GroupId,
                groupRoleId: inviteRequest.GroupRoleId,
                expiresAt: DateTimeOffset.UtcNow.Add(_identityManagementEndpoints.InviteValidForTimeSpan));

            return(AddInvite(inviteEntity));
        }
        public async Task <IActionResult> InvitePlayer([FromBody] InviteRequest request)
        {
            var currentUser = await _userManager.FindByNameAsync(User.Identity.Name);

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var league = await _fantasyCriticService.GetLeagueByID(request.LeagueID);

            if (league.HasNoValue)
            {
                return(BadRequest());
            }

            if (league.Value.LeagueManager.UserID != currentUser.UserID)
            {
                return(Unauthorized());
            }

            foreach (var year in league.Value.Years)
            {
                var leagueYear = await _fantasyCriticService.GetLeagueYear(league.Value.LeagueID, year);

                if (leagueYear.Value.PlayStatus.PlayStarted)
                {
                    return(BadRequest("You can't add a player to a league that has already started playing"));
                }
            }

            FantasyCriticUser inviteUser = await _userManager.FindByEmailAsync(request.InviteEmail);

            if (inviteUser is null)
            {
                string baseURL = $"{Request.Scheme}://{Request.Host.Value}";
                await _emailSender.SendInviteEmail(request.InviteEmail, league.Value, baseURL);
            }

            Result result = await _fantasyCriticService.InviteUser(league.Value, request.InviteEmail);

            if (result.IsFailure)
            {
                return(BadRequest(result.Error));
            }

            return(Ok());
        }
Пример #22
0
        public async Task <IActionResult> Add([FromBody] InviteRequest inviteRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            Result result = await _inviteService.Invite(inviteRequest);

            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
Пример #23
0
        public async Task InviteAsync_Throws_When_Disposed()
        {
            var client = CreateTestClient();

            client.Dispose();

            var request = new InviteRequest()
            {
                MerchantId     = "30299999",
                DeviceId       = "d555",
                OperatorId     = "test_operator",
                PosVersion     = "123",
                MobileNumber   = "0400000000",
                PurchaseAmount = 100M
            };

            _ = await client.InviteAsync(request);
        }
Пример #24
0
        public async Task <IHttpActionResult> GetInviteByCode(string code)
        {
            Invite invite = new Invite();

            if (!string.IsNullOrEmpty(code))
            {
                Guid          inviteCode    = Guid.Parse(code);
                InviteRequest inviteRequest = await db.InviteRequests.SingleOrDefaultAsync(c => c.InviteCode == inviteCode && !c.Processed);

                if (inviteRequest != null)
                {
                    invite = new Invite {
                        EmailAddress = inviteRequest.InviteToEmailAddress, ToUserId = 0
                    };
                }
            }
            return(Ok(invite));
        }
Пример #25
0
 public async Task CreateContraget(InviteRequest request)
 {
     using (var rep = new Repository <Contragent>(_provider)) {
         var contragent = rep.Get(u => u.Xin == request.InviteClientRequest.Xin && u.Type == request.InviteClientRequest.ContragentType).FirstOrDefault();
         if (contragent != null)
         {
             throw new SmartcontractException("Пользователь с таким сочетанием ИИН/БИН и email уже существует в системе");
         }
         contragent = new Contragent()
         {
             Type     = request.InviteClientRequest.ContragentType,
             Xin      = request.InviteClientRequest.Xin,
             FullName = request.InviteClientRequest.FullName,
         };
         contragent.UniqueId = GenerateContragentUniqueId(contragent);
         rep.Insert(contragent);
         rep.Commit();
     }
 }
Пример #26
0
        public async Task HummClient_Exception_On_NonSuccess_Includes_Response_Content()
        {
            var handler = new MockHttpHandler
                          (
                (clientRequest) =>
            {
                return(Task.FromResult(new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest)
                {
                    Content = new StringContent("Unrecognised fields in request")
                }));
            }
                          );

            var config = new HummClientConfiguration()
            {
                BaseApiUrl = new Uri("https://integration-pos.shophumm.com.au/webapi/v1/Test/"),
                MerchantId = "30299999",
                DeviceId   = "d555",
                PosVersion = "1.0",
                DeviceKey  = "1234567890",
                HttpClient = new HttpClient(handler)
            };

            var client = new HummClient(config);

            string responseContent = null;
            var    request         = new InviteRequest()
            {
                MobileNumber = "0400000", PurchaseAmount = 10.01M, OperatorId = "Automated"
            };

            try
            {
                _ = await client.InviteAsync(request);
            }
            catch (HttpRequestException ex)
            {
                responseContent = (string)ex.Data["ResponseContent"];
            }

            Assert.AreEqual("Unrecognised fields in request", responseContent);
        }
        public void Writes_Full_Request_When_Passed_Base_Type()
        {
            var sigGen = new Hmac256SignatureGenerator("dy33vQhksVsv");
            var writer = new SignedRequestWriter(sigGen);

            RequestBase request = new InviteRequest()
            {
                MerchantId     = "30299999",
                DeviceId       = "d555",
                OperatorId     = "test_operator",
                PosVersion     = "123",
                MobileNumber   = "0400000000",
                PurchaseAmount = 100M
            };

            var result = writer.WriteRequest(request);

            Assert.AreEqual("{\"x_mobile\":\"0400000000\",\"x_purchase_amount\":10000,\"x_merchant_id\":\"30299999\",\"x_device_id\":\"d555\",\"x_firmware_version\":\"123\",\"x_operator_id\":\"test_operator\",\"signature\":\"e8045e8fdd521d9da2b4cd0c00f816680e9ec4d85bddab95c839d91f170f9deb\"}", result);
            Assert.IsTrue(result.Contains("e8045e8fdd521d9da2b4cd0c00f816680e9ec4d85bddab95c839d91f170f9deb"));
        }
Пример #28
0
        public void RequestBase_Validates_Max_TrackingItems()
        {
            var request = new InviteRequest()
            {
                DeviceId       = Environment.GetEnvironmentVariable("Humm_Test_Sandbox_DeviceId"),
                MerchantId     = Environment.GetEnvironmentVariable("Humm_Test_Sandbox_MerchantId"),
                PosVersion     = "1.0",
                MobileNumber   = "04000000",
                PurchaseAmount = 10,
                OperatorId     = "Yort",
                TrackingData   = new Dictionary <string, string>()
            };

            for (int cnt = 0; cnt < 1000010; cnt++)
            {
                request.TrackingData.Add("Key" + cnt.ToString(), cnt.ToString());
            }

            request.Validate();
        }
Пример #29
0
        public async Task <bool> RegisterContrager(InviteRequest request, string url, string emailSender)
        {
            using (var repository = new Repository <User>(_provider)) {
                var profileManager          = new ProfileManager(_provider);
                var notificationSettingsRep = new Repository <NotificationSettings>(repository);
                request.InviteClientRequest.ContragentType =
                    request.InviteClientRequest.IsJuridic ? ContragentTypeEnum.Legal : request.InviteClientRequest.ContragentType;
                await profileManager.CreateContraget(request);

                var message =
                    $"Пользователь {request.SenderFullName}, {request.SenderXin} приглашает Вас участвовать в двухстороннем подписании электронных документов в системе Smartcontract.kz. Комментарий от отправителя:{request.InviteClientRequest.Comment}. Для завершения регистрации, пожалуйста, перейдите по следующей ссылке  <a href='{url}'>smartcontract.kz</a>";
                _emailService.SendEmail(request.InviteClientRequest.Email, "Приглашение на smartcontract.kz", message);
                message =
                    $"Вы отправили приглашение пользователю {request.InviteClientRequest.FullName}, {request.InviteClientRequest.Xin} на email {request.InviteClientRequest.Email}, со следующим комментарием: «{request.InviteClientRequest.Comment}».";
                var notificationSettingsSender = notificationSettingsRep.Get(x => x.User.Email == emailSender).Single();
                if (notificationSettingsSender.InviteSend)
                {
                    _emailService.SendEmail(emailSender, "Вы отправили приглашение на Smartcontract.kz", message);
                }
                return(true);
            }
        }
Пример #30
0
        /// <summary>
        /// Removes the specified invite request.
        /// </summary>
        /// <param name="userId">User who is removing the invite request</param>
        /// <param name="inviteRequestId">Invite request to be removed</param>
        /// <returns>True if the invite request is removed, false otherwise</returns>
        public Task <OperationStatus> RemoveInviteRequest(long userId, int inviteRequestId)
        {
            var operationStatus = new OperationStatus();

            try
            {
                // Find the invite request entity in database.
                InviteRequest inviteRequest = _inviteRequestRepository.GetItem(ir => ir.InviteRequestID == inviteRequestId, "InviteRequestContent");

                // Check invite request is not null
                this.CheckNotNull(() => new { inviteRequest });

                var userRole = _userRepository.GetUserRole(userId, inviteRequest.InviteRequestContent.CommunityID);
                if (userRole >= UserRole.Moderator)
                {
                    inviteRequest.IsDeleted   = true;
                    inviteRequest.DeletedByID = userId;
                    inviteRequest.DeletedDate = DateTime.UtcNow;
                    _inviteRequestRepository.Update(inviteRequest);
                    _inviteRequestRepository.SaveChanges();

                    operationStatus.Succeeded = true;
                }
                else
                {
                    operationStatus = OperationStatus.CreateFailureStatus(Resources.NoPermissionInviteRequestMessage);
                }
            }
            catch (Exception)
            {
                // TODO: Add exception handling logic here.
                operationStatus.Succeeded          = false;
                operationStatus.CustomErrorMessage = true;
                operationStatus.ErrorMessage       = Resources.UnknownErrorMessage;
            }

            return(Task.FromResult(operationStatus));
        }
 public void InviteCommand(InviteRequest inviteRequest)
 {
     _invitationBusiness.Invite(User.Identity.Name, inviteRequest.ProjectKey, inviteRequest.User);
 }