private bool SetReceivedUser(ProjectThread projectthread, int?selectAddingUserType, string selectedUserIds) { switch (selectAddingUserType.Value) { case 1: db.Projects.Attach(this.Project); var users = db.Entry(this.Project).Collection(p => p.ParticipantUsers).Query(); users.Load(); foreach (var user in users) { projectthread.ReceivedUsers.Add(new ParticipantUserThread { ParticipantUser = user.ParticipantUser }); } return(true); case 2: if (selectedUserIds == null) { ModelState.AddModelError("ProjectUsers", "配信先のユーザーが選択されていません。"); } List <string> userIdList = selectedUserIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); if (userIdList.Count() == 0) { ModelState.AddModelError("ProjectUsers", "配信先のユーザーが選択されていません。"); } foreach (var user in userIdList) { int userId; if (!int.TryParse(user, out userId)) { return(false); } ParticipantUser receivedUser = db.Users.OfType <ParticipantUser>().FirstOrDefault(pu => pu.ID == userId); if (receivedUser == null) { return(false); } projectthread.ReceivedUsers.Add(new ParticipantUserThread { ParticipantUser = receivedUser }); } return(true); default: return(false); } }
public ActionResult ProfileImage(int?id, int?width, int?height) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ParticipantUser user = db.Users.OfType <ParticipantUser>().FirstOrDefault(x => x.ID == id); if (user == null || user.ProfileImageDocumentID == null) { return(HttpNotFound()); } var document = db.Documents.FirstOrDefault(x => x.ID == user.ProfileImageDocumentID); if (document == null) { return(HttpNotFound()); } var data = (width.HasValue && height.HasValue) ? (new WebImage(document.BinaryData)).Resize(width.Value, height.Value).GetBytes() : document.BinaryData; return(this.File(data, document.FileExtension, document.Uploaded, document.ID)); }
public IList <Models.PersonalThread> GetPersonalThreads(ParticipantUser currentUser, int userId, int pageNumber, int pageSize, bool includesMessages) { if (userId == currentUser.ID) { return(GetPersonalThreads(userId, pageNumber, pageSize, includesMessages, q => q)); } else { var fg = new FriendGraph(db); return(GetPersonalThreads(userId, pageNumber, pageSize, includesMessages, q => fg.Filter(q, currentUser.ID))); } }
public Models.PersonalThread GetPersonalThread(ParticipantUser currentUser, int userId, int threadId, bool includesMessages) { if (userId == currentUser.ID) { return(GetPersonalThread(userId, threadId, includesMessages, q => q)); } else { var fg = new FriendGraph(db); return(GetPersonalThread(userId, threadId, includesMessages, q => fg.Filter(q, currentUser.ID))); } }
public ActionResult SignUpParticipantUser([Bind(Include = "UserName,RawPassword,DisplayName,OnlineName,Kana,Gender,BirthDay,AcademicRecord,Departments,AcademicYear,EMailAddress,PhoneNumber,Zip,State,City,StreetAddress1,StreetAddress2,ReturningHomeZip,ReturningHomeState,ReturningHomeCity,ReturningHomeStreetAddress1,ReturningHomeStreetAddress2,Academic,Happpiness,CareerAnchors,Mentor,Answer")] ParticipantUser user, string[] answer) { if (ModelState.IsValid) { if (string.IsNullOrEmpty(user.RawPassword)) { ModelState.AddModelError("RawPassword", "パスワードを入力してください。"); return(View(user)); } var registered = db.Users.Any(x => x.UserName == user.UserName); if (registered) { ModelState.AddModelError("UserName", "指定されたユーザー名は使われています。"); return(View(user)); } // 質問回答を配列からカンマ区切りに入れ直し StringBuilder sb = new StringBuilder(string.Empty); int i = 0; for (; i < answer.Length - 1; i++) { // @Html.checkBoxで自動生成されるhidden項目のvalueの既定値が"false"なので、弾く if (answer[i] == "false") { continue; } sb.Append(answer[i]); sb.Append(","); } sb.Append(answer[i]); user.Answer = sb.ToString(); user.UserType = 3; // TODO: 不要であれば削除 user.Password = Models.User.GenerateHashedPassword(user.RawPassword); db.Users.Add(user); db.SaveChanges(); return(RedirectToAction("Login")); } return(View(user)); }
public ActionResult EditUser([Bind(Include = "ID,UserName,RawPassword,DisplayName,OnlineName,Kana,Gender,BirthDay,AcademicRecord,Departments,AcademicYear,EMailAddress,PhoneNumber,Zip,State,City,StreetAddress1,StreetAddress2,ReturningHomeZip,ReturningHomeState,ReturningHomeCity,ReturningHomeStreetAddress1,ReturningHomeStreetAddress2,Academic,Happpiness,CareerAnchors,Mentor,Answer")] ParticipantUser user, string[] answer) { if (!ModelState.IsValid) { return(View(user)); } // パスワード変更の対応のため、 // 受け取ったuserをそのまま使わない。 var currentUser = (ParticipantUser)ctx.CurrentUser; if (currentUser.ID != user.ID) { return(RedirectToAction("Profile")); } db.Users.Attach(currentUser); currentUser.UserName = user.UserName; currentUser.DisplayName = user.DisplayName; currentUser.OnlineName = user.OnlineName; currentUser.Kana = user.Kana; currentUser.Gender = user.Gender; currentUser.BirthDay = user.BirthDay; currentUser.AcademicRecord = user.AcademicRecord; currentUser.Departments = user.Departments; currentUser.AcademicYear = user.AcademicYear; currentUser.EMailAddress = user.EMailAddress; currentUser.PhoneNumber = user.PhoneNumber; currentUser.Zip = user.Zip; currentUser.State = user.State; currentUser.City = user.City; currentUser.StreetAddress1 = user.StreetAddress1; currentUser.StreetAddress2 = user.StreetAddress2; currentUser.ReturningHomeZip = user.ReturningHomeZip; currentUser.ReturningHomeState = user.ReturningHomeState; currentUser.ReturningHomeCity = user.ReturningHomeCity; currentUser.ReturningHomeStreetAddress1 = user.ReturningHomeStreetAddress1; currentUser.ReturningHomeStreetAddress2 = user.ReturningHomeStreetAddress2; currentUser.Academic = user.Academic; currentUser.Happpiness = user.Happpiness; currentUser.CareerAnchors = user.CareerAnchors; currentUser.Mentor = user.Mentor; currentUser.ProfileImageDocumentID = GetProfileImageFromRequest() ?? currentUser.ProfileImageDocumentID; // TODO ファイルアップロード対応 // currentUser.ProfileImageDocumentID = user.ProfileImageDocumentID; // パスワード変更 if (!string.IsNullOrEmpty(user.RawPassword)) { currentUser.Password = Models.User.GenerateHashedPassword(user.RawPassword); } // 質問回答を配列からカンマ区切りに入れ直し StringBuilder sb = new StringBuilder(string.Empty); int i = 0; for (; i < answer.Length - 1; i++) { // @Html.checkBoxで自動生成されるhidden項目のvalueの既定値が"false"なので、弾く if (answer[i] == "false") { continue; } sb.Append(answer[i]); sb.Append(","); } sb.Append(answer[i]); currentUser.Answer = sb.ToString(); db.Entry(currentUser).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Profile")); }
public Models.ProjectThread GetProjectThread(ParticipantUser currentUser, int projectId, int threadId, bool includesMessages) { return(GetProjectThread(projectId, threadId, includesMessages, q => q.Where(p => p.ParticipantUsers.Any(pup => pup.ParticipantUser.ID == currentUser.ID)), q => q.Where(t => t.ReceivedUsers.Any(put => put.ParticipantUser.ID == currentUser.ID)))); }
public Models.GroupThread GetGroupThread(ParticipantUser currentUser, int groupId, int threadId, bool includesMessages) { return(GetGroupThread(groupId, threadId, includesMessages, q => q.Where(g => g.ParticipantUsers.Any(pug => pug.ParticipantUser.ID == currentUser.ID)))); }