Exemple #1
0
        public IActionResult Delete(int id)
        {
            var model = new ProjectUpdateModel();

            model.Delete(id);
            return(RedirectToAction("Index"));
        }
        public async Task <JsonResult> Update([FromBody] ProjectUpdateModel model)
        {
            int projectId = model.Project.Id;
            int userId    = int.Parse(User.Identity.Name);

            // Проверяем доступ
            var linkedProject = await _dbContext.GetLinkedAcceptedProject(projectId, userId)
                                .ConfigureAwait(false);

            if (linkedProject == null || linkedProject.RoleId == 1)
            {
                throw new Exception(TextResource.API_NoAccess);
            }

            var project = await _dbContext.Projects.FirstOrDefaultAsync(x => x.Id == projectId)
                          .ConfigureAwait(false);

            if (project == null)
            {
                throw new Exception(TextResource.API_NotExistProjectId);
            }

            project.Title       = model.Project.Title;
            project.Description = model.Project.Description;

            await _dbContext.SaveChangesAsync()
            .ConfigureAwait(false);

            return(new JsonResult(new ProjectUpdateResponse {
                project = project
            }));
        }
Exemple #3
0
        public async Task <int> UpdateByIdAsync(int projectId, ProjectUpdateModel mproject)
        {
            var project = _context.Projects.FirstOrDefault(c => c.ProjectId == projectId);

            if (project == null)
            {
                throw new ExpectException("Could not find data which ProjectId equal to " + projectId);
            }

            //ProjectNo must be unique
            var checkData = _context.Projects.Where(p => p.ProjectNo == mproject.ProjectNo &&
                                                    p.ProjectId != projectId).ToList();

            if (checkData.Count > 0)
            {
                throw new ExpectException("The data which ProjectNo '" + mproject.ProjectNo + "' already exist in system");
            }

            //Get UserInfo
            var user = _loginUser.GetLoginUserInfo();

            project.ProjectName  = mproject.ProjectName;
            project.ProjectNo    = mproject.ProjectNo;
            project.Completed    = mproject.Completed;
            project.Modifier     = user.UserName;
            project.ModifiedDate = DateTime.Now;

            await _context.SaveChangesAsync();

            return(project.ProjectId);
        }
        public async Task <IHttpActionResult> UpdateList([FromBody] ProjectUpdateModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = _context.Users.FirstOrDefault(u => u.UserName.Equals(User.Identity.Name));

            if (user == null)
            {
                return(BadRequest("Invalid user data"));
            }

            var list = user.Projects.FirstOrDefault(p => p.ProjectId.Equals(model.ProjectId));

            if (list == null)
            {
                return(BadRequest());
            }

            list.Name = model.Name;
            await _context.SaveChangesAsync();

            return(Ok());
        }
Exemple #5
0
        private static void MapProperty(CsvReader csv, ProjectUpdateModel project, _projectPropertyMap property)
        {
            // Get the property value and translate it if necessary (using the edit options)
            var value = property.Translate(csv.GetField(property.Name));

            if (!string.IsNullOrWhiteSpace(value))
            {
                try
                {
                    object objValue;

                    // For some reason, have to treat floats differently in automapper. This might be a bug in automapper.
                    if (property.property.PropertyType.IsAssignableFrom(typeof(float?)))
                    {
                        objValue = PortfolioMapper.ExportMapper.Map <float?>(value);
                    }
                    else
                    {
                        objValue = PortfolioMapper.ExportMapper.Map(value, typeof(string), property.property.PropertyType);
                    }

                    // Set the property value on the project
                    property.property.SetValue(project, objValue);
                }
                catch (AutoMapperMappingException ame)
                {
                    string msg = $"Error mapping property [{property.property.Name}] of type [{property.property.PropertyType.Name}], value is [{value}]";
                    throw new Exception(msg, ame);
                }
            }
        }
        public ICollection <Milestone> Resolve(ProjectUpdateModel source, Project destination, MilestoneEditModel[] sourceMember, ICollection <Milestone> destMember, ResolutionContext context)
        {
            ICollection <Milestone> result = new List <Milestone>();

            // Remove
            if (destMember != null)
            {
                foreach (var entity in destMember.ToList())
                {
                    var portfolioContext = context.Items[nameof(PortfolioContext)] as PortfolioContext;
                    if (sourceMember == null || !sourceMember.Any(s => s.Id == entity.Id))
                    {
                        portfolioContext.Milestones.Remove(entity);
                    }
                }
            }

            if (sourceMember != null && sourceMember.Length > 0)
            {
                foreach (var milestone in sourceMember)
                {
                    Milestone entity = (milestone.Id > 0 ? destMember.FirstOrDefault(m => m.Id == milestone.Id) : null) ?? new Milestone();
                    context.Mapper.Map(milestone, entity);
                    result.Add(entity);
                }
            }
            return(result);
        }
Exemple #7
0
 public ActionResult EditProject([Bind] ProjectUpdateModel model)
 {
     if (model == null)
     {
         return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
     }
     if (ModelState.IsValid)
     {
         var project = context.Projects.Where(id => id.ProjectId
                                              .Equals(model.ProjectId)).FirstOrDefault();
         project.ProjectName      = model.ProjectName;
         project.ProjectCode      = model.ProjectCode;
         project.NatureOfIndustry = model.NatureOfIndustry;
         try
         {
             context.Entry(project).State = EntityState.Modified;
             context.SaveChanges();
             TempData["Success"] = "Project Updated Successfully";
             return(RedirectToAction("ViewProjects", "SuperAdmin"));
         }
         catch (Exception ex)
         {
             TempData["Error"] = "Project Update Error";
             return(RedirectToAction("ViewProjects", "SuperAdmin"));
         }
     }
     TempData["Error"] = "Project Update Error";
     return(RedirectToAction("ViewProjects", "SuperAdmin"));
 }
Exemple #8
0
 public ActionResult DeleteProjectConfirmed(ProjectUpdateModel model)
 {
     if (model == null)
     {
         return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
     }
     if (ModelState.IsValid)
     {
         var project = context.Projects.Where(id => id.ProjectId
                                              .Equals(model.ProjectId)).FirstOrDefault();
         try
         {
             context.Projects.Remove(project);
             context.SaveChanges();
             TempData["Success"] = "Project Deleted Successfully";
             return(RedirectToAction("ViewProjects", "SuperAdmin"));
         }
         catch (Exception ex)
         {
             TempData["Error"] = "Project Delete Unsuccessful";
             return(RedirectToAction("ViewProjects", "SuperAdmin"));
         }
     }
     TempData["Error"] = "Project Delete Unsuccessful";
     return(RedirectToAction("ViewProjects", "SuperAdmin"));
 }
        public void TestTask(TaskModel testTask)
        {
            string             message           = string.Empty;
            ProjectController  projectController = new ProjectController();
            ProjectUpdateModel projectResult     = new ProjectUpdateModel();
            UserUpdateModel    userResult        = AddEditUser();
            ProjectModel       testProject       = GetTestProject();
            TaskController     taskc             = new TaskController();
            TaskUpdateModel    tresult           = new TaskUpdateModel();

            testProject.Manager_ID   = userResult.user.User_ID;
            testProject.Manager_Name = userResult.user.First_Name + userResult.user.Last_Name;
            projectResult            = projectController.Post(testProject);
            message = projectResult.status.Message;
            Assert.AreEqual(NEW_PROJECT_SUCCESS, message);
            testTask.Project_ID   = projectResult.project.Project_ID;
            testTask.Project_Name = projectResult.project.ProjectName;
            testTask.User_ID      = userResult.user.User_ID;
            testTask.Task_ID      = 0;
            tresult = taskc.Post(testTask);
            Assert.AreEqual(NEW_TASK_SUCCESS, tresult.status.Message);
            TaskModel tasks = taskc.Get().Where(x => x.TaskName == testTask.TaskName).FirstOrDefault();

            tresult = taskc.Post(tasks);
            Assert.AreEqual(UPDATE_TASK_SUCCESS, tresult.status.Message);
        }
        public static async Task CreateProjectAsync(string portfolio, ProjectUpdateModel project)
        {
            var dto = await TestBackendAPIClient.GetAsync <GetProjectDTO <ProjectEditViewModel> >($"api/Projects/{portfolio}/newproject");

            project.project_id = dto.Project.project_id;
            await TestBackendAPIClient.PostAsync <ProjectUpdateModel>("api/Projects", project);
        }
Exemple #11
0
        public IActionResult Edit(int id)
        {
            var model = new ProjectUpdateModel();

            model.Load(id);
            return(View(model));
        }
Exemple #12
0
 public IActionResult Edit(ProjectUpdateModel model)
 {
     if (ModelState.IsValid)
     {
         //model.EditProject();
     }
     return(View(model));
 }
        public static async Task CreateProjectAsync(string portfolio, string title)
        {
            var project = new ProjectUpdateModel()
            {
                project_name = title,
                phase        = "phase0"
            };

            await CreateProjectAsync(portfolio, project);
        }
Exemple #14
0
 public IActionResult Add(ProjectUpdateModel model)
 {
     if (ModelState.IsValid)
     {
         var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
         var path   = model.GetUploadedImage(model.Image.FileName);
         model.AddNewProject(path, userId);
     }
     return(View(model));
 }
        // OK
        public StatusCodes InsertProjectUpdate(ProjectUpdateModel source, ClaimsIdentity identity, int projectId)
        {
            try
            {
                //get the project
                var _project = uow.ProjectRepository.FindById(projectId);

                if (_project == null)
                {
                    return(StatusCodes.NOT_FOUND);
                }

                else
                {
                    //check if current user is the projectId's creator
                    //else return NOT ALLOWED
                    long requestorUserId;

                    try
                    {
                        requestorUserId = uow.UserRepository
                                          .SearchFor(e => e.Username == identity.Name)
                                          .Select(e => e.Id)
                                          .SingleOrDefault();
                    }
                    catch (InvalidOperationException ex)
                    {
                        throw new InvalidOperationException("User lookup for requestor Id for project update creation failed", ex);
                    }

                    if (_project.User.Id != requestorUserId)
                    {
                        return(StatusCodes.NOT_AUTHORIZED);
                    }

                    var _projectUpdate = new ProjectUpdate()
                    {
                        ProjectId       = projectId,
                        AttachmentSetId = source.AttachmentSetId,
                        Title           = source.Title,
                        Description     = source.Description,
                        WhenDateTime    = DateTime.Now,
                    };

                    uow.ProjectUpdateRepository.Insert(_projectUpdate, true);
                }

                return(StatusCodes.OK);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #16
0
 public void Update(ProjectUpdateModel model, string email)
 {
     try
     {
         _projectRepository.Update(model, email);
     }
     catch (Exception e)
     {
         throw new Exception(e.Message);
     }
 }
        public async Task MapPeopleAsync(ProjectUpdateModel update, Project project)
        {
            project.Lead = await EnsureForAsync(update.oddlead, project.Lead, project.Reservation.Portfolio);

            project.KeyContact1 = await EnsureForAsync(update.key_contact1, project.KeyContact1, project.Reservation.Portfolio);

            project.KeyContact2 = await EnsureForAsync(update.key_contact2, project.KeyContact2, project.Reservation.Portfolio);

            project.KeyContact3 = await EnsureForAsync(update.key_contact3, project.KeyContact3, project.Reservation.Portfolio);
            await MapTeamMembersAsync(update, project);
        }
Exemple #18
0
        public async Task <IActionResult> UpdateAsync(int id, [FromBody] ProjectUpdateModel mProject)
        {
            if (!ModelState.IsValid)
            {
                return(HttpBadRequest(ModelStateError()));
            }

            var projectId = await _projectRepository.UpdateByIdAsync(id, mProject);

            return(CreatedAtRoute("GetByProjectIdAsync", new { controller = "Projects", projectId = projectId }, mProject));
        }
Exemple #19
0
        public async Task<IResultModel> Update(ProjectUpdateModel model)
        {
            var entity = await _repository.GetAsync(model.Id);
            if (entity == null)
                return ResultModel.NotExists;

            _mapper.Map(model, entity);

            var result = await _repository.UpdateAsync(entity);

            return ResultModel.Result(result);
        }
Exemple #20
0
        public void Update(ProjectUpdateModel model, string email)
        {
            Project project = _context.Project.FirstOrDefault(p => p.Email == email && p.Id == model.Id);

            if (project == null)
            {
                throw new Exception("Decline!!!");
            }
            project.Description = model.Description;
            project.StartDate   = model.StartDate;
            project.EndDate     = model.EndDate;
            _context.Project.Update(project);
            _context.SaveChanges();
        }
Exemple #21
0
        public IActionResult Update([FromBody] ProjectUpdateModel model)
        {
            Request.Headers.TryGetValue("Authorization", out var token);
            string email = _accountManager.GetEmailByToken(token);

            try
            {
                _projectManager.Update(model, email);
                return(Ok("Success!!!"));
            }
            catch (Exception e)
            {
                return(Conflict(e.Message));
            }
        }
Exemple #22
0
        public IActionResult Patch(Guid id, [FromBody] ProjectUpdateModel model)
        {
            var query   = new GetProjectQuery(id);
            var project = _bus.PublishQuery(query);

            // validation
            if (project == null)
            {
                return(NotFound());
            }

            var command = new UpdateProjectCommand(id, model.Title, model.Description);

            _bus.PublishCommand(command);
            return(Ok());
        }
        public void ProjectAddEditTest(ProjectModel testProject)
        {
            string             message           = string.Empty;
            ProjectController  projectController = new ProjectController();
            ProjectUpdateModel projectResult     = new ProjectUpdateModel();
            UserUpdateModel    userResult        = AddTestUser();

            testProject.Manager_ID   = userResult.user.User_ID;
            testProject.Manager_Name = userResult.user.First_Name + userResult.user.Last_Name;
            projectResult            = projectController.Post(testProject);
            message = projectResult.status.Message;
            Assert.AreEqual(NEW_PROJECT_SUCCESS, message);
            testProject.Project_ID = projectResult.project.Project_ID;
            Assert.AreEqual(EXISTING_PROJECT_SUCCESS, projectController.Post(testProject).status.Message);
            Assert.IsNotNull(projectController.Get());
        }
        // OK
        public StatusCodes EditProjectUpdate(ProjectUpdateModel source, ClaimsIdentity identity, int updateId)
        {
            try
            {
                var _projectUpdate = uow.ProjectUpdateRepository.FindById(updateId);

                if (_projectUpdate == null)
                {
                    return(StatusCodes.NOT_FOUND);
                }
                else
                {
                    // update found. does the user that wishes to update it really is the project creator? check this here
                    long requestorUserId;

                    try
                    {
                        requestorUserId = uow.UserRepository
                                          .SearchFor(e => e.Username == identity.Name)
                                          .Select(e => e.Id)
                                          .SingleOrDefault();
                    }
                    catch (InvalidOperationException ex)
                    {
                        throw new InvalidOperationException("User lookup for requestor Id for project update creation failed", ex);
                    }

                    if (_projectUpdate.Project.UserId != requestorUserId)
                    {
                        return(StatusCodes.NOT_AUTHORIZED);
                    }

                    _projectUpdate.WhenDateTime = DateTime.Now;
                    _projectUpdate.Title        = source.Title;
                    _projectUpdate.Description  = source.Description;

                    uow.ProjectUpdateRepository.Update(_projectUpdate, true);
                }

                return(StatusCodes.OK);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #25
0
        public async Task UpdateProjectAsync(string projectId, ProjectUpdateModel projectUpdateModel)
        {
            var update = Builders <Project> .Update
                         .Set(databaseProject => databaseProject.Name, projectUpdateModel.Name)
                         .Set(databaseProject => databaseProject.Categorie, projectUpdateModel.Categorie)
                         .Set(databaseProject => databaseProject.Description, projectUpdateModel.Description)
                         .Set(databaseProject => databaseProject.Keywords, projectUpdateModel.Keywords)
                         .Set(databaseProject => databaseProject.Team, projectUpdateModel.Team)
                         .Set(databaseProject => databaseProject.LaunchDate, projectUpdateModel.LaunchDate)
                         .Set(databaseProject => databaseProject.IsLucratif, projectUpdateModel.IsLucratif)
                         .Set(databaseProject => databaseProject.IsDeclared, projectUpdateModel.IsDeclared);

            await _projects.UpdateOneAsync(databaseProject =>
                                           databaseProject.Id == projectId,
                                           update
                                           );
        }
Exemple #26
0
        public IHttpActionResult UpdateProject([FromUri] int projectId, [FromBody] ProjectUpdateModel prjUpdateModel)
        {
            if (Request.Headers.Authorization == null)
            {
                return(Content(HttpStatusCode.Unauthorized, "Invalid token"));
            }
            var token       = Request.Headers.Authorization.ToString();
            var tokenString = token.Substring("Basic ".Length).Trim();

            var project = _projectManager.GetProject(projectId);

            if (_authorizer.GetTokenInfo(tokenString) == null)
            {
                return(Content(HttpStatusCode.Unauthorized, "Invalid token"));
            }

            if (project.Leader != _authorizer.GetTokenInfo(tokenString).UserId)
            {
                return(Content(HttpStatusCode.Unauthorized, "Invalid token"));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (prjUpdateModel.PrjImage != null)
            {
                project.ProjectImage = prjUpdateModel.PrjImage;
            }
            if (prjUpdateModel.ProjectName != null)
            {
                project.ProjectName = prjUpdateModel.ProjectName;
            }
            if (prjUpdateModel.ProjectDescription != null)
            {
                project.ProjectDescription = prjUpdateModel.ProjectDescription;
            }
            if (prjUpdateModel.Tags != null)
            {
                _projectManager.AddTagsToProject(prjUpdateModel.Tags, project.ProjectId);
            }
            _projectManager.UpdateProject(project);
            return(Ok(new ProjectPresentation(project, _userManager.GetMembers(project))));
        }
Exemple #27
0
        public async Task <List <ProjectUpdateModel> > ImportProjectsAsync(MultipartFormDataStreamProvider files, PortfolioConfiguration config, ProjectEditOptionsModel options)
        {
            var projects          = new List <ProjectUpdateModel>();
            var optionsProperties = typeof(ProjectEditOptionsModel).GetProperties().Select(p => new _optionsPropertyMap(p, options)).ToList();;
            var projectProperties = typeof(ProjectUpdateModel).GetProperties().Select(p => new _projectPropertyMap(p, config)).ToList();

            foreach (var file in files.FileData)
            {
                using (var reader = new StreamReader(file.LocalFileName))
                    using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
                    {
                        if (await csv.ReadAsync())
                        {
                            if (csv.ReadHeader())
                            {
                                // Go through the header and get the properties used in the import
                                List <_projectPropertyMap> headerProperties = new List <_projectPropertyMap>();
                                foreach (var h in csv.HeaderRecord)
                                {
                                    var property = projectProperties.SingleOrDefault(p => h == p.Name);
                                    if (property != null)
                                    {
                                        property.optionsProperty = optionsProperties.SingleOrDefault(op => op.JsonPropertyName == property.JsonPropertyName);
                                        headerProperties.Add(property);
                                    }
                                }

                                // Read in the project records
                                while (await csv.ReadAsync())
                                {
                                    var project = new ProjectUpdateModel();
                                    foreach (var property in headerProperties)
                                    {
                                        MapProperty(csv, project, property);
                                    }
                                    projects.Add(project);
                                }
                            }
                        }
                    }
            }
            return(projects);
        }
        private async Task MapTeamMembersAsync(ProjectUpdateModel update, Project project)
        {
            if (project.People == null)
            {
                project.People = new List <Person>();
            }
            else
            {
                project.People.Clear();
            }

            if (update?.team != null && update.team.Length > 0)
            {
                foreach (var id in update.team)
                {
                    var person = await EnsurePersonForPrincipalName(id, project.Reservation.Portfolio);

                    if (person != null)
                    {
                        project.People.Add(person);
                    }
                }
            }
        }
 public async Task UpdateProjectAsync(ProjectUpdateModel update)
 {
     try
     {
         var context = ServiceContext.PortfolioContext;
         // Load and map the project
         await projectService.UpdateProject(update, permissionCallback : ServiceContext.AssertEditor);
     }
     catch (AutoMapperMappingException amex)
     {
         if (amex.InnerException is ProjectDataValidationException)
         {
             var resp = new HttpResponseMessage(HttpStatusCode.BadRequest)
             {
                 ReasonPhrase = amex.InnerException.Message
             };
             throw new HttpResponseException(resp);
         }
         else
         {
             throw amex;
         }
     }
 }
        public HttpResponseMessage InsertOrEditProjectUpdate(ProjectUpdateModel projectUpdate, int projectId, int updateId = 0)
        {
            if (!ModelState.IsValid || projectId <= 0 || updateId < 0)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }

            var identity = User.Identity as ClaimsIdentity;

            using (var s = new ProjectUpdateRepository())
            {
                var httpStatusCode = HttpStatusCode.Created;

                //insert project update
                if (updateId.Equals(0))
                {
                    ProjectUpdateRepository.StatusCodes hasInserted = s.InsertProjectUpdate(projectUpdate, identity, projectId);

                    switch (hasInserted)
                    {
                    //project creator not found
                    case ProjectUpdateRepository.StatusCodes.NOT_FOUND:
                        httpStatusCode = HttpStatusCode.NotFound;
                        break;

                    //not authorized to insert a project update to this project - you are not the project creator
                    case ProjectUpdateRepository.StatusCodes.NOT_AUTHORIZED:
                        httpStatusCode = HttpStatusCode.MethodNotAllowed;
                        break;

                    //project update inserted ok
                    case ProjectUpdateRepository.StatusCodes.OK:
                        httpStatusCode = HttpStatusCode.Created;
                        break;
                    }
                }

                //update existing project update
                else
                {
                    ProjectUpdateRepository.StatusCodes hasUpdated = s.EditProjectUpdate(projectUpdate, identity, updateId);

                    switch (hasUpdated)
                    {
                    //project update not found
                    case ProjectUpdateRepository.StatusCodes.NOT_FOUND:
                        httpStatusCode = HttpStatusCode.NotFound;
                        break;

                    //not authorized to update this project update
                    case ProjectUpdateRepository.StatusCodes.NOT_AUTHORIZED:
                        httpStatusCode = HttpStatusCode.MethodNotAllowed;
                        break;

                    //project update edited ok
                    case ProjectUpdateRepository.StatusCodes.OK:
                        httpStatusCode = HttpStatusCode.OK;
                        break;
                    }
                }

                return(Request.CreateResponse(httpStatusCode));
            }
        }