Ejemplo n.º 1
0
        public JsonResult ProjectResult(Project project, string name)
        {
            var develops = _meshContext.Develops
                           .Where(d => d.ProjectId == project.Id)
                           .Join(_meshContext.Users, d => d.UserId, u => u.Id, (d, u) => new MemInfo()
            {
                UserId   = u.Id,
                Username = u.Email,
                Nickname = u.Nickname,
                Avatar   = AvatarSaveHelper.GetObject(u.Avatar)
            })
                           .ToList();

            return(Json(new
            {
                err_code = 0,
                data = new
                {
                    isSuccess = true,
                    msg = "",
                    project = new
                    {
                        projectId = project.Id,
                        projectName = project.Name,
                        adminName = name,
                        isPublic = project.Publicity,
                        projectLogo = AvatarSaveHelper.GetObject(project.Icon),
                        members = develops
                    }
                }
            }));
        }
Ejemplo n.º 2
0
        public JsonResult UserReturnValue(User user)
        {
            //Find teams of the user
            var cooperation = _meshContext.Cooperations
                              .Where(b => b.UserId == user.Id);
            var teams = _meshContext.Teams
                        .Join(cooperation, t => t.Id, c => c.TeamId, (t, c) =>
                              new TeamInfo
            {
                TeamId     = t.Id,
                TeamName   = t.Name,
                AdminId    = t.AdminId,
                CreateTIme = t.CreatedTime.ToString(),
                AdminName  = _meshContext.Users.First(u => u.Id == t.AdminId).Nickname
            }).ToList();

            var preferenceTeamId = -1;

            if (cooperation.FirstOrDefault() != null)
            {
                var preferenceTeamCount = cooperation.DefaultIfEmpty().Max(a => a.AccessCount);
                preferenceTeamId = cooperation.First(c => c.AccessCount == preferenceTeamCount).TeamId;
            }

            return(Json(new
            {
                err_code = 0,
                data = new
                {
                    isSuccess = true,
                    msg = "",
                    username = user.Email,
                    nickname = user.Nickname,
                    gender = user.Gender,
                    status = user.Status,
                    description = user.Description,
                    birthday = user.Birthday.ToLongDateString(),
                    avatar = AvatarSaveHelper.GetObject(user.Avatar),
                    role = "user",
                    preference = new
                    {
                        preferenceColor = user.ColorPreference,
                        preferenceLayout = user.LayoutPreference,
                        preferenceShowMode = user.RevealedPreference,
                        preferenceTeam = preferenceTeamId
                    },

                    teams = teams
                }
            }));
        }
Ejemplo n.º 3
0
        public JsonResult QueryUser(string username, string keyword)
        {
            if (!CornerCaseCheckHelper.Check(username, 50, CornerCaseCheckHelper.Username))
            {
                return(JsonReturnHelper.ErrorReturn(104, "Invalid username."));
            }

            if (!CornerCaseCheckHelper.Check(keyword, 50, CornerCaseCheckHelper.Username))
            {
                return(JsonReturnHelper.ErrorReturn(457, "Invalid keyword."));
            }

            if (HttpContext.Session.IsAvailable && HttpContext.Session.GetString(username) == null)
            {
                return(JsonReturnHelper.ErrorReturn(2, "User status error."));
            }

            var userAccordingToUsername = _meshContext.Users
                                          .Where(u => u.Email.Contains(keyword));
            var userAccordingToNickname = _meshContext.Users
                                          .Where(u => u.Nickname.Contains(keyword));
            var userAccordingToDescription = _meshContext.Users
                                             .Where(u => u.Description.Contains(keyword));

            var users = userAccordingToUsername
                        .Union(userAccordingToNickname)
                        .Union(userAccordingToDescription)
                        .Select(u => new
            {
                username    = u.Email,
                avatar      = AvatarSaveHelper.GetObject(u.Avatar),
                nickname    = u.Nickname,
                gender      = u.Gender,
                status      = u.Status,
                address     = u.Address,
                description = u.Description,
                birthday    = u.Birthday
            })
                        .ToList();


            return(Json(new
            {
                err_code = 0,
                data = new
                {
                    users = users
                }
            }));
        }
Ejemplo n.º 4
0
        public JsonResult QueryTeam(string username, int teamId)
        {
            var checkResult = CheckUsername(username);

            if (checkResult != null)
            {
                return(checkResult);
            }

            if (!CornerCaseCheckHelper.Check(teamId, 0, CornerCaseCheckHelper.Id))
            {
                return(JsonReturnHelper.ErrorReturn(301, "Invalid teamId"));
            }

            var user = _meshContext.Users.First(u => u.Email == username);
            var team = _meshContext.Teams.FirstOrDefault(t => t.Id == teamId);

            if (team == null)
            {
                return(JsonReturnHelper.ErrorReturn(302, "Team does not exist."));
            }

            if (_permissionCheck.CheckTeamPermission(username, team) == PermissionCheckHelper.TeamOutsider)
            {
                return(JsonReturnHelper.ErrorReturn(305, "Permission denied."));
            }

            //Find team members
            var teamCooperation = _meshContext.Cooperations
                                  .Where(c => c.TeamId == team.Id);
            var adminName = _meshContext.Users.First(u => u.Id == team.AdminId).Nickname;
            var members   = _meshContext.Users
                            .Join(teamCooperation, u => u.Id, c => c.UserId, (u, c) =>
                                  new Member()
            {
                Id       = u.Id,
                Username = u.Email,
                Nickname = u.Nickname,
                Avatar   = AvatarSaveHelper.GetObject(u.Avatar)
            }).ToList();

            //Find projects of the team
            var project = _meshContext.Projects
                          .Where(p => p.TeamId == teamId);
            var teamProjects = _meshContext.Users
                               .Join(project, u => u.Id, p => p.AdminId, (u, p) =>
                                     new TeamProject()
            {
                ProjectId   = p.Id,
                ProjectName = p.Name,
                AdminName   = u.Nickname,
                ProjectLogo = AvatarSaveHelper.GetObject(p.Icon)
            }).ToList();

            var userTeamCooperation = teamCooperation.First(c => c.UserId == user.Id);

            try
            {
                userTeamCooperation.AccessCount += 1;
                _meshContext.Cooperations.Update(userTeamCooperation);
                _meshContext.SaveChanges();
            }
            catch (Exception e)
            {
                _logger.LogError(e.ToString());
                return(JsonReturnHelper.ErrorReturn(1, "Unexpected error."));
            }

            return(Json(new
            {
                err_code = 0,
                data = new
                {
                    isSuccess = true,
                    msg = "",
                    team = new
                    {
                        teamId = team.Id,
                        teamName = team.Name,
                        createTime = team.CreatedTime,
                        adminName = adminName,
                        members = members,
                        teamProjects = teamProjects
                    }
                }
            }));
        }
        public JsonResult QueryUserInfo(string username, string keyword)
        {
            var checkResult = CheckUsername(username);

            if (checkResult != null)
            {
                return(checkResult);
            }

            if (!CornerCaseCheckHelper.Check(keyword, 50, CornerCaseCheckHelper.Username))
            {
                return(JsonReturnHelper.ErrorReturn(130, "Invalid keyword."));
            }

            var usersAccordingToUsername = _meshContext.Users
                                           .Where(u => u.Email.Contains(keyword));
            var usersAccordingToNickname = _meshContext.Users
                                           .Where(u => u.Nickname.Contains(keyword));
            var usersAccordingToDescription = _meshContext.Users
                                              .Where(u => u.Description.Contains(keyword));
            var usersUnion = usersAccordingToUsername
                             .Union(usersAccordingToNickname)
                             .Union(usersAccordingToDescription)
                             .ToList();

            var users = new List <UserInfo>();

            foreach (var u in usersUnion)
            {
                var cooperation = _meshContext.Cooperations
                                  .Where(c => c.UserId == u.Id)
                                  .OrderByDescending(c => c.AccessCount)
                                  .FirstOrDefault();
                var teams = _meshContext.Cooperations
                            .Where(c => c.UserId == u.Id)
                            .Join(_meshContext.Teams, c => c.TeamId, t => t.Id, (c, t) => new TeamInfo()
                {
                    TeamId     = t.Id,
                    TeamName   = t.Name,
                    AdminId    = t.AdminId,
                    AdminName  = _meshContext.Users.First(s => s.Id == t.AdminId).Nickname,
                    CreateTIme = t.CreatedTime.ToString()
                })
                            .ToList();
                users.Add(new UserInfo()
                {
                    username    = u.Email,
                    address     = u.Address,
                    avatar      = AvatarSaveHelper.GetObject(u.Avatar),
                    birthday    = u.Birthday.ToString(),
                    description = u.Description,
                    preference  = new UserPreference()
                    {
                        preferenceColor    = u.ColorPreference,
                        preferenceLayout   = u.LayoutPreference,
                        preferenceShowMode = u.RevealedPreference,
                        preferenceTeam     = cooperation?.TeamId ?? -1
                    },
                    teams = teams
                });
            }

            return(Json(new
            {
                err_code = 0,
                data = new
                {
                    isSuccess = true,
                    msg = "",
                    users = users
                }
            }));
        }
Ejemplo n.º 6
0
        public JsonResult CreateProject(ProjectRequest request)
        {
            var checkResult = CheckUsername(request.Username);

            if (checkResult != null)
            {
                return(checkResult);
            }

            if (!CornerCaseCheckHelper.Check(request.TeamId, 0, CornerCaseCheckHelper.Id))
            {
                return(JsonReturnHelper.ErrorReturn(301, "Invalid teamId."));
            }

            if (!CornerCaseCheckHelper.Check(request.ProjectName, 50, CornerCaseCheckHelper.Title))
            {
                return(JsonReturnHelper.ErrorReturn(710, "Invalid projectName."));
            }

            if (!CornerCaseCheckHelper.Check(request.AdminName, 50, CornerCaseCheckHelper.Username))
            {
                return(JsonReturnHelper.ErrorReturn(711, "Invalid adminName"));
            }


            var user = _meshContext.Users.First(u => u.Email == request.Username);

            //Check if admin exists
            var admin = _meshContext.Users.FirstOrDefault(a => a.Email == request.AdminName);

            if (admin == null)
            {
                return(JsonReturnHelper.ErrorReturn(704, "Admin does not exist."));
            }

            //Check if team exists
            var team = _meshContext.Teams.FirstOrDefault(t => t.Id == request.TeamId);

            if (team == null)
            {
                return(JsonReturnHelper.ErrorReturn(302, "Team does not exist."));
            }

            //Check if admin is in the team
            var teamCheckResult = _permissionCheck.CheckTeamPermission(request.AdminName, team);

            if (teamCheckResult == PermissionCheckHelper.TeamOutsider)
            {
                return(JsonReturnHelper.ErrorReturn(702, "Invalid admin."));
            }

            //Check if user is the admin of the team
            teamCheckResult = _permissionCheck.CheckTeamPermission(request.Username, team);
            if (teamCheckResult != PermissionCheckHelper.TeamAdmin)
            {
                return(JsonReturnHelper.ErrorReturn(701, "Permission denied."));
            }

            var newProject = new Project()
            {
                Name      = request.ProjectName,
                AdminId   = admin.Id,
                TeamId    = team.Id,
                Publicity = request.IsPublic,
                Icon      = AvatarSaveHelper.PutObject("")
            };

            var members = new List <MemInfo> {
                new MemInfo()
                {
                    UserId = admin.Id, Username = admin.Email, Nickname = admin.Nickname, Avatar = AvatarSaveHelper.GetObject(admin.Avatar)
                }
            };

            //Start a transaction to save the project
            using (var transaction = _meshContext.Database.BeginTransaction())
            {
                try
                {
                    _meshContext.Projects.Add(newProject);
                    _meshContext.SaveChanges();
                    _meshContext.Develops.Add(new Develop()
                    {
                        ProjectId = newProject.Id,
                        UserId    = admin.Id
                    });
                    _meshContext.BulletinBoards.Add(new BulletinBoard()
                    {
                        ProjectId = newProject.Id
                    });
                    _meshContext.TaskBoards.Add(new TaskBoard()
                    {
                        ProjectId = newProject.Id
                    });
                    _meshContext.ProjectMemoCollections.Add(new ProjectMemoCollection()
                    {
                        ProjectId = newProject.Id
                    });
                    _meshContext.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception e)
                {
                    _logger.LogError(e.ToString());
                    return(JsonReturnHelper.ErrorReturn(1, "Unexpected error."));
                }
            }

            return(ProjectResult(newProject, admin.Nickname));
        }