public string Create(PostCreateDto model) { try { Posts po = new Posts { PostId = Guid.NewGuid(), ForumId = new Guid(model.ForumId), UserId = new Guid(model.UserId), Title = model.Title, Description = model.Description, CreatedDate = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.Local), Img = null, LikeNumber = 0, DisLikeNumber = 0, State = true }; // 每PO一篇文 +50 points ForumMembers user = _members.GetAll2().FirstOrDefault(x => x.UserId.ToString() == model.UserId); user.Points = user.Points + 50; _posts.Create(po); _posts.SaveContext(); _members.Update(user); _members.SaveContext(); return("Po文成功,積分增加50點"); } catch (Exception ex) { return(ex.Message); } }
/// <summary> /// 購買稱號系統 /// </summary> /// <param name="buy"></param> /// <returns></returns> public string BuyTitle(BuyTitle buy) { ForumMembers user = _users.GetAll2().FirstOrDefault(u => u.UserId.ToString() == buy.UserId); TitleDto price = _titles.GetAll2().Select(x => new TitleDto() { TitleId = x.TitleId, TitleName = x.TitleName, Price = decimal.Parse(x.Price.ToString()) }).FirstOrDefault(t => t.TitleName == buy.TitleId); if (user.Points > price.Price) { user.Points = user.Points - price.Price; _users.Update(user); _users.SaveContext(); MemberTitle newtitle = new MemberTitle { UserId = Guid.Parse(buy.UserId), HasTitleId = price.TitleId }; _usertitle.Create(newtitle); _usertitle.SaveContext(); return("稱號購買完成"); } return("點數不足,請加把勁"); }
/// <summary> /// Get single member info /// </summary> /// <param name="userEmail"></param> /// <returns></returns> public ReadMemberDTO GetSingleMember(string userEmail) { ForumMembers source = _members.GetAll().First(x => x.Email == userEmail); ReadMemberDTO result = new ReadMemberDTO { UserId = source.UserId.ToString(), Name = source.Name, Email = source.Email, Age = (int)source.Age, Phone = source.Phone, Gender = source.Gender, Points = (decimal)source.Points, ImgLink = source.ImgLink, Password = source.Password, TitleName = _titles.GetFirst(x => x.TitleId == source.TitleId).TitleName, RoleName = _roles.GetFirst(x => x.RoleId == source.RoleId).RoleName }; return(result); }
/// <summary> /// Register /// </summary> /// <param name="dto"></param> public void Create(CreateMemberDto dto) { try { ForumMembers user = new ForumMembers() { UserId = Guid.NewGuid(), Password = _encrypt.ToMD5(dto.Password), Email = dto.Email, Name = dto.Name, Gender = dto.Gender, Age = dto.Age, Phone = dto.Phone, //Default Picture ImgLink = "https://i.imgur.com/gZQyxZj.png", //Set default role to "normal" RoleId = _roles.GetFirst(x => x.RoleName == "一般使用者").RoleId, //Set default points to 1K Points = 1000, //Set default title to "Novice" TitleId = _titles.GetFirst(x => x.TitleName == "初心者").TitleId, //RefreshToken(Use it when jwt token expired) RefreshToken = Guid.NewGuid() }; _members.Create(user); _members.SaveContext(); //Add title "Novice" to MemberTitle when register MemberTitle usertitle = new MemberTitle() { UserId = user.UserId, HasTitleId = user.TitleId }; _memberTitle.Create(usertitle); _memberTitle.SaveContext(); } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
/// <summary> /// Edit user info /// </summary> /// <param name="dto"></param> /// <param name="userEmail"></param> public void Edit(EditMemberDTO dto, string userEmail) { try { ForumMembers editedContext = _members.GetFirst(x => x.Email == userEmail); editedContext.Name = dto.Name; editedContext.Password = _encrypt.ToMD5(dto.Password); editedContext.Age = dto.Age; editedContext.Phone = dto.Phone; editedContext.Gender = dto.Gender; editedContext.ImgLink = dto.ImgLink; //Edit TitleId base on input TitleName editedContext.TitleId = _titles.GetFirst(x => x.TitleName == dto.TitleName).TitleId; _members.Update(editedContext); _members.SaveContext(); } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
/// <summary> /// Edit user password to new password if forget /// </summary> /// <param name="dto"></param> /// <returns></returns> public ApiResult <EditPasswordDto> EditPasswordIfForgot(EditPasswordDto dto) { if (!_members.GetAll().Any(x => x.Email == dto.Email)) { return(new ApiResult <EditPasswordDto>($"{dto.Email} not exists!")); } else { try { ForumMembers member = _members.GetFirst(x => x.Email == dto.Email); member.Password = _encrypt.ToMD5(dto.Password); _members.Update(member); _members.SaveContext(); return(new ApiResult <EditPasswordDto>()); } catch (Exception ex) { return(new ApiResult <EditPasswordDto>($"{ex}")); } } }