public async Task <IActionResult> Delete(int id) { var original = await JobShopCollectionDbContext.JobSet .FirstOrDefaultAsync(j => j.Id == id); if (original is null) { return(NotFound()); } if (original.IsLocked) { return(new StatusCodeResult((int)StatusCodes.Status403Forbidden)); } // the "If-Match" Header is mandatory if (!HttpContext.Request.Headers.Keys.Contains("If-Match")) { return(new StatusCodeResult(StatusCodes.Status412PreconditionFailed)); } string?originalETag = original.GetETag(); if (originalETag != null && HttpContext.Request.Headers["If-Match"].ToString() != originalETag) { return(new StatusCodeResult(StatusCodes.Status412PreconditionFailed)); } JobShopCollectionDbContext.Entry(original).State = EntityState.Deleted; await JobShopCollectionDbContext.SaveChangesAsync(); return(Ok()); }
public async Task <ActionResult <JobSetDto> > Put(int id, [FromBody] UpdateJobSetDto updateJobSetDto) { if (!id.Equals(updateJobSetDto.Id)) { return(BadRequest(new { Message = "The Id in route does not equal to the Id in Body." })); } var newJobSet = Mapper.Map <JobSet>(updateJobSetDto); var current = await JobShopCollectionDbContext.JobSet .FirstOrDefaultAsync(j => j.Id == id); if (current is null) { return(NotFound()); } if (current.IsLocked) { return(new StatusCodeResult((int)StatusCodes.Status403Forbidden)); } // the "If-Match" Header is mandatory if (!HttpContext.Request.Headers.Keys.Contains("If-Match")) { return(new StatusCodeResult(StatusCodes.Status412PreconditionFailed)); } string?currentETag = current.GetETag(); if (currentETag != null && HttpContext.Request.Headers["If-Match"].ToString() != currentETag) { return(new StatusCodeResult(StatusCodes.Status412PreconditionFailed)); } JobShopCollectionDbContext.Entry(current).CurrentValues.SetValues(newJobSet); await JobShopCollectionDbContext.SaveChangesAsync(); JobSetDto jobSetDto = Mapper.Map <JobSetDto>(current); string? eTag = jobSetDto.GetETag(); if (eTag != null) { HttpContext.Response.Headers.Add("ETag", new[] { eTag }); } return(Ok(jobSetDto)); }
public async Task <ActionResult <JobSetDto> > Post([FromBody] NewJobSetDto newJobSetDto) { //throw new System.Exception(); var jobSet = Mapper.Map <JobSet>(newJobSetDto); JobShopCollectionDbContext.JobSet.Add(jobSet); await JobShopCollectionDbContext.SaveChangesAsync(); var result = Mapper.Map <JobSetDto>(jobSet); string?eTag = jobSet.GetETag(); if (eTag != null) { HttpContext.Response.Headers.Add("ETag", new[] { eTag }); } return(CreatedAtAction("Get", new { id = jobSet.Id }, result)); }