예제 #1
0
        public IActionResult JoinWorkspace([FromQuery] int workspaceId, [FromQuery] string key)
        {
            User user = this.GetAuthenticatedUser();

            var workspace = _unitOfWork.Workspaces.GetByID(workspaceId);

            if (workspace == null)
            {
                return(BadRequest("The workspace does not exist"));
            }

            if (_unitOfWork.Workspaces.GetUsersIdInWorkspace(workspaceId).Contains(user.Id))
            {
                return(BadRequest("The user is already in the workspace"));
            }

            if (workspace.WorkspaceKey == key)
            {
                UserWorkspace userWorkspace = new UserWorkspace
                {
                    UserId              = user.Id,
                    WorkspaceId         = workspaceId,
                    UserRoleInWorkspace = UserRoleInWorkspace.Member
                };

                _unitOfWork.UserWorkspaces.Insert(userWorkspace);
                _unitOfWork.Save();

                return(Ok("The user is successfully added to the workspace"));
            }

            return(BadRequest("The key you entered is not valid"));
        }
        public async Task <ActionResult> CreateTeam([FromQuery] int workspaceId, [FromQuery] string userId)
        {
            try
            {
                var userWorkspace = new UserWorkspace
                {
                    ApplicationUserId = userId,
                    WorkspaceId       = workspaceId,
                    DevLead           = false
                };

                _context.UserWorkspace.Add(userWorkspace);
                await _context.SaveChangesAsync();

                var foundUser = await _context.ApplicationUser
                                .FindAsync(userId);

                var applicationUserViewModel = new ApplicationUserViewModel
                {
                    Id        = foundUser.Id,
                    FirstName = foundUser.FirstName,
                    LastName  = foundUser.LastName,
                    Email     = foundUser.Email
                };

                return(Ok(applicationUserViewModel));
            }
            catch
            {
                return(View());
            }
        }
        public async Task <ActionResult> Create(Workspace workspace)
        {
            try
            {
                //Creates new workspace object
                var newWorkspace = new Workspace
                {
                    Name   = workspace.Name,
                    Color1 = workspace.Color1,
                    Color2 = workspace.Color2,
                    Color3 = workspace.Color3
                };

                if (!String.IsNullOrEmpty(workspace.Description))
                {
                    newWorkspace.Description = workspace.Description;
                }

                if (!String.IsNullOrEmpty(workspace.GithubRepo))
                {
                    newWorkspace.GithubRepo = workspace.GithubRepo;
                }

                if (!String.IsNullOrEmpty(workspace.DataRelatDiagram))
                {
                    newWorkspace.DataRelatDiagram = workspace.DataRelatDiagram;
                }

                if (!String.IsNullOrEmpty(workspace.MockupDiagram))
                {
                    newWorkspace.MockupDiagram = workspace.MockupDiagram;
                }

                _context.Workspace.Add(newWorkspace);
                await _context.SaveChangesAsync();

                var user = await GetCurrentUserAsync();

                var userWorkspace = new UserWorkspace
                {
                    WorkspaceId       = newWorkspace.Id,
                    ApplicationUserId = user.Id,
                    DevLead           = true
                };

                _context.UserWorkspace.Add(userWorkspace);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Details", new { id = newWorkspace.Id }));
            }
            catch
            {
                return(View());
            }
        }
        public Result <Workspace> CreateModel(string name, User user)
        {
            if (_dbContext.Workspace.Any(q => q.Name == name))
            {
                return(new Result <Workspace> {
                    Data = new Workspace(), Message = "Bu model zaten bulunmaktadýr! Baþka bir isim belirleyin.", Status = "500"
                });
            }
            else
            {
                var resWorkspace = new Workspace();
                foreach (var usr in _dbContext.User.ToList()) // Tüm kullanýcýlara eklenmesi için deðiþtirildi.
                {
                    var workspace = new Workspace {
                        Name = name
                    };
                    resWorkspace = _dbContext.Workspace.Add(workspace).Entity;
                    _dbContext.SaveChanges();

                    var userWorkspace = new UserWorkspace {
                        UserId = usr.Id, WorkspaceId = resWorkspace.Id
                    };
                    var resUserWWorkspace = _dbContext.UserWorkspace.Add(userWorkspace).Entity;
                    try
                    {
                        _dbContext.SaveChanges();
                    }
                    catch (Exception ex)
                    {
                        Console.Write(ex);
                    }
                }

                return(new Result <Workspace> {
                    Data = resWorkspace, Message = "Model baþarýyla oluþturuldu!", Status = "200"
                });
            }
        }
예제 #5
0
        public void AddUserToWorkspace(int userId, int workspaceId)
        {
            var workspace = _unitOfWork.Workspaces.GetByID(workspaceId);
            var user      = _unitOfWork.Users.GetByID(userId);
            var uw        = new UserWorkspace {
                UserId      = userId,
                WorkspaceId = workspaceId,

                /*
                 * The -1 subtracts 1 hour from the current time,
                 * this makes notifications enabled by default.
                 */
                TimeToWhichNotificationsAreMuted = DateTime.Now.AddHours(-1),
                UserRoleInWorkspace = UserRoleInWorkspace.Member
            };

            user.UserWorkspaces.Add(uw);
            workspace.UserWorkspaces.Add(uw);
            _unitOfWork.UserWorkspaces.Insert(uw);
            _unitOfWork.Users.Update(user);
            _unitOfWork.Workspaces.Update(workspace);
            _unitOfWork.Save();
        }
        public static void Initialize(AppDbContext _dbContext)
        {
            if (_dbContext.User.Any() && _dbContext.Workspace.Any() && _dbContext.UserWorkspace.Any())
            {
                _dbContext.Database.Migrate();
            }
            else
            {
                var isDeleted = _dbContext.Database.EnsureDeleted();
                var isCreated = _dbContext.Database.EnsureCreated();

                var user = new User
                {
                    FirstName = "test",
                    LastName  = "test",
                    Password  = "******",
                    Username  = "******"
                };

                user = _dbContext.User.Add(user).Entity;

                var workspace = new Workspace {
                    Name = "1"
                };
                workspace = _dbContext.Workspace.Add(workspace).Entity;

                var userWorkspace = new UserWorkspace
                {
                    User      = user,
                    Workspace = workspace
                };

                _dbContext.UserWorkspace.Add(userWorkspace);
                _dbContext.SaveChanges();
            }
        }
        // GET: Workspaces/Details/5
        public async Task <ActionResult> Details(int id, string searchString, [FromRoute] string userId)
        {
            try
            {
                //Find the workspace matching the id passed in
                var workspace = await _context.Workspace
                                .FirstOrDefaultAsync(w => w.Id == id);

                //Build a WorkspaceViewModel
                var workspaceViewModel = new WorkspaceViewModel()
                {
                    Id     = id,
                    Name   = workspace.Name,
                    Color1 = workspace.Color1,
                    Color2 = workspace.Color2,
                    Color3 = workspace.Color3
                };

                if (!String.IsNullOrEmpty(workspace.Description))
                {
                    workspaceViewModel.Description = workspace.Description;
                }

                if (!String.IsNullOrEmpty(workspace.GithubRepo))
                {
                    workspaceViewModel.GithubRepo = workspace.GithubRepo;
                }

                if (!String.IsNullOrEmpty(workspace.DataRelatDiagram))
                {
                    workspaceViewModel.DataRelatDiagram = workspace.DataRelatDiagram;
                }

                if (!String.IsNullOrEmpty(workspace.MockupDiagram))
                {
                    workspaceViewModel.MockupDiagram = workspace.MockupDiagram;
                }

                //Get a list of UserWorkspaces that are a part of the workspace and add to the view model
                workspaceViewModel.UserWorkspaces = await _context.UserWorkspace
                                                    .Where(uw => uw.WorkspaceId == id)
                                                    .Include(uw => uw.ApplicationUser)
                                                    .ToListAsync();

                if (!String.IsNullOrEmpty(userId))
                {
                    var userWorkspace = new UserWorkspace
                    {
                        ApplicationUserId = userId,
                        WorkspaceId       = id,
                        DevLead           = false
                    };

                    workspaceViewModel.UserWorkspaces.Add(userWorkspace);
                }

                var user = await GetCurrentUserAsync();

                var allUsers = await _context.ApplicationUser.ToListAsync();

                var teamMemberIds = workspaceViewModel.UserWorkspaces.Select(uw => uw.ApplicationUserId).ToArray();

                //Store search results in SearchResults list of app users
                if (!String.IsNullOrEmpty(searchString))
                {
                    workspaceViewModel.SearchResults = allUsers
                                                       .Where(au => au.Id != user.Id)
                                                       .Where(au => !teamMemberIds.Contains(au.Id))
                                                       .Where(au => au.Email.Contains(searchString)).ToList();
                }
                else
                {
                    workspaceViewModel.SearchResults = new List <ApplicationUser>();
                }

                //Get a list of all the posts made in the workspace
                //Build a list of PostViewModels and add to the view model
                workspaceViewModel.Posts = await _context.Post
                                           .Where(p => p.WorkspaceId == id)
                                           .Include(p => p.ApplicationUser)
                                           .Select(p => new PostViewModel()
                {
                    Id                = p.Id,
                    Text              = p.Text,
                    ImageFile         = p.ImageFile,
                    Link              = p.Link,
                    ApplicationUserId = p.ApplicationUserId,
                    ApplicationUser   = p.ApplicationUser,
                    Timestamp         = p.Timestamp,
                    Pinned            = p.Pinned,
                    Comments          = _context.Comment.Where(c => c.PostId == p.Id).Include(c => c.ApplicationUser).OrderBy(c => c.Timestamp).ToList(),
                    Likes             = _context.Like.Where(l => l.PostId == p.Id).ToList()
                }).ToListAsync();

                return(View(workspaceViewModel));
            }
            catch (Exception ex)
            {
                return(View());
            }
        }