public async Task <ActionResult> DeleteIssues([Bind(include: "selectedIssuesDelete, ProjectIDCode")] ProjectManagementViewModel projectManagementViewModel) { ProjectManagementViewModel model = new ProjectManagementViewModel(); List <Issue> IssueList = new List <Issue>(); foreach (var issueSelected in projectManagementViewModel.selectedIssuesDelete) { var issue = await _issueRepository.GetIssue(issueSelected); IssueList.Add(issue); } model = projectManagementViewModel; model.IssueList = IssueList; return(View("DeleteIssuesConfirmation", model)); }
public async Task <ActionResult> UpdateProjectDetails(string IDCode) { ProjectManagementViewModel model = new ProjectManagementViewModel(); Project Project = await _projectRepository.GetProject(IDCode); var AllUsers = await _userRepository.GetAllUsers(); List <User> ProjectManagerList = new List <User>(); foreach (var user in AllUsers) { if (user.Role == "Project Manager") { ProjectManagerList.Add(user); } } model.Project = Project; model.ProjectManagerList = ProjectManagerList; return(View("UpdateProjectDetails", model)); }
public async Task <ActionResult> DeleteProjects([Bind(include: "ProjectsSelected")] ProjectManagementViewModel projectManagementViewModel) { ProjectManagementViewModel model = new ProjectManagementViewModel(); List <Project> ProjectList = new List <Project>(); foreach (var projectSelected in projectManagementViewModel.ProjectsSelected) { var project = await _projectRepository.GetProject(projectSelected); //foreach (var issueInProject in project.Issues) //{ // issueInProject = issueInProject.Users; //} //await _projectRepository.Update(project); ProjectList.Add(project); } model = projectManagementViewModel; model.ProjectList = ProjectList; return(View("DeleteProjectsConfirmation", model)); }
public async Task <ActionResult> CreateProject() { ProjectManagementViewModel model = new ProjectManagementViewModel(); Project project = new Project(); List <User> ProjectManagerList = new List <User>(); var AllUsers = await _userRepository.GetAllUsers(); foreach (var user in AllUsers) { if (user.Role == "Project Manager") { ProjectManagerList.Add(user); } } model.ProjectManagerList = ProjectManagerList; model.UserList = AllUsers; model.Project = project; return(View("CreateProject", model)); }
public async Task <JsonResult> ProjectManagement(ProjectManagementViewModel model) { if (model == null) { return(Json("Error")); } Boolean error = false; Boolean filtered = false; Int32 queryCount = 0; StringBuilder sb = new StringBuilder(); var entities = db.Contacts.Where(x => x.ProjectId == model.ProjectId).ToList(); List <String> queryList = new List <String>(); try { //Cities if (model.ProjectCities != null) { foreach (var item in model.ProjectCities) { if (item.Property == "Blank") { if (sb.Length <= 0) { sb.Append($"City = \'\' OR City IS NULL"); } else { sb.Append($" OR City = \'\' OR City IS NULL"); } } else { if (sb.Length <= 0) { sb.Append($"City = @{queryCount++}"); } else { sb.Append($" OR City = @{queryCount++}"); } queryList.Add(item.Property); } } } if (!String.IsNullOrEmpty(sb.ToString())) { entities = entities.AsQueryable().Where(sb.ToString(), queryList.ToArray()).ToList(); queryList.Clear(); filtered = true; sb.Clear(); queryCount = 0; } //Titles if (model.ProjectTitles != null) { foreach (var item in model.ProjectTitles) { if (item.Property == "Blank") { if (sb.Length <= 0) { sb.Append($"Title = @{queryCount++} OR Title = NULL"); } else { sb.Append($" OR Title = @{queryCount++} OR Title = NULL"); } queryList.Add(String.Empty); } else { if (sb.Length <= 0) { sb.Append($"Title = @{queryCount++}"); } else { sb.Append($" OR Title = @{queryCount++}"); } queryList.Add(item.Property); } } } if (!String.IsNullOrEmpty(sb.ToString())) { entities = entities.AsQueryable().Where(sb.ToString(), queryList.ToArray()).ToList(); queryList.Clear(); filtered = true; sb.Clear(); queryCount = 0; } //SICS if (model.ProjectSICs != null) { foreach (var item in model.ProjectSICs) { if (item.Property == "Blank") { if (sb.Length <= 0) { sb.Append($"SIC = @{queryCount++} OR SIC = NULL"); } else { sb.Append($" OR SIC = @{queryCount++} OR SIC = NULL"); } queryList.Add(String.Empty); } else { if (sb.Length <= 0) { sb.Append($"SIC = @{queryCount++}"); } else { sb.Append($" OR SIC = @{queryCount++}"); } queryList.Add(item.Property); } } } if (!String.IsNullOrEmpty(sb.ToString())) { entities = entities.AsQueryable().Where(sb.ToString(), queryList.ToArray()).ToList(); queryList.Clear(); filtered = true; sb.Clear(); queryCount = 0; } //COMPANIES if (model.ProjectCompanies != null) { foreach (var item in model.ProjectCompanies) { if (item.Property == "Blank") { if (sb.Length <= 0) { sb.Append($"Company = @{queryCount++} OR Company = NULL"); } else { sb.Append($" OR Company = @{queryCount++} OR Company = NULL"); } queryList.Add(String.Empty); } else { if (sb.Length <= 0) { sb.Append($"Company = @{queryCount++}"); } else { sb.Append($" OR Company = @{queryCount++}"); } queryList.Add(item.Property); } } } if (!String.IsNullOrEmpty(sb.ToString())) { entities = entities.AsQueryable().Where(sb.ToString(), queryList.ToArray()).ToList(); queryList.Clear(); filtered = true; sb.Clear(); queryCount = 0; } //STATES if (model.ProjectStates != null) { foreach (var item in model.ProjectStates) { if (item.Property == "Blank") { if (sb.Length <= 0) { sb.Append($"State = @{queryCount++} OR State = NULL"); } else { sb.Append($" OR State = @{queryCount++} OR State = NULL"); } queryList.Add(String.Empty); } else { if (sb.Length <= 0) { sb.Append($"State = @{queryCount++}"); } else { sb.Append($" OR State = @{queryCount++}"); } queryList.Add(item.Property); } } } if (!String.IsNullOrEmpty(sb.ToString())) { entities = entities.AsQueryable().Where(sb.ToString(), queryList.ToArray()).ToList(); queryList.Clear(); queryCount = 0; filtered = true; sb.Clear(); } //TIME ZONES if (model.ProjectTimeZonesId != null) { foreach (var item in model.ProjectTimeZonesId) { if (sb.Length <= 0) { sb.Append($"TimeZoneId = @{queryCount++}"); } else { sb.Append($" OR TimeZoneId = @{queryCount++}"); } queryList.Add(item.ToString()); } } if (!String.IsNullOrEmpty(sb.ToString())) { entities = entities.AsQueryable().Where(sb.ToString(), queryList.ToArray()).ToList(); queryList.Clear(); queryCount = 0; filtered = true; sb.Clear(); } var everyOne = await db.Contacts.Where(x => !x.IsDeleted && x.ProjectId == model.ProjectId).ToListAsync(); foreach (var item in everyOne) { item.InHold = true; db.Entry(item).State = EntityState.Modified; } if (filtered) { foreach (var item in entities) { item.InHold = false; db.Entry(item).State = EntityState.Modified; } } await db.SaveChangesAsync(); } catch (Exception ex) { error = true; AddAlert($"Oops! something went wrong. Error code: {ex.HResult}", "Details", this.GetType().ToString(), AlertType.error, ex); } if (error) { return(Json("Error")); } else { return(Json("Ok")); } }
public async Task <ActionResult> ProjectManagement(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var entity = await db.Projects.FindAsync(id); if (entity == null) { return(RedirectToAction("Index")); } var ProjectContacts = await db.Contacts.Where(x => x.ProjectId == id).Select(z => new ContactModel { Company = z.Company, Title = z.Title, SIC = z.SIC, City = z.City, State = z.State, TimeZone = z.TimeZone, InHold = z.InHold }).ToListAsync(); var Project = new ProjectManagementViewModel { Id = entity.Id, Description = entity.Description, ProjectSICs = ProjectContacts.Select(x => new ProjectManagementBooleanModel { Property = string.IsNullOrEmpty(x.SIC) ? "Blank" : x.SIC, IsChecked = !x.InHold }).GroupBy(x => x.Property).Select(g => new ProjectManagementBooleanModel { Property = g.Key, IsChecked = g.Sum(c => c.IsChecked ? 1 : 0) > 0 }).Distinct(new ProductComparer()).ToList(), ProjectTitles = ProjectContacts.Select(x => new ProjectManagementBooleanModel { Property = string.IsNullOrEmpty(x.Title) ? "Blank" : x.Title, IsChecked = !x.InHold }).GroupBy(x => x.Property).Select(g => new ProjectManagementBooleanModel { Property = g.Key, IsChecked = g.Sum(c => c.IsChecked ? 1 : 0) > 0 }).Distinct(new ProductComparer()).ToList(), ProjectCompanies = ProjectContacts.Select(x => new ProjectManagementBooleanModel { Property = string.IsNullOrEmpty(x.Company) ? "Blank" : x.Company, IsChecked = !x.InHold }).GroupBy(x => x.Property).Select(g => new ProjectManagementBooleanModel { Property = g.Key, IsChecked = g.Sum(c => c.IsChecked ? 1 : 0) > 0 }).Distinct(new ProductComparer()).ToList(), ProjectCities = ProjectContacts.Select(x => new ProjectManagementBooleanModel { Property = string.IsNullOrEmpty(x.City) ? "Blank" : x.City, IsChecked = !x.InHold }).GroupBy(x => x.Property).Select(g => new ProjectManagementBooleanModel { Property = g.Key, IsChecked = g.Sum(c => c.IsChecked ? 1 : 0) > 0 }).Distinct(new ProductComparer()).ToList(), ProjectStates = ProjectContacts.Select(x => new ProjectManagementBooleanModel { Property = string.IsNullOrEmpty(x.State) ? "Blank" : x.State, IsChecked = !x.InHold }).GroupBy(x => x.Property).Select(g => new ProjectManagementBooleanModel { Property = g.Key, IsChecked = g.Sum(c => c.IsChecked ? 1 : 0) > 0 }).Distinct(new ProductComparer()).ToList(), ProjectTimeZones = ProjectContacts.Select(x => new ProjectManagementBooleanModel { Property = string.IsNullOrEmpty(x.TimeZone.Name) ? "Blank" : x.TimeZone.Name, TimeZone = x.TimeZone, IsChecked = !x.InHold }).GroupBy(x => x.Property).Select(g => new ProjectManagementBooleanModel { Property = g.Key, TimeZone = g.First().TimeZone, IsChecked = g.Sum(c => c.IsChecked ? 1 : 0) > 0 }).Distinct(new ProductComparer()).ToList(), }; ViewBag.CampaignId = new SelectList(db.Campaigns.Where(x => !x.IsDeleted), "Id", "Identifier", entity.CampaignId); return(View(Project)); }
public async Task <ActionResult> ConfirmDeleteProject([Bind(include: "ProjectsSelected")] ProjectManagementViewModel projectManagementViewModel) { List <Project> ProjectList = new List <Project>(); List <Issue> IssueList = new List <Issue>(); foreach (var projectSelected in projectManagementViewModel.ProjectsSelected) { var project = await _projectRepository.GetProject(projectSelected); project.DeleteProject = true; if (project.Users != null) { await UpdateProjectAssignment(project); } if (project.Users != null) { foreach (var user in project.Users) { User User = await _userRepository.GetUser(user); if (User.Issues != null) { List <string> newIssueList = new List <string>(); foreach (var issue in User.Issues) { if (!issue.Contains(project.IDCode)) { newIssueList.Add(issue); } else { //Issue issue = await _issueRepository.GetIssue(issue.Split(':')[0].Replace("\"", "")); IssueList.Add(await _issueRepository.GetIssue(issue.Split(':')[0].Replace("\"", "").Split('-')[1])); } } User.Issues = newIssueList; } await _userRepository.Update(User); } } ProjectList.Add(project); } await _issueRepository.Delete(IssueList); var result = await _projectRepository.Delete(ProjectList); if (result) { TempData["Message"] = "User Deleted Successfully"; } else { TempData["Message"] = "Error While Deleting the User"; } return(RedirectToAction("Index")); }
public async Task <IActionResult> Index(Project Project = null, string ProjectIDCode = null) { // Sorting users assigned to selected project List <User> UsersAssignedList = new List <User>(); List <User> UsersNotAssignedList = new List <User>(); List <Issue> IssueList = new List <Issue>(); // Model for view ProjectManagementViewModel model = new ProjectManagementViewModel(); if (ProjectIDCode != null) { Project = await _projectRepository.GetProject(ProjectIDCode); } else { Project = await _projectRepository.GetProject(Project.IDCode); } if (Project == null) { Project = new Project(); //Project.Issues = IssueList; } var AllUsers = await _userRepository.GetAllUsers(); List <User> ProjectManagerList = new List <User>(); if (Project.IDCode != null) { if (Project.Users == null) { Project.Users = new List <string>(); } foreach (var user in Project.Users) { UsersAssignedList.Add(await _userRepository.GetUser(user)); } List <User> AllUsersList = AllUsers.ToList(); AllUsersList.RemoveAll(x => UsersAssignedList.Any(y => y.ID == x.ID)); UsersNotAssignedList = AllUsersList; foreach (var issue in Project.Issues) { //var x = issue.Split(':')[0]; //x.Replace("\"", ""); IssueList.Add(await _issueRepository.GetIssue(issue.Split(':')[0].Replace("\"", ""))); } } model.ProjectList = await _projectRepository.GetAllProjects(); model.UsersAssignedList = UsersAssignedList; model.UsersNotAssignedList = UsersNotAssignedList; model.IssueList = IssueList; model.Project = Project; return(View(model)); }
public async Task <ActionResult> UpdateIssue(Issue issue = null, ProjectManagementViewModel projectManagementViewModel = null) { if (issue == null) { issue = projectManagementViewModel.Issue; } var issueFromDb = await _issueRepository.GetIssue(issue.IDCode); var projectFromDb = await _projectRepository.GetProject(issueFromDb.ProjectIDCode); if (ModelState.IsValid) { // Updating 'Issue' collection if (projectFromDb == null || issueFromDb == null) { return(new NotFoundResult()); } issue.Id = issueFromDb.Id; issue.Created = issueFromDb.Created; issue.Updated = DateTime.UtcNow.ToString(); if (projectManagementViewModel.IssueImages != null) { foreach (var image in projectManagementViewModel.IssueImages) { if (image.Length > 0) { using (var ms = new MemoryStream()) { image.CopyTo(ms); var fileBytes = ms.ToArray(); string fileString = Convert.ToBase64String(fileBytes); // act on the Base64 data issue.ScreenshotArray = fileBytes; issue.ScreenshotString = fileString; } } } } if (issue.Users == null) { issue.Users = new List <string>(); } //if (issueFromDb.DeleteIssue == false) //{ // Adding Users if (issue.AddUsers != null && issue.DeleteIssue == false) { foreach (var user in issue.AddUsers) { var User = await _userRepository.GetUser(user); await AddorRmove("Add", "Issue", User, projectFromDb, issue, GetAuthorizationToken()); // add param to say its adding for issue } } // Remove Users if (issue.RemoveUsers != null || issue.DeleteIssue == true) { foreach (var user in issue.RemoveUsers) { var User = await _userRepository.GetUser(user); //issue.Users.Remove(user + ": " + User.UserName); await AddorRmove("Remove", "Issue", User, projectFromDb, issue, GetAuthorizationToken()); // add param to say its adding for issue } } //} //else //{ // //if (issue.Users != null) // //{ // List<string> usersDelete = issue.Users; // foreach (var user in issue.Users) // { // var User = await _userRepository.GetUser(user); // //issue.Users.Remove(user + ": " + User.UserName); // await AddorRmove("Remove", "Issue", User, projectFromDb, issue, GetAuthorizationToken()); // add param to say its adding for issue // } // //} //} await _issueRepository.Update(issue); //await AddorRmove("Update", "Issue", issue, projectFromDb, issue, GetAuthorizationToken()); // add param to say its adding for issue } return(RedirectToAction("Index", projectFromDb)); }
public async Task <ActionResult> DeleteIssuesConfirmation([Bind(include: "selectedIssuesDelete")] ProjectManagementViewModel projectManagementViewModel) { Project Project = new Project(); List <string> projectIssues = new List <string>(); List <Issue> IssueList = new List <Issue>(); string ProjectIDCode = ""; foreach (var issueSelected in projectManagementViewModel.selectedIssuesDelete) { Issue Issue = await _issueRepository.GetIssue(issueSelected); ProjectIDCode = Issue.ProjectIDCode; // Delete issue from project Project = await _projectRepository.GetProject(ProjectIDCode); projectIssues = Project.Issues; projectIssues.Remove(Issue.IDCode + ":" + Issue.Title); Project.Issues = projectIssues; await _projectRepository.Update(Project); // Delete issues from users if (Issue.Users != null) { foreach (var user in Issue.Users) { User User = await _userRepository.GetUser(user); if (User.Issues != null) { List <string> newIssueList = new List <string>(); foreach (var issue in User.Issues) { if (!(Issue.ProjectIDCode + "-" + issueSelected).Equals(issue.Split(':')[0])) { newIssueList.Add(issue); } else { IssueList.Add(await _issueRepository.GetIssue(issue.Split(':')[0].Replace("\"", "").Split('-')[1])); } } User.Issues = newIssueList; } await _userRepository.Update(User); } } } await _issueRepository.Delete(IssueList); return(RedirectToAction("Index", await _projectRepository.GetProject(ProjectIDCode))); }
public MainViewModel(ProjectSettingsViewModel projectSettingsVm, ProjectManagementViewModel projectManagementVm, MetadataViewModel metadataVm) { ProjectSettingsVm = projectSettingsVm; ProjectManagementVm = projectManagementVm; MetadataVm = metadataVm; }