public ActionResponse SendConfirmSms(UserProfile profile) { var userSrv = ServiceFactory.Create <IAspNetUserService>(); var user = userSrv.GetCurrent(); var username = user.UserName; if (!String.IsNullOrEmpty(profile.PhoneNumber)) { user.PhoneNumber = profile.PhoneNumber; if (String.Compare(user.PhoneNumber, profile.PhoneNumber, true) != 0) { user.PhoneNumberConfirmed = false; } userSrv.Save(user); } if (String.IsNullOrEmpty(user.PhoneNumber)) { return(new ActionResponse("شماره تماس تنظیم نشده است.")); } profile.ResetChanges(); int sendCount = profile.PhoneNumberConfirmSendCount + 1; if (profile.PhoneNumberConfirmSendDt != null) { var time_diff = profile.PhoneTimeDiff.Value; if (profile.PhoneExceedWaitTimeLimit) { return(new ActionResponse(string.Format("برای ارسال پیامک تایید لطفا حداقل {0} ثانیه صبر نمایید.", (profile.PhoneWaitTime.Value - DateTime.Now).TotalSeconds))); } if (profile.PhoneExceedSendCountLimit) { return(new ActionResponse(string.Format("ارسال پیامک تایید بیشتر از {0} بار در طول یک روز امکانپذیر نمی باشد.", Constants.Notification.MaxCount))); } if (time_diff.TotalHours > 24) { sendCount = 1; } } RandomValueGenerator rnd = new RandomValueGenerator(); var code = rnd.Digit(5); if (code[0] == '0') { code = rnd.Number(1, 9) + code.Substring(0, 4); } var hashCode = code.GetHashCode(); Repository.BulkUpdate(x => username.Equals(x.Username, StringComparison.CurrentCultureIgnoreCase), x => new UserProfile { PhoneNumberHashedConfirmCode = hashCode, PhoneNumberConfirmSendDt = DateTime.Now, PhoneNumberConfirmSendCount = sendCount }); var noty = ObjectRegistry.GetObject <INotificationProvider>(); var result = noty.VerifySms(code, user.PhoneNumber); bool success = result.Result == NotificationResultType.Success; return(new ActionResponse { Success = success, Message = "پیامک تایید ارسال شد." }); }