예제 #1
0
        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)));
        }
예제 #2
0
        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)));
        }
예제 #3
0
파일: Point.cs 프로젝트: Emettant/hutel
 public static Point FromDataContract(
     PointDataContract input, Guid id, Dictionary <string, Tag> tags)
 {
     return(FromFields(id, input.TagId, input.Date, input.Extra, tags));
 }