Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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));
        }
Exemple #3
0
 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)));
     }
 }
Exemple #4
0
 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)));
     }
 }
Exemple #5
0
        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));
        }
Exemple #6
0
        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"));
        }
Exemple #7
0
 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))));
 }
Exemple #8
0
 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))));
 }