private List <GroupCardModel> FindRecommendedGroups() { List <GroupCardModel> grpItems = new List <GroupCardModel>(); if (CurrentMember != null) { String [] issues = new List <string>(CurrentMember.Children.Select(x => x.Issues.Select(k => k.Key.ToString("B").ToUpper())).SelectMany(x => x)).ToArray(); String[] grades = new List <string>(CurrentMember.Children.Select(x => x.Grades.Select(g => g.Key.ToString("B").ToUpper())).SelectMany(x => x)).ToArray(); String[] topics = CurrentMember.Interests.Select(x => x.Key.ToString("B").ToUpper()).ToArray(); String[] states = new string[] { CurrentMember.zipCodeToState() }; String[] partners = new string[0]; //Partners not applicable to Member profile if (issues.Count() > 0 && grades.Count() > 0 && topics.Count() > 0) { litViewProfileLink1.Visible = false; } else if ((issues.Count() > 0 || grades.Count() > 0) || topics.Count() > 0) { //Set message to //"For better recommendations, complete your full profile (link to profile process)" litViewProfileLink1.Visible = true; } return(Groups.FindGroups(issues, topics, grades, states, partners).OrderByDescending(x => x.NumOfMembers).ToList()); } return(grpItems); }
/// <summary> /// Checks-out the given books by setting the CheckedOutBy /// property to the CurrentMember MemberID. /// </summary> /// <param name="books">List<Book></param> public static bool CheckoutBooks(List <Book> books) { LibraryContext context = new LibraryContext(); Member member = CurrentMember.GetCurrentMember(); int memberID = Convert.ToInt32(member.MemberID); foreach (Book book in books) { Book dbBook = context.Books.Find(book.ISBN); dbBook.CheckedOutBy = memberID; } context.SaveChanges(); if (IsChecked(books)) { return(true); } else { return(false); } }
public ActionResult Create(MemberVo input) { ViewBag.Title = "Add New User"; if (this.ModelState.IsValid) { input.password = CurrentMember.HashWord(input.password); var item = memberManager.insert(input); if (input.memberRoleTypes != null) { foreach (int roleId in input.memberRoleTypes) { var memberRoleLookupVo = new MemberRoleLookupVo(); memberRoleLookupVo.memberId = input.memberId; memberRoleLookupVo.memberRoleTypeId = roleId; memberRoleLookupVo.isActive = true; memberRoleLookupManager.insert(memberRoleLookupVo); } } return(RedirectToAction("Index")); } return(View(input)); }
public async Task XpAsync([Remainder] DiscordMember?member = null) { member ??= (DiscordMember)Context.User; await Context.Channel.TriggerTypingAsync(); var serverAttachFilesPerm = Context.Guild !.CurrentMember.GetPermissions().HasPermission(Permissions.AttachFiles); var channelAttachFilesPerm = Context.Guild !.CurrentMember.PermissionsIn(Context.Channel).HasPermission(Permissions.AttachFiles); if (!serverAttachFilesPerm && !channelAttachFilesPerm) { await ReplyErrorAsync(Localization.XpNoAttachFilesPermission); return; } if (serverAttachFilesPerm && !channelAttachFilesPerm) { await ReplyErrorAsync(Localization.XpNoAttachFilesChannelPermission); return; } await using var xpImage = await Service.GenerateXpImageAsync(member); await Context.Channel.SendMessageAsync(new DiscordMessageBuilder().WithFile($"{member.Id}_xp.png", xpImage)); }
private void updateDueDateInLendingList(Account account, ObservableCollection <BookToShow> renewBookList) { foreach (var book in renewBookList) { BookItem bookItem = dataLoadFromDB.findBookItemByID(int.Parse(book.Id)); if (bookItem.dueDate != null) { DateTime dateTime = (DateTime)bookItem.dueDate; bookItem.dueDate = dateTime.AddDays(10); } bookItem.lendingStatus = model.enums.LendingStatus.RENEWED; if (Db.getInstace().updateLendingRenew(CurrentMember.getInstance().GetAccount(), bookItem)) { if (dataLoadFromDB.updateBookItem(bookItem) != null) { returnUpdateBook(); returnUpdateMember(); } } else { MessageBox.Show("Unknow error"); } } }
public MemberVo update(MemberVo input, int?memberId = null) { using (var db = new MainDb()) { if (memberId == null) { memberId = input.memberId; } var res = db.members.Include(i => i.contactInfo).FirstOrDefault(e => e.memberId == memberId); if (res == null) { return(null); } input.created = res.created; if (!string.IsNullOrEmpty(input.passwordReset)) { input.password = CurrentMember.HashWord(input.passwordReset); } else { input.password = res.password; } // input.createdBy = res.createdBy; db.Entry(res).CurrentValues.SetValues(input); db.SaveChanges(); return(res); } }
/// <summary> /// Initializes a new instance of the <see cref="ChartBulletSeries{TModel, TCurrent, TTarget}"/> class. /// </summary> /// <param name="targetExpression">The expression used to extract the point target from the chart model.</param> /// <param name="currentExpression">The expression used to extract the point current from the chart model.</param> /// <param name="colorExpression">The expression used to extract the point color from the chart model.</param> /// <param name="categoryExpression">The expression used to extract the point category from the chart model.</param> /// <param name="noteTextExpression">The expression used to extract the point note text from the chart model.</param> public ChartBulletSeries( Expression <Func <TModel, TValue> > currentExpression, Expression <Func <TModel, TValue> > targetExpression, Expression <Func <TModel, string> > colorExpression, Expression <Func <TModel, TCategory> > categoryExpression, Expression <Func <TModel, string> > noteTextExpression) { if (typeof(TModel).IsPlainType() && !currentExpression.IsBindable()) { throw new InvalidOperationException(Exceptions.MemberExpressionRequired); } CurrentMember = currentExpression.MemberWithoutInstance(); if (typeof(TModel).IsPlainType() && !targetExpression.IsBindable()) { throw new InvalidOperationException(Exceptions.MemberExpressionRequired); } TargetMember = targetExpression.MemberWithoutInstance(); if (colorExpression != null) { if (typeof(TModel).IsPlainType() && !colorExpression.IsBindable()) { throw new InvalidOperationException(Exceptions.MemberExpressionRequired); } ColorMember = colorExpression.MemberWithoutInstance(); } if (categoryExpression != null) { if (typeof(TModel).IsPlainType() && !categoryExpression.IsBindable()) { throw new InvalidOperationException(Exceptions.MemberExpressionRequired); } Category = categoryExpression.Compile(); CategoryMember = categoryExpression.MemberWithoutInstance(); } if (noteTextExpression != null) { if (typeof(TModel).IsPlainType() && !noteTextExpression.IsBindable()) { throw new InvalidOperationException(Exceptions.MemberExpressionRequired); } NoteTextMember = noteTextExpression.MemberWithoutInstance(); } if (string.IsNullOrEmpty(Name)) { Name = CurrentMember.AsTitle(); } Initialize(); }
public BookBorrowReturn() { InitializeComponent(); selectedBooks = new ObservableCollection <BookToShow>(); CurrentMember current = CurrentMember.getInstance(); DataContext = new ReturnBookViewModel(current.GetAccount()); UserScanerBoardViewModel.updateLedingBookList += UserScanerBoardViewModel_updateLedingBookList; }
public JsonNetResult SaveMemberInfo(Customers newEntity, string ddlProvince, string ddlCity, string ddlArea, string ttbAddress) { newEntity.Mobile = newEntity.Mobile.Trim(); if (newEntity.Mobile.IsNullOrTrimEmpty()) { return(new JsonNetResult(new OpResult() { Successed = false, Message = "手机不能为空" })); } if (new Regex(@"^1[3|5|7|8|][0-9]{9}$").IsMatch(newEntity.Mobile) == false) { return(new JsonNetResult(new OpResult() { Successed = false, Message = "手机格式不正确" })); } var userId = CurrentMember.MemberId.ToString(); var code = Request.Params["Code"]; var customer = new MemberService().GetMember(userId); if (customer == null) { return(new JsonNetResult(new OpResult() { Successed = false, Message = "找不到会员信息" })); } else { if (customer.Mobile.IsNullOrTrimEmpty()) { return(new JsonNetResult(new OpResult() { Successed = false, Message = "找不到会员手机号" })); } if (customer.Mobile != newEntity.Mobile) { //当修改手机(账户名)时 var r = new PhoneCodeService().CheckMobileCode(newEntity.Mobile, code); if (r == false) { return(new JsonNetResult(new OpResult() { Successed = false, Message = "修改手机号时,验证码错误" })); } } var result = new MemberService().SaveMemberInfo(userId, newEntity, ddlProvince, ddlCity, ddlArea, ttbAddress); CurrentMember.ReSetMemberSession(CurrentMember.MemberId); return(new JsonNetResult(result)); } }
public ActionResult EditProfile(MemberVo input) { Edit(input); if (!this.ModelState.IsValid) { return(View("Edit", input)); } CurrentMember.reload(); return(View("Details", CurrentMember.member)); }
public bool CurrentMemberIsWriteVisible() { Type allowProtectedForType = null; if (AllowProtectedMembersOnRoot && _stack.Depth == 1) { allowProtectedForType = CurrentType.UnderlyingType; } return(CurrentMember.IsWriteVisibleTo(LocalAssembly, allowProtectedForType)); }
public bool SetLogin(Customers member, bool isRememberMe, string urlHost) { CurrentMember.SetMemberSession(member); string userData = string.Format("{0},{1},{2},{3}", member.Id, member.Mobile, member.FullName, member.ChangePasswordTimeStamp); CookieHelper.SaveTicketCookie(Constants.LOGIN_COOKIE_NAME, userData, 0, urlHost); if (isRememberMe) { var cookieValue = string.Format("{0},{1},{2}", member.Id, member.Mobile, member.ChangePasswordTimeStamp); SetLoginCookie(cookieValue, 43200, urlHost); } return(true); }
public void SignIn(object sender, EventArgs e) { Member member = new Member(); if (!IsEmpty(txtUsername.Text)) { member.Username = txtUsername.Text; } if (!InvalidInt(txtPIN.Text)) { member.PIN = Convert.ToInt32(txtPIN.Text); } if (MemberDB.IsMember(member)) { if (MemberDB.LogIn(member)) { Member dbMember = CurrentMember.GetCurrentMember(); if (chkAdmin2.Checked is true && dbMember.IsAdmin is true) { this.Hide(); FrmAdmin addAdminForm = new FrmAdmin(); addAdminForm.ShowDialog(); this.Close(); } else { this.Hide(); FrmLibrary addLibraryForm = new FrmLibrary(); addLibraryForm.ShowDialog(); this.Close(); } } else { MessageBox.Show("PIN incorrect. Try again."); } }
private bool checkBlaskList() { if (CurrentMember.getInstance().GetAccount() == null) { return(false); } if (CurrentMember.getInstance().GetAccount().status == enums.AccountStatus.BLACKLISTED) { MessageBox.Show("Blacklist member can only return book!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(true); } else { return(false); } }
private bool isInLendingBookList(BookItem item) { Account account = CurrentMember.getInstance().GetAccount(); if (account != null) { foreach (var bookItem in account.getLendingBookItems()) { if (item.id == bookItem.id) { return(true); } } } return(false); }
private void removeSeletedItem() { BookToShow temp = SelectedItem; DataLoadFromDB data = DataLoadFromDB.getIntance(); MessageBoxResult dialogResult = MessageBox.Show("Ensure that you want to delete this item from member reserved list! It can't be undo", "Warning", MessageBoxButton.OKCancel, MessageBoxImage.Warning); if (dialogResult == MessageBoxResult.OK) { ConfirmBooks.Remove(temp); BookItem tempBookItem = data.findBookItemByID(int.Parse(temp.Id)); CurrentMember current = CurrentMember.getInstance(); current.GetAccount().removeBookToReserveBookList(tempBookItem, "CANCELED"); } else { return; } }
public ActionResult Login(MemberVo input) { if (this.ModelState.IsValid) { if (CurrentMember.validateUser(input.username, input.password)) { FormsAuthentication.SetAuthCookie(input.username, true); return(RedirectToAction("Index", "Home")); //FormsAuthentication.RedirectFromLoginPage(input.username, true); } else { ViewBag.uname = input.username; this.ModelState.AddModelError("", "Please check Username and Password, and try again."); } } return(View()); }
public ActionResult Login(LoginVm input) { if (this.ModelState.IsValid) { // validate user if (CurrentMember.validateUser(input.email, input.password)) { memberManager.updateLastLoginForMember(input.email, input.password); FormsAuthentication.RedirectFromLoginPage(input.email, input.rememberMe); } else { ViewBag.uname = input.email; this.ModelState.AddModelError("", "Please check Username and Password, and try again."); } } return(View()); }
/// <summary> /// Gets all books checked out by a member. /// </summary> /// <param name="member">Member</param> /// <returns>List<Book></returns> public static List <Book> GetMemberBooks() { Member member = CurrentMember.GetCurrentMember(); List <Book> allBooks = GetAllBooks(); List <Book> memberBooks = new List <Book>(); int memberID = Convert.ToInt32(member.MemberID); foreach (Book book in allBooks) { if (book.CheckedOutBy == memberID) { memberBooks.Add(book); } } return(memberBooks); }
protected override void OnInit(EventArgs e) { Item parentItem = Sitecore.Context.Database.GetItem(Sitecore.Data.ID.Parse(Constants.Pages.ParentsGroups)); string itemHref = Sitecore.Links.LinkManager.GetItemUrl(parentItem); ref_ParentGroup.HRef = itemHref; litBackLink.Text = DictionaryConstants.GroupRecommendedBackLink;//back to parents page litRecommendHeader.Text = DictionaryConstants.RecommendedHeader; litGroupPrivacy.Text = DictionaryConstants.GroupPrivacyStatement; if (CurrentMember != null) { litViewProfileLink1.Text = String.Format(DictionaryConstants.ViewProfileLink1, CurrentMember != null ? CurrentMember.GetMemberPublicProfile() : UnderstoodDotOrg.Common.Helpers.MembershipHelper.SignUpLink() ); } base.OnInit(e); }
public ActionResult ResetPassword(string un, Guid rt) { //TODO: Check the un and rt matching and then perform following //get member of received username MemberVo member = memberManager.getByUsername(un); if (member.passwordResetToken != null && member.passwordResetToken == rt) { //generate random password string newpassword = memberManager.GenerateRandomPassword(6); //reset password member.password = CurrentMember.HashWord(newpassword); member.passwordResetToken = null; memberManager.update(member); //get user emailid to send password string emailid = member.email; //send email string subject = "New Password"; string body = "<b>Please find the New Password</b><br/>" + newpassword; //edit it try { emailSender.send("SilList System Administrator", emailid, subject, body); TempData["Message"] = "Mail Sent."; } catch (Exception ex) { TempData["Message"] = "Error occured while sending email." + ex.Message; } //display message TempData["Message"] = "Success! Check email we sent. Your New Password Is " + newpassword; } else { TempData["Message"] = "Username and token not maching."; } return(View()); }
//by checking-in the selected book we set CheckedOutBy = 0 public static bool CheckInBooks(List <Book> books) { Member member = CurrentMember.GetCurrentMember(); foreach (Book book in books) { Book dbBook = context.Books.Find(book.ISBN); dbBook.CheckedOutBy = 0; } context.SaveChanges(); if (IsChecked(books)) { return(false); } else { return(true); } }
public ActionResult LogOn(string username, string password, bool?auto, string returnUrl, FormCollection form) { //验证码必填项及验证码 if (string.IsNullOrEmpty(username)) { Common.VerifyCodeHelper.ChangeCode(); return(Content(ContentIcon.Error + "|请输入用户名")); } if (string.IsNullOrEmpty(password)) { Common.VerifyCodeHelper.ChangeCode(); return(Content(ContentIcon.Error + "|请输入密码")); } string verifycode = form["verifycode"]; if (string.IsNullOrEmpty(verifycode)) { Common.VerifyCodeHelper.ChangeCode(); return(Content(ContentIcon.Error + "|请输入验证码")); } else { if (Session["verifyCode"] == null) { Common.VerifyCodeHelper.ChangeCode(); return(Content(ContentIcon.Error + "|验证码已过期,请刷新验证码")); } else { if (verifycode.ToLower() != Session["verifyCode"].ToString().ToLower()) { Common.VerifyCodeHelper.ChangeCode(); return(Content(ContentIcon.Error + "|验证码不正确")); } } } //登录验证用户名、密码 string url = string.Empty; string _message = string.Empty; if (auto == null) { auto = false; } bool _true = CurrentMember.LogOn(username, password, (bool)auto, out _message); if (_true) { url = "/admin"; //防跳转钓鱼 if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(url)) { url = returnUrl; } else { url = "/admin"; } Common.VerifyCodeHelper.ChangeCode(); return(Content(ContentIcon.Succeed + "|" + _message + "|" + url)); } else { Common.VerifyCodeHelper.ChangeCode(); return(Content(ContentIcon.Error + "|" + _message)); } }
/// /// This method will override the getrolesforuser method in roleprovider and do the custom implementation /// /// /// public override string[] GetRolesForUser(string username) { var rolesArray = CurrentMember.getRoleNames().ToArray <string>(); return(rolesArray); }
public void DumpProperty() { // should we dump it at all? if (!CurrentMember.CanRead() || CurrentMemberDumpAttribute.Skip == ShouldDump.Skip) { return; } var pi = CurrentMember as PropertyInfo; // can't dump indexers if (pi != null && pi.GetIndexParameters().Length > 0) { return; } if (pi != null && pi.IsVirtual()) { // for virtual properties dump the instance value at the the least derived class level that declares the property for first time. if (CurrentType.BaseType.GetProperty(CurrentMember.Name, _dumper.Settings.PropertyBindingFlags) != null) { return; } pi = InstanceType.GetProperty(CurrentMember.Name, _dumper.Settings.PropertyBindingFlags); } var fi = CurrentMember as FieldInfo; Type type = null; object value = null; try { if (pi != null) { type = pi.PropertyType; value = pi.GetValue(Instance, null); } else { type = fi.FieldType; value = fi.GetValue(Instance); } } catch (Exception x) { // this should not happen but... value = $"<{x.Message}>"; } var dontDumpNulls = CurrentMemberDumpAttribute.DumpNullValues == ShouldDump.Skip || CurrentMemberDumpAttribute.DumpNullValues == ShouldDump.Default && DumpNullValues == ShouldDump.Skip; if (IsInDumpingMode) { // should we dump a null value of the current property if (value == null && dontDumpNulls) { return; } // write the property header _dumper.Writer.WriteLine(); _dumper.Writer.Write( CurrentMemberDumpAttribute.LabelFormat, CurrentMember.Name); if (!(DumpedPropertyCustom(value, type) || // dump the property value using caller's customization (see ValueFormat="ToString", DumpClass, DumpMethod) if any. _dumper.Writer.DumpedBasicValue(value, CurrentMemberDumpAttribute) || _dumper.Writer.DumpedBasicNullable(value, CurrentMemberDumpAttribute) || _dumper.Writer.Dumped(value as Delegate) || _dumper.Writer.Dumped(value as MemberInfo) || DumpedCollection(value, CurrentMember, CurrentMemberDumpAttribute))) { // dump a property representing an associated class or struct object var currentPropertyDumpAttribute = !CurrentMemberDumpAttribute.IsDefaultAttribute() ? CurrentMemberDumpAttribute : null; _dumper.DumpObject(value, null, currentPropertyDumpAttribute, this); } } else { // write the property header DumpScript.BeginDumpProperty(CurrentMember, CurrentMemberDumpAttribute); if (!DumpedPropertyCustom(value, type)) // dump the property value using caller's customization (see ValueFormat="ToString", DumpClass, DumpMethod) if any. { DumpScript.AddDumpPropertyOrCollectionValue(CurrentMember, CurrentMemberDumpAttribute); } DumpScript.EndDumpProperty(CurrentMember, dontDumpNulls); } }
//注销 public ActionResult LogOut() { CurrentMember.LogOut(); return(Redirect("/admin/account/logon")); }
/// <summary> /// Tries to deserialize an object from an XElement. /// </summary> /// <param name="element"></param> /// <param name="t"></param> /// <param name="setter"></param> /// <param name="newobj"></param> /// <param name="logWarnings">Whether warning messages should be emitted in case of missing properties.</param> /// <returns>True on success.</returns> public virtual bool TryDeserializeObject(XElement element, ITypeData t, Action <object> setter, object newobj = null, bool logWarnings = true) { if (element.IsEmpty && !element.HasAttributes) { setter(null); return(true); } if (newobj == null) { try { newobj = t.CreateInstance(Array.Empty <object>()); t = TypeData.GetTypeData(newobj); } catch (TargetInvocationException ex) { if (ex.InnerException is System.ComponentModel.LicenseException) { throw new Exception(string.Format("Could not create an instance of '{0}': {1}", t.GetAttribute <DisplayAttribute>().Name, ex.InnerException.Message)); } else { ExceptionDispatchInfo.Capture(ex.InnerException).Throw(); } } } var prevobj = Object; Object = newobj; var t2 = t; if (newobj == null) { throw new ArgumentNullException(nameof(newobj)); } var properties = t2.GetMembers() .Where(x => x.HasAttribute <XmlIgnoreAttribute>() == false) .ToArray(); try { foreach (var prop in properties) { var attr = prop.GetAttribute <XmlAttributeAttribute>(); if (attr == null) { continue; } var name = string.IsNullOrWhiteSpace(attr.AttributeName) ? prop.Name : attr.AttributeName; var attr_value = element.Attribute(XmlConvert.EncodeLocalName(name)); var p = prop as MemberData; if (p != null && attr_value != null && p.Member is PropertyInfo csprop) { try { readContentInternal(csprop.PropertyType, false, () => attr_value.Value, element, out object value); p.SetValue(newobj, value); } catch (Exception e) { if (logWarnings) { Log.Warning(element, "Attribute value '{0}' was not read correctly as a {1}", attr_value.Value, p); Log.Debug(e); } } } } if (properties.FirstOrDefault(x => x.HasAttribute <XmlTextAttribute>()) is IMemberData mem2) { object value; if (mem2.TypeDescriptor is TypeData td && readContentInternal(td.Load(), false, () => element.Value, element, out object _value)) { value = _value; } else { value = StringConvertProvider.FromString(element.Value, mem2.TypeDescriptor, null); } mem2.SetValue(newobj, value); } else { var props = properties.ToLookup(x => x.GetAttributes <XmlElementAttribute>().FirstOrDefault()?.ElementName ?? x.Name); var elements = element.Elements().ToArray(); bool[] visited = new bool[elements.Length]; double order = 0; int foundWithCurrentType = 0; while (true) { double nextOrder = 1000; // since the object might be dynamically adding properties as other props are added. // we need to iterate a bit. Example: Test Plan Reference. int found = visited.Count(x => x); for (int i = 0; i < elements.Length; i++) { var element2 = elements[i]; if (visited[i]) { continue; } if (element2.Attribute(IgnoreMemberXName) is XAttribute attr && attr.Value == "true") { visited[i] = true; continue; } IMemberData property = null; var name = XmlConvert.DecodeName(element2.Name.LocalName); var propertyMatches = props[name]; int hits = 0; foreach (var p in propertyMatches) { if (p.Writable || p.HasAttribute <XmlIgnoreAttribute>()) { property = p; hits++; } } if (0 == hits) { try { if (property == null) { property = t2.GetMember(name); } if (property == null) { property = t2.GetMembers().FirstOrDefault(x => x.Name == name); } } catch { } if (property == null || property.Writable == false) { continue; } hits = 1; } if (hits > 1) { Log.Warning(element2, "Multiple properties named '{0}' are available to the serializer in '{1}' this might give issues in serialization.", element2.Name.LocalName, t.GetAttribute <DisplayAttribute>().Name); } if (property.GetAttribute <DeserializeOrderAttribute>() is DeserializeOrderAttribute orderAttr) { if (order < orderAttr.Order) { if (orderAttr.Order < nextOrder) { nextOrder = orderAttr.Order; } continue; } } else { nextOrder = order; } visited[i] = true; var prev = CurrentMember; CurrentMember = property; try { if (CurrentMember.HasAttribute <XmlIgnoreAttribute>()) // This property shouldn't have been in the file in the first place, but in case it is (because of a change or a bug), we shouldn't try to set it. (E.g. SweepLoopRange.SweepStep) { if (!CurrentMember.HasAttribute <BrowsableAttribute>()) // In the special case we assume that this is some compatibility property that still needs to be set if present in the XML. (E.g. TestPlanReference.DynamicDataContents) { continue; } } if (property is MemberData mem && mem.Member is PropertyInfo Property && Property.PropertyType.HasInterface <IList>() && Property.PropertyType.IsGenericType && Property.HasAttribute <XmlElementAttribute>()) { // Special case to mimic old .NET XmlSerializer behavior var list = (IList)Property.GetValue(newobj); Action <object> setValue = x => list.Add(x); Serializer.Deserialize(element2, setValue, Property.PropertyType.GetGenericArguments().First()); } else { Action <object> setValue = x => { var current = property.GetValue(newobj); property.SetValue(newobj, x); if (false == Equals(current, x)) { // for some value-like type, it may be needed // to set the parent object when a property is changed // example: complex test plan parameters. setter(newobj); } }; Serializer.Deserialize(element2, setValue, property.TypeDescriptor); } }
// setting current member private static void SetMember(Member member) { CurrentMember.SetCurrentMember(member); }
public async Task BackgroundAsync(string url) { var userDb = await DbContext.GetOrAddAsync(x => x.UserId == Context.User.Id, () => new UserEntity { UserId = Context.User.Id }); if (userDb.Currency < 1000) { await ReplyErrorAsync(Localization.GamblingCurrencyNotEnough, Configuration.Currency); return; } if (!Uri.TryCreate(url, UriKind.Absolute, out var backgroundUri)) { await ReplyErrorAsync(Localization.UtilityUrlNotValid); Context.Command.ResetCooldowns(); return; } if (backgroundUri.Scheme != Uri.UriSchemeHttps) { await ReplyErrorAsync(Localization.UtilityUrlNotHttps); Context.Command.ResetCooldowns(); return; } await Context.Channel.TriggerTypingAsync(); using var result = await HttpClient.GetAsync(backgroundUri); if (!result.IsSuccessStatusCode) { await ReplyErrorAsync(Localization.UtilityImageOrUrlNotGood); Context.Command.ResetCooldowns(); return; } await using var backgroundStream = await result.Content.ReadAsStreamAsync(); if (!(RiasUtilities.IsPng(backgroundStream) || RiasUtilities.IsJpg(backgroundStream))) { await ReplyErrorAsync(Localization.UtilityUrlNotPngJpg); return; } var serverAttachFilesPerm = Context.Guild !.CurrentMember.GetPermissions().HasPermission(Permissions.AttachFiles); var channelAttachFilesPerm = Context.Guild !.CurrentMember.PermissionsIn(Context.Channel).HasPermission(Permissions.AttachFiles); if (!serverAttachFilesPerm && !channelAttachFilesPerm) { await ReplyErrorAsync(Localization.ProfileBackgroundNoAttachFilesPermission); return; } if (serverAttachFilesPerm && !channelAttachFilesPerm) { await ReplyErrorAsync(Localization.ProfileBackgroundNoAttachFilesChannelPermission); return; } backgroundStream.Position = 0; await using var profilePreview = await Service.GenerateProfileBackgroundAsync(Context.User, backgroundStream); var componentInteractionArgs = await SendConfirmationButtonsAsync(new DiscordMessageBuilder() .WithEmbed(new DiscordEmbedBuilder { Color = RiasUtilities.Yellow, Description = GetText(Localization.ProfileBackgroundPreview), ImageUrl = $"attachment://{Context.User.Id}_profile_preview.png" }) .WithFile($"{Context.User.Id}_profile_preview.png", profilePreview)); if (componentInteractionArgs is null) { return; } userDb.Currency -= 1000; var profileDb = await DbContext.GetOrAddAsync(x => x.UserId == Context.User.Id, () => new ProfileEntity { UserId = Context.User.Id, BackgroundDim = 50 }); profileDb.BackgroundUrl = url; await DbContext.SaveChangesAsync(); await ButtonsActionModifyDescriptionAsync(componentInteractionArgs.Value.Result.Message, Localization.ProfileBackgroundSet); }