示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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));
        }
示例#4
0
        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));
        }
示例#7
0
        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"));
        }
示例#8
0
        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));
        }
示例#9
0
        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));
        }
示例#10
0
        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)));
        }
示例#11
0
 public MainViewModel(ProjectSettingsViewModel projectSettingsVm, ProjectManagementViewModel projectManagementVm, MetadataViewModel metadataVm)
 {
     ProjectSettingsVm   = projectSettingsVm;
     ProjectManagementVm = projectManagementVm;
     MetadataVm          = metadataVm;
 }