public ActionResult All()
        {
            bool isUserAdmin          = UserRoleRepository.IsUserInRole(User.Identity.GetUserId(), nameof(UserRolesEnum.Admin));
            bool isUserProjectManager = UserRoleRepository.IsUserInRole(User.Identity.GetUserId(), nameof(UserRolesEnum.ProjectManager));

            // shouldn't happen ever
            if (!isUserAdmin && !isUserProjectManager)
            {
                ModelState.AddModelError("", "Error - You don't have permission to view this page");
                return(RedirectToAction(nameof(Index)));
            }

            IQueryable <Project>         allProjects = ProjectRepository.GetAllProjects();
            List <ProjectIndexViewModel> viewModels;

            if (allProjects.Any())
            {
                viewModels = allProjects.ToList().Select(project => ProjectIndexViewModel.CreateNewViewModel(project)).ToList();
            }
            else
            {
                viewModels = new List <ProjectIndexViewModel>();
            }

            return(View(viewModels));
        }
示例#2
0
 public ActionResult EditProject(ProjectIndexViewModel model)
 {
     if (!ModelState.IsValid)
     {
         return(View(model));
     }
     try
     {
         var project = db.Projects.Find(model.Id);
         project.ProjeAdi      = model.ProjeAdi;
         project.ProjeAciklama = model.ProjeAciklama;
         db.SaveChanges();
         TempData["Message"] = "Güncelleme işlemi başarılı";
         return(RedirectToAction("Index", "Project"));
         // TODO: Add update logic here
     }
     catch (Exception ex)
     {
         TempData["Model"] = new ErrorViewModel()
         {
             Text           = $"Bir hata oluştu {ex.Message}",
             ActionName     = "Index",
             ControllerName = "Admin",
             ErrorCode      = 500
         };
         return(RedirectToAction("Error", "Home"));
     }
 }
示例#3
0
        public List <ProjectIndexViewModel> CreateIndexProjectViewModels()
        {
            List <Project> projects = _context.Projects
                                      .Include(p => p.Creator)
                                      .Include(p => p.Members)
                                      .Include(p => p.Tickets)
                                      .ToList();

            var viewModels = new List <ProjectIndexViewModel>();

            foreach (var project in projects)
            {
                var reloadProject = _context.Projects.Include(p => p.Creator)
                                    .Single(p => p.ProjectId == project.ProjectId);

                var viewModel = new ProjectIndexViewModel()
                {
                    CreatedDate = project.CreatedDate,
                    CreatorName = $"{reloadProject.Creator.FirstName} {reloadProject.Creator.LastName}",
                    NumMembers  = project.Members.Count,
                    NumTickets  = project.Tickets.Count,
                    ProjectId   = project.ProjectId,
                    Title       = project.Title,
                    Description = project.Description
                };

                viewModels.Add(viewModel);
            }

            return(viewModels);
        }
        public IActionResult Index()
        {
            var model = new ProjectIndexViewModel();

            model.AddProject.Name = TempData["ProjectName"]?.ToString();
            model.ShowProjects    = _projectData.ShowProjects();
            return(View(model));
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            ProjectIndexViewModel Index = await _mediator.Send(new GetProjectsQuery());

            foreach (var item in Index.ProjectViewModels)
            {
                Console.WriteLine(item.Description + " " + item.NumberOfTasks);
            }
        }
示例#6
0
        /// <summary>
        /// Controller Action function provides view model for a new Project
        /// </summary>
        /// <returns>Project View Model</returns>
        public ActionResult Create()
        {
            var viewModel = new ProjectIndexViewModel
            {
                ProjectDetails = new ProjectInfo(),
                Sites          = new List <SiteInfo>()
            };

            return(View(viewModel));
        }
示例#7
0
        public async Task <ProjectIndexViewModel> GetProjects()
        {
            //Console.WriteLine(_context.Projects);
            ProjectIndexViewModel projects = await _mediator.Send(new GetProjectsQuery());

            //WebClient client = new WebClient();
            //var jsonText = client.DownloadString("http://localhost/API/pmc");
            //var json = JsonConvert.DeserializeObject<ProjectIndexViewModel>(jsonText);
            return(projects);
        }
示例#8
0
        public IActionResult Index()
        {
            var careers = projectService_.getAllcar();
            ProjectIndexViewModel projectIndexViewModel = new ProjectIndexViewModel
            {
                CareerCollection = careers,
                title            = "Career Index"
            };

            return(View(projectIndexViewModel));
        }
示例#9
0
        public IActionResult Index()
        {
            var projects = projectService_.getAll();
            ProjectIndexViewModel projectIndexViewModel = new ProjectIndexViewModel
            {
                ProjectCollection = projects,
                title             = "Project Index"
            };

            return(View(projectIndexViewModel));
        }
        public IActionResult Index()
        {
            var interests = projectService_.getAllint();
            ProjectIndexViewModel projectIndexViewModel = new ProjectIndexViewModel
            {
                InterestCollection = interests,
                title = "Interest Index"
            };

            return(View(projectIndexViewModel));
        }
示例#11
0
        public ActionResult Index()
        {
            var projects     = projHelper.GetProjectsAvailableToUser(User);
            var availTickets = ticketsHelper.GetTicketsAvailableToUser(User);

            var viewModel = new ProjectIndexViewModel()
            {
                AvailableProjects = projects,
                Users             = db.Users.ToList(),

                AvailableTickets = availTickets
            };

            return(View(viewModel));
        }
        public IActionResult Index()
        {
            var projects = _projectService.GetAll().Select(x => new ProjectDetailViewModel
            {
                Id          = x.Id,
                ProjectName = x.ProjectName
            });

            var model = new ProjectIndexViewModel
            {
                Projects = projects
            };

            return(View(model));
        }
        // GET: Project
        public ActionResult Index()
        {
            IQueryable <Project>         userProjects = ProjectRepository.GetUserProjects(User.Identity.GetUserId());
            List <ProjectIndexViewModel> viewModels;

            if (userProjects.Any())
            {
                viewModels = userProjects.ToList().Select(project => ProjectIndexViewModel.CreateNewViewModel(project)).ToList();
            }
            else
            {
                viewModels = new List <ProjectIndexViewModel>();
            }

            return(View(viewModels));
        }
        public ActionResult Index()
        {
            if (this.ModelState.IsValid)
            {
                var projects = this.projects.AllApprovedProjects().To <AllProjectsViewModel>().ToList();

                var viewModel = new ProjectIndexViewModel
                {
                    Projects = projects
                };

                return(this.View(viewModel));
            }

            return(this.View());
        }
示例#15
0
        public ProjectIndexViewModel BuildProjectIndexViewModel(int userId, ProjectsFilterType?projectsFilter)
        {
            var projects = _dbContext.Projects.Where(project => project.CreatorID == userId);

            if (projectsFilter.HasValue)
            {
                projects = projects.Where(ProjectsFilterTypeResolver.ResolveFilter(projectsFilter.Value)).AsQueryable();
            }

            var items = Mapper.Map <IList <ProjectIndexItemViewModel> >(projects);

            var model = new ProjectIndexViewModel
            {
                Items = items
            };

            return(model);
        }
示例#16
0
        // GET: Project/Edit/5
        public ActionResult EditProject(int id)
        {
            var project = db.Projects.Find(id);

            if (project == null)
            {
                return(RedirectToAction("Index"));
            }
            var model = new ProjectIndexViewModel()
            {
                Id            = project.Id,
                ProjeAdi      = project.ProjeAdi,
                ProjeAciklama = project.ProjeAciklama,
                EklenmeTarihi = project.EklenmeTarihi
            };

            return(View(model));
        }
        public async Task <IActionResult> Index()
        {
            var httpClient = await this.projectHttpClient.GetClient();

            var response = await httpClient.GetAsync("api/projects").ConfigureAwait(false);

            if (response.IsSuccessStatusCode)
            {
                var projectAsString = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

                var projectIndexViewModel = new ProjectIndexViewModel(
                    JsonConvert.DeserializeObject <IList <Project> >(projectAsString).ToList());

                return(View(projectIndexViewModel));
            }

            throw new Exception($"A problem happened while calling the API: {response.ReasonPhrase}");
        }
示例#18
0
        public bool StartMonitoring_ProjectIndexViewModel(ProjectIndexViewModel model)
        {
            //Find the user's Id
            string userId = HttpContext.Current.GetOwinContext().Authentication.User.Identity.GetUserId();

            //Add this user as watching for Project Adds
            Groups.Add(Context.ConnectionId, LiveUpdateHelper.GroupName(userId));
            //Add this user as watching updates on each project
            foreach (var project in model.Projects)
            {
                Groups.Add(Context.ConnectionId, LiveUpdateHelper.GroupName(ViewModelDataType.Project, ActionType.Index, project.Id));
            }

            //We can't check if a project should have been added or access revoked/deleted because we don't know the user
            //But we can check if it has changed
            Task.Factory.StartNew(() =>
            {
                //Check if the model has changed, call update if it has
                using (var db = new ApplicationDbContext())
                {
                    //Check features in list
                    foreach (var oldProject in model.Projects)
                    {
                        var project = db.Projects.Find(oldProject.Id);
                        if (project == null)
                        {
                            //Data has been removed!
                            continue;
                        }

                        var newProjectItem = new ProjectItemViewModel(project);
                        if (!oldProject.PublicInstancePropertiesEqual(newProjectItem))
                        {
                            //Data has changed
                            LiveUpdateSingleton.Instance.EntityUpdated(new projectList()
                            {
                                new Tuple <EntityState, Project>(EntityState.Modified, project)
                            });
                        }
                    }
                }
            });
            return(true);
        }
示例#19
0
        public async Task <IActionResult> Index(int pageNumber = 1, int pageSize = 10)
        {
            int excludeRecords = (pageSize * pageNumber) - pageSize;

            var model = new ProjectIndexViewModel();
            var user  = await GetCurrentUserAsync();

            model.ActiveUserId = user.Id;

            var projects = _context.Projects
                           .Include(u => u.Users)
                           .Include(r => r.ProjectRequirements)
                           .ThenInclude(ProjectRequirement => ProjectRequirement.Tasks).ToList();

            List <ProjectViewModel> projectList = _mapper.Map <List <Project>, List <ProjectViewModel> >(projects);

            model.Projects = projectList;

            return(View(model));
        }
示例#20
0
        // GET: Projects
        public async Task <ActionResult> Index()
        {
            var currentUser = await _userManager.FindByIdAsync(User.Identity.GetUserId());

            if (currentUser == null)
            {
                return(RedirectToAction("LogOff", "Account")); //If the user is here without a found user then it must be an old cookie
            }
            //Get accessible projects
            var myProjects   = currentUser.Projects.ToList();
            var teamProjects = currentUser.Teams.Select(member => member.Team.Projects).SelectMany(collection => collection).Select(project => project.Project).ToList();

            //Combine the two lists
            var combined = myProjects.Concat(teamProjects).Distinct();

            //Create model from projects
            var model = new ProjectIndexViewModel(combined.ToList());

            return(View(model));
        }
        public IActionResult Add(ProjectIndexViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    _projectData.AddProject(model);
                }
                catch (ProjectAlreadyExistsException)
                {
                    TempData["Error"]       = "This project already exists.";
                    TempData["ProjectName"] = model.AddProject.Name;

                    return(RedirectToAction(nameof(Index)));
                }

                TempData["Success"] = "This project was successfully created.";
                return(RedirectToAction(nameof(Index)));
            }
            else
            {
                return(View(model));
            }
        }
        public void AddProject(ProjectIndexViewModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }
            if (model.AddProject == null)
            {
                throw new ArgumentNullException(nameof(model.AddProject));
            }
            if (model.AddProject.Name == null)
            {
                throw new ArgumentNullException(nameof(model.AddProject.Name));
            }
            if (model.AddProject.Name == "")
            {
                throw new ArgumentException($"{nameof(model.AddProject.Name)} must not be empty.");
            }

            using (var db = new postgresContext())
            {
                var userId = _userData.GetID();
                if (db.Project.Any(x => (x.Name == model.AddProject.Name) && (x.UserId == userId)))
                {
                    throw new ProjectAlreadyExistsException();
                }

                db.Project.Add(new Project()
                {
                    Name   = model.AddProject.Name,
                    UserId = userId
                });

                db.SaveChanges();
            }
        }
        public static HomeIndexViewModel CreateNewViewModel(
            ApplicationUser applicationUser,
            ApplicationDbContext dbContext,
            int latestProjectIntakeLimit        = 3,
            int latestCreatedTicketIntakeLimit  = 3,
            int latestAssignedTicketIntakeLimit = 3)
        {
            if (applicationUser == null)
            {
                throw new ArgumentNullException(nameof(applicationUser));
            }

            List <IdentityRole> roles             = new UserRoleRepository(dbContext).GetUserRoles(applicationUser.Id);
            ProjectRepository   projectRepository = new ProjectRepository(dbContext);

            List <ProjectIndexViewModel> latestProjects = projectRepository
                                                          .GetUserProjects(applicationUser.Id)?
                                                          .ToList()
                                                          .OrderByDescending(project => project?.DateUpdated ?? project.DateCreated)
                                                          .Take(latestProjectIntakeLimit)
                                                          .Select(project => ProjectIndexViewModel.CreateNewViewModel(project))
                                                          .ToList() ?? new List <ProjectIndexViewModel>();

            int numberOfCreatedTickets  = 0;
            int numberOfAssignedTickets = 0;

            List <TicketIndexViewModel> latestCreatedTickets;
            List <TicketIndexViewModel> latestAssignedTickets;

            if (roles.Any(role => role.Name == nameof(UserRolesEnum.Submitter)))
            {
                //! get created tickets (Submitter)
                numberOfCreatedTickets = applicationUser.CreatedTickets?.Count ?? 0;
                latestCreatedTickets   = applicationUser.CreatedTickets?
                                         .OrderByDescending(ticket => ticket?.DateUpdated ?? ticket.DateCreated)
                                         .Take(latestCreatedTicketIntakeLimit)
                                         .Select(ticket => TicketIndexViewModel.CreateNewViewModel(applicationUser.Id, ticket))
                                         .ToList() ?? new List <TicketIndexViewModel>();
            }
            else
            {
                //! if not (Submitter)
                latestCreatedTickets = new List <TicketIndexViewModel>();
            }

            if (roles.Any(role => role.Name == nameof(UserRolesEnum.Developer)))
            {
                //! get assigned tickets (Developer)
                numberOfAssignedTickets = applicationUser.AssignedTickets?.Count ?? 0;
                latestAssignedTickets   = applicationUser.AssignedTickets?
                                          .OrderByDescending(ticket => ticket?.DateUpdated ?? ticket.DateCreated)
                                          .Take(latestAssignedTicketIntakeLimit)
                                          .Select(ticket => TicketIndexViewModel.CreateNewViewModel(applicationUser.Id, ticket))
                                          .ToList() ?? new List <TicketIndexViewModel>();
            }
            else
            {
                //! if not (Developer)
                latestAssignedTickets = new List <TicketIndexViewModel>();
            }

            TicketRepository ticketRepository = new TicketRepository(dbContext);

            try
            {
                return(new HomeIndexViewModel()
                {
                    UserId = string.IsNullOrWhiteSpace(applicationUser.Id) ? throw new ArgumentNullException() : applicationUser.Id,
                    DisplayName = string.IsNullOrWhiteSpace(applicationUser.DisplayName) ? throw new ArgumentNullException() : applicationUser.DisplayName,
                    Email = string.IsNullOrWhiteSpace(applicationUser.Email) ? throw new ArgumentNullException() : applicationUser.Email,
                    TotalProjectCount = projectRepository.GetUserProjects(applicationUser.Id)?.Count() ?? 0,
                    LatestProjects = latestProjects?.Any() ?? false ? latestProjects : new List <ProjectIndexViewModel>(),
                    Roles = (roles?.Any() ?? false) ? roles : new List <IdentityRole>(),
                    TotalCreatedTicketCount = numberOfCreatedTickets,
                    TotalAssignedTicketCount = numberOfAssignedTickets,
                    LatestCreatedTickets = latestCreatedTickets,
                    LatestAssignedTickets = latestAssignedTickets,
                    AllProjectCount = projectRepository.GetAllProjects().Count(),

                    //! NOTE: This depends on the table primary keys matching with the enum int value
                    AllOpenTicketsCount = ticketRepository.GetAllTickets().Count(ticket => ticket.StatusId == (int)TicketStatusesEnum.Open),
                    AllResovledTicketsCount = ticketRepository.GetAllTickets().Count(ticket => ticket.StatusId == (int)TicketStatusesEnum.Resolved),
                    AllRejectedTicketsCount = ticketRepository.GetAllTickets().Count(ticket => ticket.StatusId == (int)TicketStatusesEnum.Rejected),
                });
            }
示例#24
0
        /// <summary>
        /// Controller Action function routed to Project/Index/id that queries corresponding Project,
        /// and associated Sites and Documents for return to client View as view model.
        /// </summary>
        /// <param name="id">Project's projectId</param>
        /// <returns>ProjectIndexViewModel object</returns>
        public ActionResult Index(int id)
        {
            //build up viewmodel with 2 queries. Could be done with 1 query but not important for now.
            //get project details
            var projectInfo = (from p in db.Projects
                               where p.ProjectId == id
                               select new ProjectInfo
            {
                Name = p.Name,
                Description = p.Description,
                RefNumber = p.ProjectCode,
                Id = p.ProjectId,
                ImagePath = p.ImagePath,
                DocumentContainerId = p.DocumentContainerId
            }).FirstOrDefault();

            //get sites list
            var sites = (from dbSite in db.Sites
                         where dbSite.ProjectId == id
                         select new SiteInfo
            {
                Name = dbSite.Name,
                Id = dbSite.SiteId,
                Description = dbSite.Description,
                Address = dbSite.Address,
                ImagePath = dbSite.ImagePath,
                ProjectId = dbSite.ProjectId,
                NotificationNumber = 0
            }).OrderBy(x => x.Name).ToList();

            //Count how many items are high risk designated
            foreach (var site in sites)
            {
                var audits = db.Audits.Where(x => x.SiteId == site.Id).ToList();
                site.NotificationNumber = audits.Sum(x => x.GetCountOfHighRisk());
            }

            //Query for and build list of documents
            List <SharedVM.DocumentInfo> documentList = new List <SharedVM.DocumentInfo>();

            if (projectInfo.DocumentContainerId != null)
            {
                documentList = db.DocumentInfoes
                               .Where(di => di.DocumentContainerId == projectInfo.DocumentContainerId)
                               .Select(di => new SharedVM.DocumentInfo
                {
                    DocumentInfoId   = di.DocumentInfoId,
                    DocumentVersions = di.DocumentVersions
                                       .Select(dv => new SharedVM.DocumentVersion
                    {
                        DocumentVersionId = dv.DocumentVersionId,
                        Name          = dv.Name,
                        VersionNumber = dv.VersionNumber,
                        Description   = dv.Description,
                        Url           = dv.Url,
                        UploadDate    = dv.UploadDate,
                        UploadedBy    = dv.UploadedBy
                    })
                                       .OrderByDescending(dv => dv.DocumentVersionId).ToList()
                }).ToList();
            }

            //build viewmodel and send to view
            var viewModel = new ProjectIndexViewModel
            {
                ProjectDetails = projectInfo,
                Sites          = sites,
                Documents      = documentList
            };

            return(View(viewModel));
        }
        public ActionResult Index()
        {
            if (this.ModelState.IsValid)
            {
                var projects = this.projects.AllApprovedProjects().To<AllProjectsViewModel>().ToList();

                var viewModel = new ProjectIndexViewModel
                {
                    Projects = projects
                };

                return this.View(viewModel);
            }

            return this.View();
        }