public async Task <IActionResult> PutOnePoint(Guid id, [FromBody] PointDataContract input) { var points = _memoryCache.Get <Dictionary <Guid, Point> >(_pointsKey); var tags = _memoryCache.Get <Dictionary <string, Tag> >(_tagsKey); if (!points.ContainsKey(id)) { return(new BadRequestObjectResult( new ArgumentOutOfRangeException($"No point with id {id}").ToString())); } Point point; try { point = Point.FromDataContract(input, id, tags); } catch (PointValidationException ex) { return(new BadRequestObjectResult(ex.ToString())); } if (string.Compare(point.TagId, points[id].TagId, true) != 0) { return(new BadRequestObjectResult( new ArgumentOutOfRangeException( $"Tag id differs from the known one. Expected: {points[id].TagId}, got: {point.TagId}").ToString())); } points[id] = point; await WriteStorage(points, tags); return(Json(point.ToDataContract(tags))); }
public async Task <IActionResult> PostOnePoint([FromBody] PointDataContract input) { var points = _memoryCache.Get <Dictionary <Guid, Point> >(_pointsKey); var tags = _memoryCache.Get <Dictionary <string, Tag> >(_tagsKey); var id = Guid.NewGuid(); Point point; try { point = Point.FromDataContract(input, id, tags); } catch (PointValidationException ex) { return(new BadRequestObjectResult(ex.ToString())); } points[id] = point; await WriteStorage(points, tags); return(Json(point.ToDataContract(tags))); }
public static Point FromDataContract( PointDataContract input, Guid id, Dictionary <string, Tag> tags) { return(FromFields(id, input.TagId, input.Date, input.Extra, tags)); }