public async Task <IHttpActionResult> UpdateProject(ProjectRequestViewModel project) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Project pro = await db.Projects.FindAsync(project.Id); if (pro == null) { return(NotFound()); } if (ProjectHelper.HasUpdateAccess(pro) == false) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "No Access")); } db.Entry(pro).State = EntityState.Modified; pro.ProjectName = project.Name; pro.Description = project.Description; pro.Tag = project.Tag; pro.Status = project.Status; pro.LastModifiedById = db.ShqUsers.Where(u => u.IdentityUser.UserName == HttpContext.Current.User.Identity.Name).FirstOrDefault().IdentityUserId; pro.LastModfiedTime = DateTime.Now; pro.ProjectsAccess.RemoveAll(item => item.ProjectId == pro.Id); if (project.UsersPrivileges.Count > 0) { foreach (var item in project.UsersPrivileges) { var newAccess = new ProjectShqUsers() { ProjectId = project.Id, ShqUserId = db.ShqUsers.Where(u => u.EmailAddress == item.EmailAddress).FirstOrDefault().IdentityUserId, Privilege = item.Privilege, CreatedById = pro.CreatedById, LastModifiedById = pro.CreatedById }; newAccess.LastModifiedById = newAccess.CreatedById; pro.ProjectsAccess.Add(newAccess); } } await db.SaveChangesAsync(); ProjectViewModel result = new ProjectViewModel(pro, db); result.Privilege = ShqConstants.AllowProjectUpdate; (new AuditsController()).AddAuditEntry("api/Projects/Update", JsonConvert.SerializeObject(result)); return(Ok(result)); }
public IActionResult GetProjectList(ProjectRequestViewModel query, TokenModel tokenModel) { var searchModel = Mapper.Map <SearchProjectDto>(query); var list = _projectService.GetList(searchModel); return(Ok(new PageResponseViewModel() { Data = list.Items, Page = new PageViewModel { PageSize = query.PageSize, Total = list.TotalNum, PageIndex = query.PageIndex } })); }
public async Task <IHttpActionResult> AddProject(ProjectRequestViewModel projectView) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Project pro = await db.Projects.FindAsync(projectView.Id); if (pro != null) { return(Ok("已存在")); } pro = await db.Projects.FirstOrDefaultAsync(item => item.ProjectName == projectView.Name); if (pro != null) { return(Ok("已存在")); } Project project = projectView.ToProject(); project.CreatedById = db.ShqUsers.Where(u => u.IdentityUser.UserName == HttpContext.Current.User.Identity.Name).FirstOrDefault().IdentityUserId; project.LastModifiedById = project.CreatedById; db.Projects.Add(project); if (project.Type == "FTAProject") { db.FTAProjects.Add(new FTAProject() { Id = Guid.NewGuid(), ProjectId = projectView.Id, CreatedById = project.CreatedById, LastModifiedById = project.LastModifiedById }); } if (project.Type == "FMEAProject") { db.FMEAProjects.Add(new FMEAProject() { Id = Guid.NewGuid(), ProjectId = projectView.Id, CreatedById = project.CreatedById, LastModifiedById = project.LastModifiedById }); } if (project.Type == "WorkProject") { var wp = db.WorkProjects.Add(new WorkProject() { Id = Guid.NewGuid(), ProjectId = projectView.Id, Level = projectView.Level, CreatedById = project.CreatedById, LastModifiedById = project.LastModifiedById, WorkProjectTemplateId = ShqConstants.DefaultWorkProjectTemplateId }); db.SaveChanges(); try { ProjectFilesController pfc = new ProjectFilesController(); await pfc.SyncProjectFiles(wp.ProjectId); } catch (Exception) { } } int i = 0; if (projectView.UsersPrivileges.Count > 0) { i++; foreach (var item in projectView.UsersPrivileges) { var newAccess = new ProjectShqUsers() { ProjectId = project.Id, ShqUserId = db.ShqUsers.Where(u => u.EmailAddress == item.EmailAddress).FirstOrDefault().IdentityUserId, Privilege = item.Privilege, CreatedById = project.CreatedById, LastModifiedById = project.CreatedById }; newAccess.LastModifiedById = newAccess.CreatedById; db.ProjectShqUsers.Add(newAccess); } } await db.SaveChangesAsync(); ProjectViewModel result = new ProjectViewModel(project, db); result.Description = i.ToString(); result.Privilege = ShqConstants.AllowProjectUpdate; (new AuditsController()).AddAuditEntry("api/Projects/Add", JsonConvert.SerializeObject(result)); return(Ok(result)); }