Пример #1
0
        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 }));
        }
Пример #3
0
        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() }));
        }
Пример #4
0
        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" }));
        }
Пример #7
0
        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()
            }));
        }
Пример #8
0
        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();
        }
Пример #9
0
        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);
        }