public virtual JsonResult CreateTask(
            [DataSourceRequest] DataSourceRequest request, 
            ProjectDetailsViewModel task)
        {
            var projectId = int.Parse(this.Session["ProjectId"].ToString());

            if (this.ModelState.IsValid)
            {
                var taskdb = new SubTask()
                                 {
                                     ProjectId = projectId, 
                                     Title = task.Title, 
                                     ParentId = task.ParentTaskId, 
                                     Start = task.Start, 
                                     End = task.End, 
                                     PercentComplete = 0, 
                                     Price = 0, 
                                     IsUserNotified = false
                                 };

                this.subTaskService.Add(taskdb);

                task.TaskId = taskdb.Id;
                task.ParentTaskId = taskdb.ParentId;
            }

            return this.Json(new[] { task }.ToDataSourceResult(request, this.ModelState));
        }
Пример #2
0
        public ActionResult ProjectDetails(int?projectId)
        {
            if (projectId == null)
            {
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }

            var project = (from p in DbContext.Projects
                           where p.Id == projectId
                           select p).FirstOrDefault();

            var model = new ProjectDetailsViewModel()
            {
                Id          = project.Id,
                Name        = project.Name,
                Details     = project.Details,
                Tickets     = project.Tickets,
                DateCreated = project.DateCreated,
                DateUpdated = project.DateUpdated,
                Users       = project.Users
            };

            return(View(model));
        }
 public ProjectDetailsDialog()
 {
     InitializeComponent();
     DataContext = new ProjectDetailsViewModel();
 }
Пример #4
0
        public async Task <IActionResult> UpdateTask([FromBody] ProjectDetailsViewModel projectTask)
        {
            _ = ModelState;

            var user = await GetCurrentUserAsync();

            var task    = _context.Tasks.Include(t => t.SubTasks).Include(u => u.Users).FirstOrDefault(ta => ta.Id == projectTask.TaskId);
            var project = _context.Projects.Include(p => p.Updates).FirstOrDefault(x => x.Id == projectTask.ProjectId);

            List <NotificationUser> notificationUsers = _context.ProjectUser.Where(x => x.ProjectId == projectTask.ProjectId).Select(u => new NotificationUser {
                UserId = u.UserId
            }).ToList();
            List <TaskUser> selectedUsers = new List <TaskUser>();

            if (projectTask.Users != null)
            {
                selectedUsers = projectTask.Users.Where(u => u.IsSelected).Select(u => new TaskUser {
                    UserId = u.UserId, Username = u.Username
                }).ToList();
            }

            //List<SubTask> subTasksDb = _mapper.Map<ICollection<SubTaskViewModel>, List<SubTask>>(projectTask.SubTasks);

            foreach (var st in projectTask.SubTasks)
            {
                if (st.Id == 0)
                {
                    var subTask = _mapper.Map <SubTask>(st);

                    task.SubTasks.Add(subTask);
                }
            }

            task.Name        = projectTask.TaskName;
            task.Description = projectTask.TaskDescription;
            //task.SubTasks = subTasksDb;
            task.Users = selectedUsers;

            ProjectUpdate projectUpdate = new ProjectUpdate
            {
                Title       = "Task Edited",
                Description = "'" + projectTask.TaskName + "' was edited.",
                Date        = DateTime.UtcNow,
                Type        = UpdateType.Edit
            };

            Notification notification = new Notification
            {
                Title       = "A task was updated in " + project.Name,
                Body        = user.FirstName + " " + user.LastName + " updated the following task in the " + project.Name + " project: " + projectTask.TaskName + ".",
                Type        = UpdateType.Edit,
                Users       = notificationUsers,
                UserLink    = user.Id,
                ProjectLink = projectTask.ProjectId,
                DateTime    = DateTime.Now
            };

            _context.Notifications.Add(notification);

            var requirementTask = _mapper.Map <RequirementTaskViewModel>(task);
            List <SubTaskViewModel>  subTasks = _mapper.Map <ICollection <SubTask>, List <SubTaskViewModel> >(task.SubTasks);
            List <TaskUserViewModel> users    = _mapper.Map <ICollection <TaskUser>, List <TaskUserViewModel> >(task.Users);

            project.Updates.Add(projectUpdate);

            await _context.SaveChangesAsync();

            return(Ok(new CreateTaskResponse
            {
                Id = requirementTask.Id,
                Name = requirementTask.Name,
                Description = requirementTask.Description,
                ProjectRequirementId = requirementTask.ProjectRequirementId,
                Status = requirementTask.Status,
                SubTasks = subTasks,
                Users = users
            }));
        }
Пример #5
0
 public void RerunProjectMetrics(ProjectDetailsViewModel viewModel)
 {
     Analyze(viewModel);
 }
Пример #6
0
 public void CreateIgnoreFile(ProjectDetailsViewModel projectDetails)
 {
     codebaseService.WriteIgnoreFile(projectDetails.ProjectFolder, projectDetails.FilesToIgnore);
 }
Пример #7
0
 public CSharpCollectionViewStub(ProjectDetailsViewModel details)
 {
     ProjectDetails = details;
 }
 private static void ClearAllCodes(ProjectDetailsViewModel vm)
 {
     vm.FieldOfResearchCode        = null;
     vm.SocioEconomicObjectiveCode = null;
 }
Пример #9
0
        public void EntityUpdated(projectList updatedEntities)
        {
            using (var db = new ApplicationDbContext())
            {
                Trace.WriteLine("Updated Project");
                foreach (var tuple in updatedEntities)
                {
                    switch (tuple.Item1)
                    {
                    case EntityState.Modified:
                    {
                        var dbProject = db.Projects.Find(tuple.Item2.Id);
                        if (dbProject == null)
                        {
                            continue;         //Project has been deleted
                        }
                        //Update Project Details box
                        var detailsViewModel = new ProjectDetailsViewModel(dbProject);
                        Clients.Group(LiveUpdateHelper.GroupName(ViewModelDataType.Project,
                                                                 ActionType.Details, dbProject.Id))
                        .UpdateData(ViewModelDataType.Project.ToString(),
                                    ActionType.Details.ToString(), detailsViewModel);

                        //Update Projects List
                        var projectItemViewModel = new ProjectItemViewModel(dbProject);
                        Clients.Group(LiveUpdateHelper.GroupName(ViewModelDataType.Project,
                                                                 ActionType.Index, dbProject.Id))
                        .UpdateItemData(ViewModelDataType.Project.ToString(),
                                        ActionType.Index.ToString(), projectItemViewModel);

                        //Update Sprint Board
                        foreach (var team in dbProject.Teams)
                        {
                            var thisSprint     = dbProject.GetThisSprint();
                            var thisProjSprint = new ProjectSprintViewModel()
                            {
                                ProjectId        = dbProject.Id,
                                ProjectName      = dbProject.Title,
                                TeamName         = team.Team.TeamName,
                                SprintItteration = thisSprint.Iteration,
                                SprintStartDate  = thisSprint.StartDate,
                                SprintEndDate    = thisSprint.EndDate,
                                Features         = new List <SprintFeatures>()
                            };
                            //Add features to view model
                            foreach (var feat in thisSprint.Features.OrderBy(f => f.Priority))
                            {
                                thisProjSprint.Features.Add(new SprintFeatures()
                                    {
                                        FeatureId          = feat.Id,
                                        FeatureName        = feat.Title,
                                        FeatureDescription = feat.Description,
                                        TasksNotStarted    =
                                            feat.Tasks.Where(t => t.State == EnumTaskState.NotStarted)
                                            .OrderBy(p => p.Priority)
                                            .Select(t => new TaskItemViewModel(t))
                                            .ToList(),
                                        TasksInProgress =
                                            feat.Tasks.Where(t => t.State == EnumTaskState.InProgress)
                                            .OrderBy(p => p.Priority)
                                            .Select(t => new TaskItemViewModel(t))
                                            .ToList(),
                                        TasksDone =
                                            feat.Tasks.Where(t => t.State == EnumTaskState.Done)
                                            .OrderBy(p => p.Priority)
                                            .Select(t => new TaskItemViewModel(t))
                                            .ToList()
                                    });
                            }

                            //Push to group
                            Clients.Group(LiveUpdateHelper.GroupName(ViewModelDataType.Sprint, ActionType.Details, dbProject.Id))
                            .UpdateItemData(ViewModelDataType.Sprint.ToString(), ActionType.Index.ToString(), thisProjSprint);
                        }
                    }
                    break;

                    case EntityState.Added:
                    {
                        //Find owner and push add
                        var dbProject = db.Projects.Find(tuple.Item2.Id);
                        if (dbProject == null)
                        {
                            continue;         //Project has been deleted
                        }
                        var projectItemViewModel = new ProjectItemViewModel(dbProject);
                        var group = Clients.Group(LiveUpdateHelper.GroupName(dbProject.User_Id));
                        group.AddData(ViewModelDataType.Project.ToString(),
                                      ActionType.Index.ToString(), projectItemViewModel);
                    }
                    break;

                    case EntityState.Deleted:
                    {
                        //Find owner and push delete
                        if (tuple.Item2 != null)
                        {
                            var group = Clients.Group(LiveUpdateHelper.GroupName(ViewModelDataType.Project, ActionType.Index, tuple.Item2.Id));
                            group.RemoveData(ViewModelDataType.Project.ToString(),
                                             ActionType.Index.ToString(), tuple.Item2.Id);
                        }
                    }
                    break;
                    }
                }
            }
        }
Пример #10
0
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                throw new HttpException((int)HttpStatusCode.BadRequest, "Bad request!");
            }

            var project = projectsRepository.GetProjectById(id);

            if (project == null)
            {
                throw new HttpException((int)HttpStatusCode.NotFound, "Not found!");
            }

            if (!coursesRepository.IsInCourse(project.CourseId, User.Identity.GetUserId(), User.IsInRole("Administrator")))
            {
                throw new HttpException((int)HttpStatusCode.Forbidden, "Forbidden!");
            }

            if (coursesRepository.IsTeacherInCourse(project.CourseId, User.Identity.GetUserId(), User.IsInRole("Administrator")))
            {
                ViewBag.IsTeacher = true;
            }
            else
            {
                // Checking if the project hasn't started yet
                if (DateTime.Now < project.Start && !User.IsInRole("Administrator") && !coursesRepository.IsAssistantTeacherInCourse(project.CourseId, User.Identity.GetUserId(), User.IsInRole("Administrator")))
                {
                    throw new HttpException((int)HttpStatusCode.Forbidden, "Forbidden!");
                }
            }

            double totalGrade  = 0;
            double totalGrades = 0;
            double totalValue  = 0;

            foreach (var task in project.ProjectTasks)
            {
                var gradeProjectTask = task.GradeProjectTasks.Where(g => g.UserId == User.Identity.GetUserId()).FirstOrDefault();
                if (gradeProjectTask != null)
                {
                    totalGrade += task.GradeProjectTasks.Where(g => g.UserId == User.Identity.GetUserId()).FirstOrDefault().Grade *task.Value;
                    totalValue += task.Value;
                    totalGrades++;
                }
            }
            if (totalGrades == project.ProjectTasks.Count && (project.ProjectTasks.Count > 0))
            {
                ViewBag.Grade = Math.Round(totalGrade / totalValue, 2);
            }
            else
            {
                ViewBag.Grade = "All tasks haven't been graded yet.";
            }

            var taskViewModels = new List <TaskViewModel>();

            foreach (var task in project.ProjectTasks)
            {
                taskViewModels.Add(new TaskViewModel
                {
                    BestSubmission = submissionsRepository.GetBestUserSubmissionForTask(task.Id, User.Identity.GetUserId()),
                    Task           = task
                });
            }

            var view = new ProjectDetailsViewModel
            {
                Project = project,
                Tasks   = taskViewModels
            };

            return(View(view));
        }
 internal override void InitViewModel()
 {
     _vm = new ProjectDetailsViewModel(this);
 }
Пример #12
0
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Project project = db.Projects.Find(id);
            var     ticket  = db.Tickets.Where(t => t.ProjectId == project.Id).ToList();

            if (project == null)
            {
                return(View("Error"));
            }
            var pm = rHelp.IsUserInRole(User.Identity.GetUserId(), "Project_Manager") || rHelp.IsUserInRole(User.Identity.GetUserId(), "DemoProject_Manager");

            if (pm)
            {
                if (!pHelp.IsUserOnProject(User.Identity.GetUserId(), project.Id))
                {
                    return(View("Error"));
                }
            }
            var dev = rHelp.IsUserInRole(User.Identity.GetUserId(), "Developer") || rHelp.IsUserInRole(User.Identity.GetUserId(), "DemoDeveloper");

            if (dev)
            {
                if (!pHelp.IsUserOnProject(User.Identity.GetUserId(), project.Id))
                {
                    return(View("Error"));
                }
            }
            var sub = rHelp.IsUserInRole(User.Identity.GetUserId(), "Submitter") || rHelp.IsUserInRole(User.Identity.GetUserId(), "DemoSubmitter");

            if (sub)
            {
                if (!pHelp.IsUserOnProject(User.Identity.GetUserId(), project.Id))
                {
                    return(View("Error"));
                }
            }

            ViewBag.ProjectId = id;

            var AdminId = db.Users.ToList().Where(u => u.Id == User.Identity.GetUserId());

            if (User.IsInRole("Admin") || User.IsInRole("DemoAdmin"))
            {
                ViewBag.AdminId = new SelectList(AdminId, "Id", "FullName", pHelp.ListUsersOnProjectIn2Roles((int)id, "Admin", "DemoAdmin").FirstOrDefault());
            }
            else
            {
                ViewBag.AdminId = new SelectList(rHelp.UsersIn2Roles("Admin", "DemoAdmin"), "Id", "FullName", pHelp.ListUsersOnProjectIn2Roles((int)id, "Admin", "DemoAdmin").FirstOrDefault());
            }
            ViewBag.ProjectManagerId = new SelectList(rHelp.UsersIn2Roles("Project_Manager", "DemoProject_Manager"), "Id", "FullName", pHelp.ListUsersOnProjectIn2Roles((int)id, "Project_Manager", "DemoProject_Manager").FirstOrDefault());
            ViewBag.Developers       = new MultiSelectList(rHelp.UsersIn2Roles("Developer", "DemoDeveloper"), "Id", "FullName", pHelp.ListUsersOnProjectIn2Roles((int)id, "Developer", "DemoDeveloper"));
            ViewBag.Submitters       = new MultiSelectList(rHelp.UsersIn2Roles("Submitter", "DemoSubmitter"), "Id", "FullName", pHelp.ListUsersOnProjectIn2Roles((int)id, "Submitter", "DemoSubmitter"));
            var meh = new ProjectDetailsViewModel();

            meh.Projects   = project;
            meh.TicketList = ticket;
            return(View(meh));
        }
        public ActionResult Details(ProjectDetailsViewModel model)
        {
            var project = this.projectsService.GetById(model.Id);

            if (this.ModelState.IsValid)
            {
                project.Title = model.Title;
                project.Description = model.Description;
                project.Priority = model.Priority;
                project.Start = model.Start;
                project.LeadId = model.LeadId;

                this.projectsService.Update(project);
                this.projectsService.AddAttachments(
                    project, 
                    model.UploadedAttachments, 
                    System.Web.HttpContext.Current.Server);
                this.AddToastMessage(string.Empty, NotificationMessages.ProjectUpdated, ToastType.Success);
                return this.RedirectToAction("Index");
            }

            return this.View(model);
        }
Пример #14
0
 public ProjectView(ProjectDetailsViewModel argVM)
     : this()
 {
     this.ViewModel = argVM;
 }
Пример #15
0
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Project project = await db.Projects.FindAsync(id);

            if (project == null)
            {
                return(HttpNotFound());
            }

            var  userAsp      = _userManager.FindById(User.Identity.GetUserId());
            User loggedInUser = null;

            if (userAsp != null)
            {
                loggedInUser = db.Users.Where(x => x.AspNetUsersId.Equals(userAsp.Id)).FirstOrDefault();
            }
            var user       = project.User;
            var aspNetUser = user.AspNetUser;
            var viewModel  = new ProjectDetailsViewModel()
            {
                LoggedinId         = loggedInUser == null ? 0 :loggedInUser.Id,
                CreatorId          = user.Id,
                Title              = project.Title,
                Description        = project.Description,
                DueDate            = project.DueDate,
                Ratio              = (int)(((double)project.CurrentFundAmount / project.TargetAmount) * 100),
                TargetAmount       = project.TargetAmount,
                CreatorNoProjects  = user.Projects.Count,
                CurrentFund        = project.CurrentFundAmount,
                CreatorFullName    = aspNetUser.FirstName + " " + aspNetUser.LastName,
                CurrentBackerCount = project.BackerProjects.Count,
                DateInserted       = project.DateInserted,
                Id = project.Id,
                CreatorImageUrl = user.PhotoUrl,
                ProjectImageUrl = project.PhotoUrl,
                Comments        = project.UserProjectComments.Select(c => new ProjectCommentViewModel()
                {
                    CommentorFullName = c.User.AspNetUser.FirstName + " " + c.User.AspNetUser.LastName,
                    DateInserted      = c.DateInserted,
                    Text = c.Text
                }).ToList(),
                Updates = project.ProjectUpdates.Select(u => new ProjectUpdateViewModel()
                {
                    FullName     = aspNetUser.FirstName + " " + aspNetUser.LastName,
                    DateInserted = u.DateInserted,
                    Text         = u.Text
                }).ToList(),
                Backers = project.BackerProjects.Select(b => new BackerViewModel()
                {
                    FullName   = b.User.AspNetUser.FirstName + " " + b.User.AspNetUser.LastName,
                    NoProjects = b.User.BackerProjects.Count
                }).ToList(),
                Rewards = project.Rewards.Select(r => new RewardViewModel()
                {
                    Id               = project.Id,
                    ProjectId        = project.Id,
                    CurrentAvailable = r.CurrentAvailable,
                    Description      = r.Description,
                    MaxAvailable     = r.MaxAvailable,
                    MaxAmount        = r.MaxRequiredAmount,
                    MinAmount        = r.MinRequiredAmount,
                    Title            = r.Name
                }
                                                 ).ToList()
            };

            return(View(viewModel));
        }
Пример #16
0
        public static async Task <WSCreateNAVProject.Update_Result> UpdateNavProject(string Key, ProjectDetailsViewModel ProjectToUpdate, NAVWSConfigurations WSConfigurations)
        {
            WSCreateNAVProject.Update NAVUpdate = new WSCreateNAVProject.Update()
            {
                WSJob = new WSCreateNAVProject.WSJob()
                {
                    Key                        = Key,
                    No                         = ProjectToUpdate.ProjectNo,
                    Description100             = ProjectToUpdate.Description,
                    Bill_to_Customer_No        = ProjectToUpdate.ClientNo,
                    Estado_eSUCH               = (Estado_eSUCH)((int)ProjectToUpdate.Status),
                    Estado_eSUCHSpecified      = true,
                    RegionCode20               = ProjectToUpdate.RegionCode,
                    FunctionAreaCode20         = ProjectToUpdate.FunctionalAreaCode,
                    ResponsabilityCenterCode20 = ProjectToUpdate.ResponsabilityCenterCode,
                    Job_Posting_Group          = ""
                                                 //Project_Manager = ProjectToUpdate.ProjectLeader,
                                                 //Person_Responsible = ProjectToUpdate.ProjectResponsible
                }
            };


            //Configure NAV Client
            EndpointAddress WS_URL = new EndpointAddress(WSConfigurations.WS_Job_URL.Replace("Company", WSConfigurations.WS_User_Company));

            WSCreateNAVProject.WSJob_PortClient WS_Client = new WSCreateNAVProject.WSJob_PortClient(navWSBinding, WS_URL);
            WS_Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation;
            WS_Client.ClientCredentials.Windows.ClientCredential          = new NetworkCredential(WSConfigurations.WS_User_Login, WSConfigurations.WS_User_Password, WSConfigurations.WS_User_Domain);

            try
            {
                WSCreateNAVProject.Update_Result result = await WS_Client.UpdateAsync(NAVUpdate);

                return(result);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Пример #17
0
        public IActionResult CreateProject()
        {
            var projectDetailsViewModel = new ProjectDetailsViewModel();

            return(View(projectDetailsViewModel));
        }
 protected abstract ActionResult ReturnOnGetForProject(ProjectDetailsViewModel vm);
Пример #19
0
        public static ProjectDetailsViewModel MapFrom(this ProjectDetailsViewModel model, Project entity)
        {
            if (entity == null || model == null)
            {
                return(model);
            }

            model.InjectFrom <SameNameWithRecursion>(entity);
            if (entity.StartDate != null)
            {
                model.StartDate = entity.StartDate.Value.ToShortDateString();
            }
            if (entity.EndDate != null)
            {
                model.EndDate = entity.EndDate.Value.ToShortDateString();
            }
            if (entity.Funders.IsNotEmpty())
            {
                var funderTypes = Enum.GetValues(typeof(Funder)).Cast <Funder>().Where(o => entity.Funders.Any(q => q.Funder == o)).ToList();

                foreach (var funderType in funderTypes)
                {
                    var viewModel = model.Funders.FirstOrDefault(o => o.Funder == funderType);

                    if (viewModel == null)
                    {
                        continue;
                    }

                    var funder = entity.Funders.First(o => o.Funder == funderType);

                    viewModel.IsFunded    = true;
                    viewModel.GrantNumber = funder.GrantNumber;
                }
            }

            if (entity.SocioEconomicObjectives.IsNotEmpty())
            {
                var newObjectives = (entity.SocioEconomicObjectives.Where(o => !model.SocioEconomicObjectives
                                                                          .Any(q => o.SocioEconomicObjective.Id == q.Code.Id))
                                     .Select(o => (ProjectSocioEconomicObjective) new ProjectSocioEconomicObjective().InjectFrom(o)))
                                    .ToList();

                if (newObjectives.IsNotEmpty())
                {
                    model.SocioEconomicObjectives.AddRange(newObjectives);
                }
            }

            if (!entity.FieldsOfResearch.IsNotEmpty())
            {
                return(model);
            }

            var newResearchList = (from o in entity.FieldsOfResearch
                                   where !model.FieldsOfResearch.Any(q => o.FieldOfResearch.Id == q.Code.Id)
                                   select(ProjectFieldOfResearch) new ProjectFieldOfResearch().InjectFrom(o)).ToList();

            if (newResearchList.IsNotEmpty())
            {
                model.FieldsOfResearch.AddRange(newResearchList);
            }

            return(model);
        }
Пример #20
0
 public void Analyze(ProjectDetailsViewModel viewModel)
 {
     CodeBase.SourceType = viewModel.RepositorySourceType;
     CodeBase.Name       = viewModel.ProjectName;
     CodeBase            = analysisService.Analyze(BuildArguments(viewModel));
 }
 protected override ActionResult ReturnOnGetForProject(ProjectDetailsViewModel vm)
 {
     return(View("Project", vm));
 }
Пример #22
0
 public void AutoSaveProject(ProjectDetailsViewModel projectDetails)
 {
     Apply(CodeBase, projectDetails);
     autoSaveService.Save(CodeBase);
 }
        // GET: /<controller>/
        public async Task <IActionResult> Index(int id)
        {
            var project = await _projectrepo.Get(id);

            var mappedproject = _mapper.Map <Project, ProjectViewModel>(project);
            var property      = await _propertyrepo.Get(project.PropertyId);

            var mappedproperty = _mapper.Map <Property, PropertyViewModel>(property);

            var propertyOwner = await _siteUserManager.FindByIdAsync(project.PropertyOwnerId.ToString());

            var draughtsman = await _siteUserManager.FindByIdAsync(project.DraughtsmanId.ToString());

            //string siteid = "1732d901-82c3-4c48-9e02-3049c8ea2738";
            var siteId = User.GetUserSiteIdAsGuid();
            ProjectDetailsViewModel projectDetails = new ProjectDetailsViewModel
            {
                ProjectId                  = project.ProjectId,
                ProjectName                = project.ProjectName,
                ProjectDescription         = project.ProjectDescription,
                MunicipalRefNo             = project.MunicipalRefNo,
                DateofSubmission           = project.DateofSubmission,
                MunicipalAssessmentOfficer = project.MunicipalAssessmentOfficer,
                AssessmentOfficerEmail     = project.AssessmentOfficerEmail,
                AssessmentOfficerContactNo = project.AssessmentOfficerContactNo,
                DateCreated                = project.DateCreated,
                DateModified               = project.DateModified,
                PropertyId                 = project.PropertyId,
                DraughtsmanId              = project.DraughtsmanId,
                ProjectStateId             = project.ProjectStateId,
                SiteId = property.SiteId,

                PropertyName      = property.PropertyName,
                PropertyAddress   = property.PropertyAddress,
                PropertyERF_LotNo = property.PropertyERF_LotNo,
                IsComplex         = property.IsComplex,
                IsEstate          = property.IsEstate,
                Complex_Estate_No = property.Complex_Estate_No,
                PropertySGNo      = property.PropertySGNo,

                PropertyOwnerFirstName = propertyOwner.FirstName,
                PropertyOwnerLastName  = propertyOwner.LastName,
                PropertyOwnerEmail     = propertyOwner.Email,
                // PropertyOwnerContactNo = propertyOwner.PhoneNumber,

                DraughtsmanFirstName = draughtsman.FirstName,
                DraughtsmanLastName  = draughtsman.LastName,
                DraughtsmanEmail     = draughtsman.Email,
                // DraughtsmanContactNo = draughtsman.PhoneNumber,
            };


            //mappedproject.Property = mappedproperty;*/

            var projectStatusItemViewModel = new ProjectStatusItemViewModel
            {
                ProjectId = id,
                Project   = projectDetails
                            // Project = mappedproject
            };

            var projectitemstatuses = await _repo.GetAllById(id);

            var projectItemStatusList = new List <ProjectItemStatusViewModel> {
            };

            foreach (var projectitemstatus in projectitemstatuses)
            {
                var mappeditemstatus = _mapper.Map <ProjectItemStatus, ProjectItemStatusViewModel>(projectitemstatus);
                projectItemStatusList.Add(mappeditemstatus);
            }
            projectStatusItemViewModel.ProjectItemStatuses = projectItemStatusList;
            return(View(projectStatusItemViewModel));
        }
Пример #24
0
        public async Task <IActionResult> CreateTask([FromBody] ProjectDetailsViewModel projectTask)
        {
            var user = await GetCurrentUserAsync();

            List <NotificationUser> notificationUsers = _context.ProjectUser.Where(x => x.ProjectId == projectTask.ProjectId).Select(u => new NotificationUser {
                UserId = u.UserId
            }).ToList();
            List <TaskUser> selectedUsers = new List <TaskUser>();

            if (projectTask.Users != null)
            {
                selectedUsers = projectTask.Users.Where(u => u.IsSelected).Select(u => new TaskUser {
                    UserId = u.UserId, Username = u.Username
                }).ToList();
            }

            ICollection <SubTask> requirementTasks = _mapper.Map <List <SubTaskViewModel>, ICollection <SubTask> >(projectTask.SubTasks);

            RequirementTask projTask = new RequirementTask
            {
                Name                 = projectTask.TaskName,
                Description          = projectTask.TaskDescription,
                Users                = selectedUsers,
                ProjectRequirementId = projectTask.RequirementId,
                SubTasks             = requirementTasks
            };

            ProjectUpdate projectUpdate = new ProjectUpdate
            {
                Title       = "New Task Added",
                Description = "'" + projTask.Name + "' was added.",
                Date        = DateTime.UtcNow,
                Type        = UpdateType.Add
            };

            var project = _context.Projects.Include(p => p.Updates).FirstOrDefault(x => x.Id == projectTask.ProjectId);

            project.Updates.Add(projectUpdate);
            _context.Tasks.Add(projTask);

            Notification notification = new Notification
            {
                Title       = "A new task was added to " + project.Name,
                Body        = user.FirstName + " " + user.LastName + " added the following task to the " + project.Name + " project: " + projectTask.TaskName + ".",
                Type        = UpdateType.Add,
                Users       = notificationUsers,
                UserLink    = user.Id,
                ProjectLink = projectTask.ProjectId,
                DateTime    = DateTime.Now
            };

            _context.Notifications.Add(notification);

            await _context.SaveChangesAsync();

            List <SubTaskViewModel>  subTasks = _mapper.Map <ICollection <SubTask>, List <SubTaskViewModel> >(projTask.SubTasks);
            List <TaskUserViewModel> users    = _mapper.Map <ICollection <TaskUser>, List <TaskUserViewModel> >(projTask.Users);

            return(Ok(new CreateTaskResponse
            {
                Id = projTask.Id,
                Name = projTask.Name,
                Description = projTask.Description,
                ProjectRequirementId = projTask.ProjectRequirementId,
                IsCompleted = false,
                Status = projTask.Status,
                SubTasks = subTasks,
                Users = users,
                //Update = projectUpdate
            }));
        }
 public virtual JsonResult DestroyTask(
     [DataSourceRequest] DataSourceRequest request, 
     ProjectDetailsViewModel task)
 {
     this.subTaskService.Delete(task.TaskId);
     return this.Json(new[] { task }.ToDataSourceResult(request, this.ModelState));
 }
Пример #26
0
        public async Task <IActionResult> Details(int id)
        {
            var currentUser = await GetCurrentUserAsync();

            var allUsers = _context.Users.Where(u => !u.Projects.Any(p => p.ProjectId == id)).Select(x => new ProjectUsersViewModel {
                UserId = x.Id, Username = x.FirstName + " " + x.LastName
            }).ToList();

            if (_context.Projects.Any(p => p.Id == id))
            {
                var query = _context.Projects
                            .Include(u => u.Users)
                            .Include(p => p.Updates)
                            .Include(r => r.ProjectRequirements)
                            .ThenInclude(ProjectRequirement => ProjectRequirement.Tasks)
                            .ThenInclude(Task => Task.Users)
                            .Include(r => r.ProjectRequirements)
                            .ThenInclude(ProjectRequirement => ProjectRequirement.Tasks)
                            .ThenInclude(Task => Task.Comments)
                            .Include(r => r.ProjectRequirements)
                            .ThenInclude(ProjectRequirement => ProjectRequirement.Tasks)
                            .ThenInclude(Task => Task.SubTasks)
                            .Include(r => r.ProjectRequirements)
                            .ThenInclude(ProjectRequirement => ProjectRequirement.Comments)
                            .First(p => p.Id == id);

                var project = _mapper.Map <ProjectViewModel>(query);

                foreach (var req in project.ProjectRequirements)
                {
                    foreach (var comment in req.Comments)
                    {
                        var userId        = comment.UserId;
                        var commentPoster = _context.Users.FirstOrDefault(x => x.Id == userId);

                        comment.FirstName   = commentPoster.FirstName;
                        comment.LastName    = commentPoster.LastName;
                        comment.CurrentUser = currentUser.Id;
                    }
                }

                var projectViewModel = new ProjectViewModel
                {
                    Id                  = project.Id,
                    Name                = project.Name,
                    Description         = project.Description,
                    Priority            = project.Priority,
                    StartDate           = project.StartDate,
                    Deadline            = project.Deadline,
                    Status              = project.Status,
                    ProjectRequirements = project.ProjectRequirements,
                    Users               = project.Users,
                    Updates             = project.Updates
                };



                var model = new ProjectDetailsViewModel()
                {
                    Project     = projectViewModel,
                    Users       = GetAllUsersInProject(id),
                    AllUsers    = allUsers,
                    CurrentUser = currentUser.Id
                };

                return(View(model));
            }

            this.AddAlertDanger($"The project with ID: {id} was not found, are you sure the ID was correct?");
            return(RedirectToAction("Index"));
        }
        public virtual JsonResult UpdateTaskOnlyProgress(
            [DataSourceRequest] DataSourceRequest request, 
            ProjectDetailsViewModel task)
        {
            if (this.ModelState.IsValid)
            {
                var taskDb = this.subTaskService.GetById(task.TaskId);

                taskDb.PercentComplete = task.PercentComplete;

                this.subTaskService.Update(taskDb);

                task.TaskId = taskDb.Id;
                task.ParentTaskId = taskDb.ParentId;
            }

            return this.Json(new[] { task }.ToDataSourceResult(request, this.ModelState));
        }
Пример #28
0
        public IActionResult Add(ProjectFormViewModel projectForm)
        {
            // For the Add, do not need to check for if the projectCollections are in the db
            // because this Project is unique, there can be no duplicates.

            var firebaseUser = _utils.GetCurrentUser(User);

            // Check to ensure an unauthorized user (anonymous account) can not add a project
            if (firebaseUser == null)
            {
                return(NotFound());
            }

            // Ensure the userId on the incoming project matches the person making the request
            if (projectForm.Project.UserId != firebaseUser.Id)
            {
                return(BadRequest());
            }

            // Get all of this user's projects
            var allProjects = _projectRepo.Get(firebaseUser.Id);

            // see if the name of the incoming collection is in the db
            var projectWithThatName = allProjects.Find(c => c.Name == projectForm.Project.Name);

            // if there is a returned project, we can't add because name isn't unique for this user
            if (projectWithThatName != null)
            {
                return(NotFound());
            }

            // Need to add the default requirement for the project here
            projectForm.Project.CreationDate = DateTime.Now;

            try
            {
                _projectRepo.Add(projectForm.Project);

                try
                {
                    // After we add the project, assign the project id to each projectCollection
                    foreach (var projectCollection in projectForm.ProjectCollections)
                    {
                        projectCollection.ProjectId = projectForm.Project.Id;
                    }
                }
                // The user attempted to enter Null for their ProjectCollecitons
                catch (NullReferenceException e)
                {
                    // Make a CollectionDetailsViewModel to pass the created collection into for deletion
                    var projectDetails = new ProjectDetailsViewModel
                    {
                        Project            = projectForm.Project,
                        ProjectCollections = new List <ProjectCollection>()
                    };
                    // Remove the just entered collection from db
                    _projectRepo.Delete(projectDetails);

                    // Return a BadRequest
                    return(BadRequest());
                }

                // Add ProjectCollections
                _projColRepo.Add(projectForm.ProjectCollections);

                return(Ok(projectForm));
            }
            catch (DbUpdateException e)
            {
                return(NotFound());
            }
        }
Пример #29
0
        private async Task <bool> GetProject(Guid projectId)
        {
            try
            {
                project = await ProjectsService.GetProject(projectId);

                if (project != null)
                {
                    var userWork = Common.Instance.GetUserWork().Where(x => x.WorkspaceId == Common.CurrentWorkspace.Id && x.ProjectId == project.Id);

                    if (userWork != null && userWork.Count() > 0)
                    {
                        lblProjectItems.Text     = string.Format("Work ({0})", userWork.Count());
                        slProjectItems.IsVisible = true;
                    }

                    //check permissions to view all tasks
                    //bool userHasEditTaskPermissions = project.UserHasEditTaskPermissions(Common.CurrentWorkspace.UserID);

                    bool userHasEditTaskPermissions = false;
                    if (project.ProjectResources != null)
                    {
                        foreach (ProjectInsight.Models.Projects.ProjectResource r in project.ProjectResources)
                        {
                            if (
                                (
                                    (r.IsProjectScheduler.HasValue && r.IsProjectScheduler.Value == true)
                                    ||
                                    (r.IsProjectManager.HasValue && r.IsProjectManager.Value == true)
                                ) &&
                                (r.User_Id.HasValue && r.User_Id.Value == Common.CurrentWorkspace.UserID)

                                )
                            {
                                userHasEditTaskPermissions = true;
                            }
                        }
                    }


                    var item = new ProjectDetailsViewModel
                    {
                        Id    = project.Id.ToString(),
                        Title = project.ItemNumberFullAndNameDisplayPreference,
                        WorkPercentComplete = project.WorkPercentComplete.Value,
                        Status     = project.ProjectStatus != null ? project.ProjectStatus.Name : "",
                        TasksCount = project.TaskCount ?? 0,

                        UserHasEditTaskPermissions = userHasEditTaskPermissions,
                        RefreshControls            = true
                    };


                    //TODO IssuesCount property needed on Project model

                    try
                    {
                        var itemCounts = await ProjectsService.client.GetProjectItemCountsAsync(project.Id.Value);

                        if (itemCounts != null)
                        {
                            item.IssuesCount = itemCounts.IssueCount.Value;
                            item.TasksCount  = itemCounts.TaskCount.Value;
                        }

                        //List<ProjectInsight.Models.Issues.Issue> issues = await IssuesService.client.GetByProjectAsync(project.Id.Value);
                        //item.IssuesCount = issues == null ? 0 : issues.Count();
                    }
                    catch (Exception ex)
                    {
                    }


                    item.Description = System.Text.RegularExpressions.Regex.Replace(project.Description, "<.*?>", String.Empty);
                    if (project.ProjectStatus != null)
                    {
                        if (string.IsNullOrEmpty(project.ProjectStatus.ChartColor))
                        {
                            item.StatusColor     = ProjectInsightMobile.Helpers.ExtensionMethods.GetHexString((Color)Application.Current.Resources["LightBackgroundColor"]);
                            item.StatusFontColor = ProjectInsightMobile.Helpers.ExtensionMethods.GetHexString((Color)Application.Current.Resources["DarkGrayTextColor"]);
                        }
                        else
                        {
                            item.StatusColor     = project.ProjectStatus.ChartColor;
                            item.StatusFontColor = ProjectInsightMobile.Helpers.ExtensionMethods.GetHexString((Color)Application.Current.Resources["WhiteTextColor"]);
                        }
                    }

                    string percentComplete = "0";
                    if (project.WorkPercentComplete != null)
                    {
                        percentComplete = project.WorkPercentComplete.Value.ToString();
                    }

                    item.Duration = project.DurationString;
                    item.Duration = String.Format("{0} ({1}% Complete)", project.DurationString, percentComplete);

                    if (project.StartDateTimeUserLocal != null)
                    {
                        item.StartDate = project.StartDateTimeUserLocal.Value;
                    }
                    if (project.EndDateTimeUserLocal != null)
                    {
                        item.EndDate = project.EndDateTimeUserLocal.Value;
                    }

                    item.Description = item.Description.Replace("<img ", "<img style='max-width: 100%;' ");

                    viewModel      = item;
                    BindingContext = viewModel;
                }
            }
            catch (Exception ex)
            {
                //AuthenticationService.Logout();
                return(false);
            }
            return(true);
        }