using LY.App.Common;
using NetTopologySuite.Algorithm;
using NetTopologySuite.Geometries;
using Newtonsoft.Json;
using Pipelines.Sockets.Unofficial.Arenas;
using SqlSugar;
namespace LY.App.Model
{
    /// 
    /// 多边形实体
    /// 
    public class MultPolygonEntity : BaseEntity
    {
        /// 
        /// 空间面数据
        /// 
        [SugarColumn(QuerySql = "st_astext(region)", ColumnDataType = "multipolygon", ColumnName = "region",
            UpdateSql = "ST_GeomFromText(@region)",
            InsertSql = "ST_GeomFromText(@region)", IsNullable = true, ColumnDescription = "空间面数据")]
        [JsonIgnore]
        public string? Region { get; set; } //MultiPolygon  Geometry
        [SugarColumn(IsIgnore = true)]
        public string RegionJson { get; set; }
        /// 
        /// 空间位置点Json数据
        /// 
        public void SetRegionJson()
        {
            RegionJson = "";
            if (!string.IsNullOrWhiteSpace(Region))
            {
                var geo = GeoJsonHelper.FromWKT(Region);
                if (geo != null)
                {
                    RegionJson = GeoJsonHelper.GetGeoJson(geo);
                }
            }
        }
        /// 
        /// 设置空间位置点
        /// 
        /// 
        public void SetRegion(MultiPolygon region)
        {
            if (region != null)
            {
                Region = region.AsText();
            }
        }
        /// 
        /// 设置空间位置点
        /// 
        /// 
        public void SetRegionJson(string region)
        {
            RegionJson = "";
            if (!string.IsNullOrWhiteSpace(region))
            {
                var geo = GeoJsonHelper.FromWKT(region);
                if (geo != null)
                {
                    RegionJson = GeoJsonHelper.GetGeoJson(geo);
                }
            }
        }
    }
}