private void AddRectangle(Guid shapId, string data, AreaMapBulk bulk)
        {
            var rectangle = JsonSerializer.Deserialize <RectangleDto>(data, new JsonSerializerOptions
            {
                PropertyNameCaseInsensitive = true,
            });

            var boundsId = rectangle.BoundsId == Guid.Empty ? Guid.NewGuid() : rectangle.BoundsId;

            bulk.Rectangle.Add(
                new Rectangle()
            {
                Id       = shapId,
                BoundsId = boundsId,
                Bounds   = new RectangleBounds()
                {
                    RectangleId = shapId,
                    East        = rectangle.Bounds.East,
                    North       = rectangle.Bounds.North,
                    South       = rectangle.Bounds.South,
                    West        = rectangle.Bounds.West,
                    Id          = boundsId
                }
            });
        }
Пример #2
0
        public async Task <bool> Handle(CreateListOfAreasCommand request, CancellationToken cancellationToken)
        {
            var bulk = new AreaMapBulk();

            foreach (var area in request.Areas)
            {
                var    areaId = Guid.NewGuid();
                var    shapId = Guid.NewGuid();
                string data   = area.Shape.Data.ToString();

                AddArea(area, areaId, shapId, bulk);
                AddShape(area, areaId, shapId, bulk);

                switch (area.Shape.Type)
                {
                case ShapeType.Circle:
                {
                    AddCircle(shapId, data, bulk);
                }
                break;

                case ShapeType.Rectangle:
                {
                    AddRectangle(shapId, data, bulk);
                }
                break;

                case ShapeType.Polygon:
                {
                    AddPolygon(shapId, data, bulk);
                }
                break;
                }
            }

            try
            {
                _unitOfWork.BeginBulkTransaction();
                await _unitOfWork.AreaRepository.BulkInsertAsync(bulk.Area);

                await _unitOfWork.ShapeRepository.BulkInsertAsync(bulk.Shape);

                await _unitOfWork.PolygonRepository.BulkInsertIncludeGraphAsync(bulk.Polygon);

                await _unitOfWork.CircleRepository.BulkInsertIncludeGraphAsync(bulk.Circle);

                await _unitOfWork.RectangleRepository.BulkInsertIncludeGraphAsync(bulk.Rectangle);

                await _unitOfWork.CommitBulkAsync();
            }
            catch
            {
                await _unitOfWork.RollBulkbackAsync();

                return(false);
            }
            return(true);
        }
Пример #3
0
 private void AddShape(MainAreaDto area, Guid areaId, Guid shapId, AreaMapBulk bulk)
 {
     bulk.Shape.Add(new Shape()
     {
         Id     = shapId,
         TypeId = area.Shape.Type,
         AreaId = areaId
     });
 }
Пример #4
0
 private void AddArea(MainAreaDto area, Guid areaId, Guid shapId, AreaMapBulk bulk)
 {
     bulk.Area.Add(
         new Domain.Entities.Area()
     {
         Id      = areaId,
         Name    = area.Name,
         ShapeId = shapId
     });
 }
Пример #5
0
        private void AddPolygon(Guid shapId, string data, AreaMapBulk bulk)
        {
            var polygon      = JsonSerializer.Deserialize <PolygonDto>(data);
            var coordinateId = Guid.NewGuid();

            bulk.Polygon.Add(
                new Polygon
            {
                Id           = shapId,
                CoordinateId = coordinateId,
                Coordinate   = new PolygonCoordinate()
                {
                    CoordinatesAsJson = JsonSerializer.Serialize(polygon.Coordinate),
                    PolygonId         = shapId,
                    Id = coordinateId
                }
            });
        }
Пример #6
0
        private void AddCircle(Guid shapId, string data, AreaMapBulk bulk)
        {
            var circle       = JsonSerializer.Deserialize <CircleDto>(data);
            var coordinateId = Guid.NewGuid();

            bulk.Circle.Add(new Circle()
            {
                Id           = shapId,
                Radius       = circle.Radius,
                CoordinateId = coordinateId,
                Coordinate   = new CircleCoordinate()
                {
                    Latitude  = circle.Coordinate.Latitude,
                    Longitude = circle.Coordinate.Longitude,
                    Id        = Guid.NewGuid(),
                    CircleId  = shapId
                }
            });
        }
Пример #7
0
        private void AddRectangle(Guid shapId, string data, AreaMapBulk bulk)
        {
            var rectangle = JsonSerializer.Deserialize <RectangleDto>(data);
            var boundsId  = Guid.NewGuid();

            bulk.Rectangle.Add(
                new Rectangle()
            {
                Id       = shapId,
                BoundsId = boundsId,
                Bounds   = new RectangleBounds()
                {
                    RectangleId = shapId,
                    East        = rectangle.Bounds.East,
                    North       = rectangle.Bounds.North,
                    South       = rectangle.Bounds.South,
                    West        = rectangle.Bounds.West,
                    Id          = boundsId
                }
            });
        }
        private void AddPolygon(Guid shapId, string data, AreaMapBulk bulk)
        {
            var polygon = JsonSerializer.Deserialize <PolygonDto>(data, new JsonSerializerOptions
            {
                PropertyNameCaseInsensitive = true,
            });

            var coordinateId = polygon.CoordinateId == Guid.Empty ? Guid.NewGuid() : polygon.CoordinateId;

            bulk.Polygon.Add(
                new Polygon
            {
                Id           = shapId,
                CoordinateId = coordinateId,
                Coordinate   = new PolygonCoordinate()
                {
                    CoordinatesAsJson = JsonSerializer.Serialize(polygon.Coordinate),
                    PolygonId         = shapId,
                    Id = coordinateId
                }
            });
        }
        private void AddCircle(Guid shapId, string data, AreaMapBulk bulk)
        {
            var circle = JsonSerializer.Deserialize <CircleDto>(data, new JsonSerializerOptions
            {
                PropertyNameCaseInsensitive = true,
            });

            var coordinateId = circle.CoordinateId == Guid.Empty ? Guid.NewGuid() : circle.CoordinateId;

            bulk.Circle.Add(new Circle()
            {
                Id           = shapId,
                Radius       = circle.Radius,
                CoordinateId = coordinateId,
                Coordinate   = new CircleCoordinate()
                {
                    Latitude  = circle.Coordinate.Latitude,
                    Longitude = circle.Coordinate.Longitude,
                    Id        = coordinateId,
                    CircleId  = shapId
                }
            });
        }