private void AlreadyInProject_DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) { if (SelectedGroup_ComboBox.SelectedItem != null) { UserInProject userInProject = (UserInProject)AlreadyInProject_DataGrid.SelectedItem; usersInProject.Remove(userInProject); context.UserInProjects.Remove(userInProject); var user = context.Users.Where(u => u.Id == userInProject.UserId).First(); if (users == null) { users.Insert(0, user); } else { users.Add(user); } SelectedGroup_ComboBox_SelectionChanged(null, null); UpdateAlreadyInProject_DataGrid(); } else { MessageBox.Show("Choose any group at first", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
public HttpResponseMessage UserAdminProfile(UserInProject postData, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string authKey) { HttpResponseMessage responseMessage; if (!ValidateCredentials.AuthKeyIsValid(db, authKey)) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid information."); return(responseMessage); } var queriedOrganization = GenericQueries.CheckOrganizationName(postData.OrganizationName, mongoDb); if (queriedOrganization == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid organization name."); return(responseMessage); } MongoCollection <UsersOrganizations> usersAndOrganizations = mongoDb.GetCollection <UsersOrganizations>(MongoCollections.UsersInOrganizations); UsersOrganizations userAssigning; GenericQueries.CheckUser(authKey, queriedOrganization, usersAndOrganizations, out userAssigning, UserRoles.OrganizationManager, db); if (userAssigning == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Insufficient permissions."); return(responseMessage); } MongoCollection <Project> projectsCollection = mongoDb.GetCollection <Project>(MongoCollections.Projects); var allProjects = (from pr in projectsCollection.AsQueryable <Project>() where pr.OrganizationName == postData.OrganizationName select new ProjectForUser() { Name = pr.Name, } ).ToDictionary <ProjectForUser, string>(x => x.Name); MongoCollection <UsersProjects> usersProjects = mongoDb.GetCollection <UsersProjects>(MongoCollections.UsersInProjects); var projectsInvolved = (from up in usersProjects.AsQueryable <UsersProjects>() where up.Username == postData.Username select up ); foreach (var proj in projectsInvolved) { if (allProjects.ContainsKey(proj.ProjectName)) { var participating = allProjects[proj.ProjectName]; participating.UserParticipatesIn = true; participating.Role = proj.Role; } } UsersOrganizations usersProfile = usersAndOrganizations.AsQueryable <UsersOrganizations>() .FirstOrDefault(x => x.Username == postData.Username && x.OrganizationName == postData.OrganizationName); return(responseMessage = this.Request.CreateResponse(HttpStatusCode.OK, new { Projects = allProjects.Values, Role = usersProfile.Role })); }
public HttpResponseMessage RecentEvents(UserInProject postData, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string authKey) { HttpResponseMessage responseMessage; if (!ValidateCredentials.AuthKeyIsValid(db, authKey)) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid information."); return(responseMessage); } var queriedOrganization = GenericQueries.CheckOrganizationName(postData.OrganizationName, mongoDb); if (queriedOrganization == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid name."); return(responseMessage); } MongoCollection <UsersOrganizations> usersAndOrganizations = mongoDb.GetCollection <UsersOrganizations>(MongoCollections.UsersInOrganizations); UsersOrganizations foundUser; GenericQueries.CheckUser(authKey, queriedOrganization, usersAndOrganizations, out foundUser, UserRoles.OrganizationManager, db); if (foundUser == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Insufficient permissions."); return(responseMessage); } string recentEvents = HistoryController.GetEventsForOrganization(postData.OrganizationName); return(responseMessage = this.Request.CreateResponse(HttpStatusCode.OK, new { Events = recentEvents.ToString() })); }
public HttpResponseMessage AllTasksForProject(UserInProject user, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string authKey) { HttpResponseMessage responseMessage; User sqlUser; if (!ValidateCredentials.AuthKeyIsValid(db, authKey, out sqlUser)) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid information."); return(responseMessage); } var usersProjects = mongoDb.GetCollection <UsersProjects>(MongoCollections.UsersInProjects); UsersProjects userInProject = usersProjects.FindOneAs <UsersProjects>(Query.And( Query.EQ("ProjectName", user.ProjectName), Query.EQ("Username", sqlUser.Username), Query.EQ("OrganizationName", user.OrganizationName))); if (userInProject == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No such organization, project, or user does not participate in them."); return(responseMessage); } var tasksCollection = mongoDb.GetCollection <ProjectTask>(MongoCollections.Tasks); var openTasks = tasksCollection.AsQueryable <ProjectTask>().Where(x => x.ProjectName == user.ProjectName && x.Completed == false); var completedTasks = tasksCollection.AsQueryable <ProjectTask>().Where(x => x.ProjectName == user.ProjectName && x.Completed == true); return(responseMessage = this.Request.CreateResponse(HttpStatusCode.OK, new { Open = openTasks, Completed = completedTasks })); }
public HttpResponseMessage AllUsersInOrganization(UserInProject postData, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string authKey) { HttpResponseMessage responseMessage; if (!ValidateCredentials.AuthKeyIsValid(db, authKey)) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid information."); return(responseMessage); } var queriedOrganization = GenericQueries.CheckOrganizationName(postData.OrganizationName, mongoDb); if (queriedOrganization == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid organization name."); return(responseMessage); } MongoCollection <UsersOrganizations> usersAndOrganizations = mongoDb.GetCollection <UsersOrganizations>(MongoCollections.UsersInOrganizations); UsersOrganizations queryingUser; GenericQueries.CheckUser(authKey, queriedOrganization, usersAndOrganizations, out queryingUser, UserRoles.OrganizationManager, db); if (queryingUser == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Insufficient permissions."); return(responseMessage); } var usersInOrganization = (from us in usersAndOrganizations.AsQueryable <UsersOrganizations>() where us.OrganizationId == queriedOrganization.Id select new UsersInOrganizationVM() { Role = us.Role, Username = us.Username }).ToList(); Dictionary <string, List <UsersInOrganizationVM> > grouped = new Dictionary <string, List <UsersInOrganizationVM> >(); foreach (var item in usersInOrganization) { string stringRole = ConvertRoleToString(item.Role); if (grouped.ContainsKey(stringRole)) { grouped[stringRole].Add(item); } else { grouped.Add(stringRole, new List <UsersInOrganizationVM>()); grouped[stringRole].Add(item); } } return(responseMessage = this.Request.CreateResponse(HttpStatusCode.OK, new { Keys = grouped.Keys, Users = grouped })); }
public HttpResponseMessage RemoveFromProject(UserInProject postData, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string authKey) { HttpResponseMessage responseMessage; User sqlUser; if (!ValidateCredentials.AuthKeyIsValid(db, authKey, out sqlUser)) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid information."); return(responseMessage); } var queriedOrganization = GenericQueries.CheckOrganizationName(postData.OrganizationName, mongoDb); if (queriedOrganization == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid organization name."); return(responseMessage); } MongoCollection <UsersOrganizations> usersAndOrganizations = mongoDb.GetCollection <UsersOrganizations>(MongoCollections.UsersInOrganizations); UsersOrganizations userAssigning; GenericQueries.CheckUser(authKey, queriedOrganization, usersAndOrganizations, out userAssigning, UserRoles.OrganizationManager, db); if (userAssigning == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Insufficient permissions."); return(responseMessage); } UsersOrganizations userRemoved = usersAndOrganizations.FindOneAs <UsersOrganizations>(Query.EQ("Username", postData.Username)); if (userRemoved == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No such user in organization."); return(responseMessage); } //todo check if assigned user isnt already in project MongoCollection <Project> projectsCollection = mongoDb.GetCollection <Project>(MongoCollections.Projects); Project project; project = projectsCollection.FindOneAs <Project>(Query.EQ("Name", postData.ProjectName)); if (project == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid project."); return(responseMessage); } MongoCollection <UsersProjects> usersProjects = mongoDb.GetCollection <UsersProjects>(MongoCollections.UsersInProjects); usersProjects.Remove(Query.EQ("Username", userRemoved.Username), RemoveFlags.Single); HistoryController.RecordHistoryEntry(userAssigning.OrganizationName, userAssigning.Username, string.Format("removed {0} from {1}", userRemoved.Username, project.Name)); return(responseMessage = this.Request.CreateResponse(HttpStatusCode.OK, new { Removed = "Success" })); }
public HttpResponseMessage FullInfo(UserInProject postData, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string authKey) { HttpResponseMessage responseMessage; if (!ValidateCredentials.AuthKeyIsValid(db, authKey)) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid information."); return(responseMessage); } var queriedOrganization = GenericQueries.CheckOrganizationName(postData.OrganizationName, mongoDb); if (queriedOrganization == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid name."); return(responseMessage); } MongoCollection <UsersOrganizations> usersAndOrganizations = mongoDb.GetCollection <UsersOrganizations>(MongoCollections.UsersInOrganizations); UsersOrganizations foundUser; GenericQueries.CheckUser(authKey, queriedOrganization, usersAndOrganizations, out foundUser, UserRoles.OrganizationManager, db); if (foundUser == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Insufficient permissions."); return(responseMessage); } var projectsCollection = mongoDb.GetCollection(MongoCollections.Projects); int projectsInOrganization = projectsCollection.AsQueryable <Project>() .Count(x => x.OrganizationName == queriedOrganization.Name); int employeesCount = usersAndOrganizations.AsQueryable <UsersOrganizations>() .Count(x => x.OrganizationId == queriedOrganization.Id); return(responseMessage = this.Request.CreateResponse(HttpStatusCode.OK, new { Employees = employeesCount.ToString(), Projects = projectsInOrganization.ToString() })); }
private void SelectedGroup_DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) { User user = (User)SelectedGroup_DataGrid.SelectedItem; users.Remove(user); UserInProject userInProject = new UserInProject() { UserId = user.Id, User = user, ProjectId = this.ProjectId }; usersInProject.Add(userInProject); context.UserInProjects.Add(userInProject); SelectedGroup_ComboBox_SelectionChanged(null, null); UpdateAlreadyInProject_DataGrid(); }
public UserInProject AssignUserToProject(string userEmail, int projectId) { // var user = unitOfWork.UserRepository.GetByID(userId); var user = unitOfWork.UserRepository.Get(x => x.Email == userEmail).SingleOrDefault(); if (user == null) { return(null); //tu jakis exception czy cos } var project = unitOfWork.ProjectRepository.GetByID(projectId); var projectUser = new ProjectUser(); projectUser.User = user; projectUser.Project = project; unitOfWork.ProjectUserRepository.Insert(projectUser); unitOfWork.Save(); var assignedUser = new UserInProject(); assignedUser.Id = projectUser.UserId; assignedUser.FirstName = user.Name; assignedUser.LastName = user.Surname; return(assignedUser); }