public async Task <IHttpActionResult> AddAudit(Audit audit) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.Entry(audit).State = EntityState.Modified; try { db.Audits.Add(audit); await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!AuditExists(audit.Id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
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)); }